mirror of
https://github.com/home-assistant/android
synced 2024-09-18 23:52:51 +00:00
Only register once for hardware sensors (#873)
* Only register the listener if it is not registered already * Add more logging, move variable to companion object
This commit is contained in:
parent
833534f920
commit
bd2cfb5aa4
|
@ -6,6 +6,7 @@ import android.hardware.Sensor
|
|||
import android.hardware.SensorEvent
|
||||
import android.hardware.SensorEventListener
|
||||
import android.hardware.SensorManager.SENSOR_DELAY_NORMAL
|
||||
import android.util.Log
|
||||
import io.homeassistant.companion.android.R
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
@ -13,6 +14,7 @@ class LightSensorManager : SensorManager, SensorEventListener {
|
|||
companion object {
|
||||
|
||||
private const val TAG = "LightSensor"
|
||||
private var isListenerRegistered = false
|
||||
private val lightSensor = SensorManager.BasicSensor(
|
||||
"light_sensor",
|
||||
"sensor",
|
||||
|
@ -50,11 +52,13 @@ class LightSensorManager : SensorManager, SensorEventListener {
|
|||
mySensorManager = latestContext.getSystemService(SENSOR_SERVICE) as android.hardware.SensorManager
|
||||
|
||||
val lightSensors = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)
|
||||
if (lightSensors != null) {
|
||||
if (lightSensors != null && !isListenerRegistered) {
|
||||
mySensorManager.registerListener(
|
||||
this,
|
||||
lightSensors,
|
||||
SENSOR_DELAY_NORMAL)
|
||||
Log.d(TAG, "Light sensor listener registered")
|
||||
isListenerRegistered = true
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,5 +79,7 @@ class LightSensorManager : SensorManager, SensorEventListener {
|
|||
}
|
||||
}
|
||||
mySensorManager.unregisterListener(this)
|
||||
Log.d(TAG, "Light sensor listener unregistered")
|
||||
isListenerRegistered = false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.hardware.Sensor
|
|||
import android.hardware.SensorEvent
|
||||
import android.hardware.SensorEventListener
|
||||
import android.hardware.SensorManager.SENSOR_DELAY_NORMAL
|
||||
import android.util.Log
|
||||
import io.homeassistant.companion.android.R
|
||||
import java.math.RoundingMode
|
||||
|
||||
|
@ -13,6 +14,7 @@ class PressureSensorManager : SensorManager, SensorEventListener {
|
|||
companion object {
|
||||
|
||||
private const val TAG = "PressureSensor"
|
||||
private var isListenerRegistered = false
|
||||
private val pressureSensor = SensorManager.BasicSensor(
|
||||
"pressure_sensor",
|
||||
"sensor",
|
||||
|
@ -38,21 +40,23 @@ class PressureSensorManager : SensorManager, SensorEventListener {
|
|||
|
||||
override fun requestSensorUpdate(context: Context) {
|
||||
latestContext = context
|
||||
updatePressureSensor(context)
|
||||
updatePressureSensor()
|
||||
}
|
||||
|
||||
private fun updatePressureSensor(context: Context) {
|
||||
private fun updatePressureSensor() {
|
||||
if (!isEnabled(latestContext, pressureSensor.id))
|
||||
return
|
||||
|
||||
mySensorManager = latestContext.getSystemService(SENSOR_SERVICE) as android.hardware.SensorManager
|
||||
|
||||
val pressureSensors = mySensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE)
|
||||
if (pressureSensors != null) {
|
||||
if (pressureSensors != null && !isListenerRegistered) {
|
||||
mySensorManager.registerListener(
|
||||
this,
|
||||
pressureSensors,
|
||||
SENSOR_DELAY_NORMAL)
|
||||
Log.d(TAG, "Pressure sensor listener registered")
|
||||
isListenerRegistered = true
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,5 +77,7 @@ class PressureSensorManager : SensorManager, SensorEventListener {
|
|||
}
|
||||
}
|
||||
mySensorManager.unregisterListener(this)
|
||||
Log.d(TAG, "Pressure sensor listener unregistered")
|
||||
isListenerRegistered = false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.hardware.Sensor
|
|||
import android.hardware.SensorEvent
|
||||
import android.hardware.SensorEventListener
|
||||
import android.hardware.SensorManager.SENSOR_DELAY_NORMAL
|
||||
import android.util.Log
|
||||
import io.homeassistant.companion.android.R
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
@ -13,6 +14,7 @@ class ProximitySensorManager : SensorManager, SensorEventListener {
|
|||
companion object {
|
||||
|
||||
private const val TAG = "ProximitySensor"
|
||||
private var isListenerRegistered = false
|
||||
private val proximitySensor = SensorManager.BasicSensor(
|
||||
"proximity_sensor",
|
||||
"sensor",
|
||||
|
@ -37,22 +39,24 @@ class ProximitySensorManager : SensorManager, SensorEventListener {
|
|||
|
||||
override fun requestSensorUpdate(context: Context) {
|
||||
latestContext = context
|
||||
updateProximitySensor(context)
|
||||
updateProximitySensor()
|
||||
}
|
||||
|
||||
private fun updateProximitySensor(context: Context) {
|
||||
private fun updateProximitySensor() {
|
||||
if (!isEnabled(latestContext, proximitySensor.id))
|
||||
return
|
||||
|
||||
mySensorManager = latestContext.getSystemService(SENSOR_SERVICE) as android.hardware.SensorManager
|
||||
|
||||
val proximitySensors = mySensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)
|
||||
if (proximitySensors != null) {
|
||||
if (proximitySensors != null && !isListenerRegistered) {
|
||||
mySensorManager.registerListener(
|
||||
this,
|
||||
proximitySensors,
|
||||
SENSOR_DELAY_NORMAL
|
||||
)
|
||||
Log.d(TAG, "Proximity sensor listener registered")
|
||||
isListenerRegistered = true
|
||||
maxRange = proximitySensors.maximumRange.roundToInt()
|
||||
}
|
||||
}
|
||||
|
@ -82,5 +86,7 @@ class ProximitySensorManager : SensorManager, SensorEventListener {
|
|||
}
|
||||
}
|
||||
mySensorManager.unregisterListener(this)
|
||||
Log.d(TAG, "Proximity sensor listener unregistered")
|
||||
isListenerRegistered = false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.hardware.SensorEvent
|
|||
import android.hardware.SensorEventListener
|
||||
import android.hardware.SensorManager.SENSOR_DELAY_NORMAL
|
||||
import android.os.Build
|
||||
import android.util.Log
|
||||
import io.homeassistant.companion.android.R
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
@ -15,6 +16,7 @@ class StepsSensorManager : SensorManager, SensorEventListener {
|
|||
companion object {
|
||||
|
||||
private const val TAG = "StepsSensor"
|
||||
private var isListenerRegistered = false
|
||||
private val stepsSensor = SensorManager.BasicSensor(
|
||||
"steps_sensor",
|
||||
"sensor",
|
||||
|
@ -59,12 +61,14 @@ class StepsSensorManager : SensorManager, SensorEventListener {
|
|||
latestContext.getSystemService(SENSOR_SERVICE) as android.hardware.SensorManager
|
||||
|
||||
val stepsSensors = mySensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
|
||||
if (stepsSensors != null) {
|
||||
if (stepsSensors != null && !isListenerRegistered) {
|
||||
mySensorManager.registerListener(
|
||||
this,
|
||||
stepsSensors,
|
||||
SENSOR_DELAY_NORMAL
|
||||
)
|
||||
Log.d(TAG, "Steps sensor listener registered")
|
||||
isListenerRegistered = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -86,5 +90,7 @@ class StepsSensorManager : SensorManager, SensorEventListener {
|
|||
}
|
||||
}
|
||||
mySensorManager.unregisterListener(this)
|
||||
Log.d(TAG, "Steps sensor listener unregistered")
|
||||
isListenerRegistered = false
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue