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