Let heart rate sensor get up to 10 events in case first is invalid (#3125)

* Let heart rate sensor get up to 5 events in case first is invalid

* Increase to 10 events to try and get a reading
This commit is contained in:
Daniel Shokouhi 2022-12-16 06:58:28 -08:00 committed by GitHub
parent e7c18b870c
commit 49849d4587
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -28,6 +28,7 @@ class HeartRateSensorManager : SensorManager, SensorEventListener {
SENSOR_STATUS_UNRELIABLE,
SENSOR_STATUS_NO_CONTACT
)
private var eventCount = 0
private val heartRate = SensorManager.BasicSensor(
"heart_rate",
"sensor",
@ -101,14 +102,14 @@ class HeartRateSensorManager : SensorManager, SensorEventListener {
}
override fun onSensorChanged(event: SensorEvent?) {
eventCount++
val validReading = event?.sensor?.type == Sensor.TYPE_HEART_RATE && event.accuracy !in skipAccuracy &&
event.values[0].roundToInt() >= 0
if (event?.sensor?.type == Sensor.TYPE_HEART_RATE) {
Log.d(TAG, "HR event received with accuracy: ${getAccuracy(event.accuracy)} and value: ${event.values[0]}")
Log.d(TAG, "HR event received with accuracy: ${getAccuracy(event.accuracy)} and value: ${event.values[0]} with event count: $eventCount")
} else
Log.d(TAG, "No HR event received")
if (
event?.sensor?.type == Sensor.TYPE_HEART_RATE && event.accuracy !in skipAccuracy &&
event.values[0].roundToInt() >= 0
) {
if (event != null && validReading) {
onSensorUpdated(
latestContext,
heartRate,
@ -119,9 +120,12 @@ class HeartRateSensorManager : SensorManager, SensorEventListener {
)
)
}
mySensorManager.unregisterListener(this)
Log.d(TAG, "Heart Rate sensor listener unregistered")
isListenerRegistered = false
if (validReading || eventCount >= 10) {
mySensorManager.unregisterListener(this)
Log.d(TAG, "Heart Rate sensor listener unregistered")
isListenerRegistered = false
eventCount = 0
}
}
private fun getAccuracy(accuracy: Int): String {