返回

WearOS 心率显示屏不更新?这里有解决方案

Android

WearOS 心率读取,解决显示屏不更新的问题

问题

在 WearOS 应用程序中,心率被正确读取,但在显示屏上却始终显示为“心率:0”。日志中记录了实际心率数据,但却没有反映在 UI 中。

解决方案

1. 更新显示屏

确保在读取心率后更新应用程序 UI 以显示最新值。

2. 代码优化

优化代码以提高效率和避免冗余。以下是一些优化建议:

  • 将心率监听器声明为全局变量。
  • 使用 mutableStateOf() 变量存储当前心率值。
  • 将日志语句移动到更合适的位置。

优化后的代码示例

class MainActivity : ComponentActivity() {

    private lateinit var heartRateListener: SensorEventListener

    private var heartRate by mutableStateOf(0)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        heartRateListener = object : SensorEventListener {
            override fun onSensorChanged(event: SensorEvent?) {
                heartRate = event!!.values[0].toInt()
            }

            override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
                // Not needed for heart rate sensor
            }
        }

        startHeartRateUpdates()
    }

    override fun onDestroy() {
        super.onDestroy()
        sensorManager.unregisterListener(heartRateListener)
    }
}

其他提示

  • 检查权限是否已正确授予。
  • 确保 SensorManager 已正确初始化。
  • 使用适当的传感器延迟速率。

常见问题解答

1. 为什么心率显示屏不更新?

确保已更新 UI 以反映最新的心率值。

2. 为什么我的心率始终显示为 0?

检查应用程序是否已正确获取权限并连接到心率传感器。

3. 如何优化代码?

使用建议的优化措施,例如全局变量和 mutableStateOf() 变量。

4. 如何处理传感器异常?

SensorEventListener 中包含适当的错误处理。

5. 如何在不同的 WearOS 设备上使用此解决方案?

此解决方案与所有支持心率监测的 WearOS 设备兼容。