mirror of
https://github.com/home-assistant/android
synced 2024-09-19 16:11:37 +00:00
Only show sensors that are available for the device (#877)
* Only show sensors that are available for the device * Review comments * Filter before forEach to remove unneeded condition
This commit is contained in:
parent
c221e85fa4
commit
8f017f3b90
|
@ -2,6 +2,7 @@ package io.homeassistant.companion.android.sensors
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Context.SENSOR_SERVICE
|
import android.content.Context.SENSOR_SERVICE
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.hardware.Sensor
|
import android.hardware.Sensor
|
||||||
import android.hardware.SensorEvent
|
import android.hardware.SensorEvent
|
||||||
import android.hardware.SensorEventListener
|
import android.hardware.SensorEventListener
|
||||||
|
@ -38,6 +39,11 @@ class LightSensorManager : SensorManager, SensorEventListener {
|
||||||
return emptyArray()
|
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 latestContext: Context
|
||||||
private lateinit var mySensorManager: android.hardware.SensorManager
|
private lateinit var mySensorManager: android.hardware.SensorManager
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package io.homeassistant.companion.android.sensors
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Context.SENSOR_SERVICE
|
import android.content.Context.SENSOR_SERVICE
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.hardware.Sensor
|
import android.hardware.Sensor
|
||||||
import android.hardware.SensorEvent
|
import android.hardware.SensorEvent
|
||||||
import android.hardware.SensorEventListener
|
import android.hardware.SensorEventListener
|
||||||
|
@ -46,6 +47,11 @@ class PressureSensorManager : SensorManager, SensorEventListener {
|
||||||
updatePressureSensor()
|
updatePressureSensor()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun hasSensor(context: Context): Boolean {
|
||||||
|
val packageManager: PackageManager = context.packageManager
|
||||||
|
return packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER)
|
||||||
|
}
|
||||||
|
|
||||||
private fun updatePressureSensor() {
|
private fun updatePressureSensor() {
|
||||||
if (!isEnabled(latestContext, pressureSensor.id))
|
if (!isEnabled(latestContext, pressureSensor.id))
|
||||||
return
|
return
|
||||||
|
|
|
@ -2,6 +2,7 @@ package io.homeassistant.companion.android.sensors
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Context.SENSOR_SERVICE
|
import android.content.Context.SENSOR_SERVICE
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.hardware.Sensor
|
import android.hardware.Sensor
|
||||||
import android.hardware.SensorEvent
|
import android.hardware.SensorEvent
|
||||||
import android.hardware.SensorEventListener
|
import android.hardware.SensorEventListener
|
||||||
|
@ -40,6 +41,11 @@ class ProximitySensorManager : SensorManager, SensorEventListener {
|
||||||
return emptyArray()
|
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) {
|
override fun requestSensorUpdate(context: Context) {
|
||||||
latestContext = context
|
latestContext = context
|
||||||
updateProximitySensor()
|
updateProximitySensor()
|
||||||
|
|
|
@ -54,6 +54,10 @@ interface SensorManager {
|
||||||
|
|
||||||
fun requestSensorUpdate(context: Context)
|
fun requestSensorUpdate(context: Context)
|
||||||
|
|
||||||
|
fun hasSensor(context: Context): Boolean {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
fun onSensorUpdated(
|
fun onSensorUpdated(
|
||||||
context: Context,
|
context: Context,
|
||||||
basicSensor: BasicSensor,
|
basicSensor: BasicSensor,
|
||||||
|
|
|
@ -56,9 +56,10 @@ class SensorsSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
setPreferencesFromResource(R.xml.sensors, rootKey)
|
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)
|
val prefCategory = PreferenceCategory(preferenceScreen.context)
|
||||||
prefCategory.title = getString(manager.name)
|
prefCategory.title = getString(manager.name)
|
||||||
|
|
||||||
preferenceScreen.addPreference(prefCategory)
|
preferenceScreen.addPreference(prefCategory)
|
||||||
manager.availableSensors.sortedBy { it.name }.forEach { basicSensor ->
|
manager.availableSensors.sortedBy { it.name }.forEach { basicSensor ->
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package io.homeassistant.companion.android.sensors
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Context.SENSOR_SERVICE
|
import android.content.Context.SENSOR_SERVICE
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.hardware.Sensor
|
import android.hardware.Sensor
|
||||||
import android.hardware.SensorEvent
|
import android.hardware.SensorEvent
|
||||||
import android.hardware.SensorEventListener
|
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(
|
override fun requestSensorUpdate(
|
||||||
context: Context
|
context: Context
|
||||||
) {
|
) {
|
||||||
|
|
Loading…
Reference in a new issue