diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/LightSensorManager.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/LightSensorManager.kt index 2d97a20c7..004191683 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/LightSensorManager.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/LightSensorManager.kt @@ -2,6 +2,7 @@ package io.homeassistant.companion.android.sensors import android.content.Context import android.content.Context.SENSOR_SERVICE +import android.content.pm.PackageManager import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -38,6 +39,11 @@ class LightSensorManager : SensorManager, SensorEventListener { return emptyArray() } + override fun hasSensor(context: Context): Boolean { + val packageManager: PackageManager = context.packageManager + return packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_LIGHT) + } + private lateinit var latestContext: Context private lateinit var mySensorManager: android.hardware.SensorManager diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/PressureSensorManager.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/PressureSensorManager.kt index 2f5e61185..5c5f0b054 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/PressureSensorManager.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/PressureSensorManager.kt @@ -2,6 +2,7 @@ package io.homeassistant.companion.android.sensors import android.content.Context import android.content.Context.SENSOR_SERVICE +import android.content.pm.PackageManager import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -46,6 +47,11 @@ class PressureSensorManager : SensorManager, SensorEventListener { updatePressureSensor() } + override fun hasSensor(context: Context): Boolean { + val packageManager: PackageManager = context.packageManager + return packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER) + } + private fun updatePressureSensor() { if (!isEnabled(latestContext, pressureSensor.id)) return diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/ProximitySensorManager.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/ProximitySensorManager.kt index 164725291..4506abd0b 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/ProximitySensorManager.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/ProximitySensorManager.kt @@ -2,6 +2,7 @@ package io.homeassistant.companion.android.sensors import android.content.Context import android.content.Context.SENSOR_SERVICE +import android.content.pm.PackageManager import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -40,6 +41,11 @@ class ProximitySensorManager : SensorManager, SensorEventListener { return emptyArray() } + override fun hasSensor(context: Context): Boolean { + val packageManager: PackageManager = context.packageManager + return packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_PROXIMITY) + } + override fun requestSensorUpdate(context: Context) { latestContext = context updateProximitySensor() diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorManager.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorManager.kt index a66be30aa..623555b0d 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorManager.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorManager.kt @@ -54,6 +54,10 @@ interface SensorManager { fun requestSensorUpdate(context: Context) + fun hasSensor(context: Context): Boolean { + return true + } + fun onSensorUpdated( context: Context, basicSensor: BasicSensor, diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt index 117477d47..ffc11825e 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt @@ -56,9 +56,10 @@ class SensorsSettingsFragment : PreferenceFragmentCompat() { setPreferencesFromResource(R.xml.sensors, rootKey) - SensorReceiver.MANAGERS.sortedBy { it.name }.forEach { manager -> + SensorReceiver.MANAGERS.sortedBy { it.name }.filter { it.hasSensor(requireContext()) }.forEach { manager -> val prefCategory = PreferenceCategory(preferenceScreen.context) prefCategory.title = getString(manager.name) + preferenceScreen.addPreference(prefCategory) manager.availableSensors.sortedBy { it.name }.forEach { basicSensor -> diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/StepsSensorManager.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/StepsSensorManager.kt index 24a86df5d..c5c605d20 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/StepsSensorManager.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/StepsSensorManager.kt @@ -3,6 +3,7 @@ package io.homeassistant.companion.android.sensors import android.Manifest import android.content.Context import android.content.Context.SENSOR_SERVICE +import android.content.pm.PackageManager import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -48,6 +49,11 @@ class StepsSensorManager : SensorManager, SensorEventListener { } } + override fun hasSensor(context: Context): Boolean { + val packageManager: PackageManager = context.packageManager + return packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_STEP_COUNTER) + } + override fun requestSensorUpdate( context: Context ) {