diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 35a854e..7151dc7 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index 0c03cdc..cec079c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ android { defaultConfig { applicationId "de.fhws.indoor.sensorreadout" minSdkVersion 21 - targetSdkVersion 23 + targetSdkVersion 28 versionCode 1 versionName "1.0" multiDexEnabled true diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java b/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java index f3a2941..be4d8cb 100644 --- a/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java @@ -490,7 +490,7 @@ public class MainActivity extends AppCompatActivity { } if(activeSensors.contains("WIFI")) { boolean useWifiFtm = preferences.getBoolean("prefUseWifiFTM", false); - if(useWifiFtm && WiFiRTT.isSupported()) { + if(useWifiFtm && WiFiRTT.isSupported(this)) { Log.i("Sensors", "Using Wifi[FTM]"); // log wifi RTT using sensor number 17 final WiFiRTT wifirtt = new WiFiRTT(this); diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/SettingsFragment.java b/app/src/main/java/de/fhws/indoor/sensorreadout/SettingsFragment.java index a9243f2..b509d62 100644 --- a/app/src/main/java/de/fhws/indoor/sensorreadout/SettingsFragment.java +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/SettingsFragment.java @@ -11,7 +11,7 @@ public class SettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); - if(!WiFiRTT.isSupported()) { + if(!WiFiRTT.isSupported(getContext())) { SwitchPreferenceCompat useFtmPreference = (SwitchPreferenceCompat)findPreference("prefUseWifiFTM"); useFtmPreference.setEnabled(false); } diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/WiFiRTT.java b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/WiFiRTT.java index 3cfdd58..baa7f1b 100644 --- a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/WiFiRTT.java +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/WiFiRTT.java @@ -12,6 +12,8 @@ import android.net.wifi.rtt.RangingRequest; import android.net.wifi.rtt.RangingResult; import android.net.wifi.rtt.RangingResultCallback; import android.net.wifi.rtt.WifiRttManager; + +import androidx.annotation.RequiresApi; import androidx.core.app.ActivityCompat; import android.os.Build; @@ -163,10 +165,15 @@ public class WiFiRTT extends mySensor { } }; - public static final boolean isSupported() { - return (Build.VERSION.SDK_INT >= 28); - - //TODO markusb Implement a proper test for whether FTM is supported - // If this needs a context / activity, no problem + @RequiresApi(api = Build.VERSION_CODES.P) + public static final boolean isSupported(Context context) { + if(!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)) { + return false; + } + WifiRttManager rttManager = (WifiRttManager) context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE); + if(rttManager == null) { + return false; + } + return rttManager.isAvailable(); } }