Implement proper WifiRTT availability checking

This commit is contained in:
Markus Ebner
2020-04-08 15:01:26 +02:00
parent 684eb9d969
commit 7e21bc3d47
5 changed files with 15 additions and 8 deletions

Binary file not shown.

View File

@@ -7,7 +7,7 @@ android {
defaultConfig { defaultConfig {
applicationId "de.fhws.indoor.sensorreadout" applicationId "de.fhws.indoor.sensorreadout"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 23 targetSdkVersion 28
versionCode 1 versionCode 1
versionName "1.0" versionName "1.0"
multiDexEnabled true multiDexEnabled true

View File

@@ -490,7 +490,7 @@ public class MainActivity extends AppCompatActivity {
} }
if(activeSensors.contains("WIFI")) { if(activeSensors.contains("WIFI")) {
boolean useWifiFtm = preferences.getBoolean("prefUseWifiFTM", false); boolean useWifiFtm = preferences.getBoolean("prefUseWifiFTM", false);
if(useWifiFtm && WiFiRTT.isSupported()) { if(useWifiFtm && WiFiRTT.isSupported(this)) {
Log.i("Sensors", "Using Wifi[FTM]"); Log.i("Sensors", "Using Wifi[FTM]");
// log wifi RTT using sensor number 17 // log wifi RTT using sensor number 17
final WiFiRTT wifirtt = new WiFiRTT(this); final WiFiRTT wifirtt = new WiFiRTT(this);

View File

@@ -11,7 +11,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
@Override @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey); setPreferencesFromResource(R.xml.preferences, rootKey);
if(!WiFiRTT.isSupported()) { if(!WiFiRTT.isSupported(getContext())) {
SwitchPreferenceCompat useFtmPreference = (SwitchPreferenceCompat)findPreference("prefUseWifiFTM"); SwitchPreferenceCompat useFtmPreference = (SwitchPreferenceCompat)findPreference("prefUseWifiFTM");
useFtmPreference.setEnabled(false); useFtmPreference.setEnabled(false);
} }

View File

@@ -12,6 +12,8 @@ import android.net.wifi.rtt.RangingRequest;
import android.net.wifi.rtt.RangingResult; import android.net.wifi.rtt.RangingResult;
import android.net.wifi.rtt.RangingResultCallback; import android.net.wifi.rtt.RangingResultCallback;
import android.net.wifi.rtt.WifiRttManager; import android.net.wifi.rtt.WifiRttManager;
import androidx.annotation.RequiresApi;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import android.os.Build; import android.os.Build;
@@ -163,10 +165,15 @@ public class WiFiRTT extends mySensor {
} }
}; };
public static final boolean isSupported() { @RequiresApi(api = Build.VERSION_CODES.P)
return (Build.VERSION.SDK_INT >= 28); public static final boolean isSupported(Context context) {
if(!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)) {
//TODO markusb Implement a proper test for whether FTM is supported return false;
// If this needs a context / activity, no problem }
WifiRttManager rttManager = (WifiRttManager) context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
if(rttManager == null) {
return false;
}
return rttManager.isAvailable();
} }
} }