如何在Android Wearable中访问心率传感器?

won*_*lik 11 android moto-360 wear-os

我在Moto 360上访问心率传感器时遇到问题.

我试过以下事情:

Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
Run Code Online (Sandbox Code Playgroud)

然后实现SensorEventListener接口:

@Override
public void onSensorChanged(SensorEvent event) {

        String TAG = "tag";
        Log.i(TAG, "--------------------------");
        Log.i(TAG, msg);
        Log.i(TAG, ""+ event.sensor.getType());
        Log.i("live","--------------");
Run Code Online (Sandbox Code Playgroud)

而对我来说奇怪的是我根本没有得到任何信息(不仅是心率).

此外,我尝试列出所有传感器,但它没有在列表中显示心率传感器.

当然,我已经添加了持久性

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.watchtest" >

<uses-feature android:name="android.hardware.type.watch" />
<uses-permission android:name="android.permission.BODY_SENSORS" />
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

谢谢.

W上.

Ale*_*r K 6

在我完成以下操作后开始为我工作:

  1. 从手表上卸载了我的应用程序

    adb -s localhost:4444 uninstall com.example.android.wearable.jumpingjack
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加了获取心率传感器的权限

    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置min和目标SDK版本以匹配手表

    android:minSdkVersion="20" android:targetSdkVersion="20"
    
    Run Code Online (Sandbox Code Playgroud)

再次启动应用程序.我收到了Sensor.TYPE_HEART_RATE的心率传感器,我开始收到它的读数.虽然他们远没有好.有很多读数,但它们是相同的,仅限于这5个值:

heartRate onSensorChanged values = [0.0], accuracy = 0, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
heartRate onSensorChanged values = [53.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
heartRate onSensorChanged values = [54.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
heartRate onSensorChanged values = [55.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
heartRate onSensorChanged values = [77.0], accuracy = 1, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
Run Code Online (Sandbox Code Playgroud)

大部分时间我都得到相同的53.0值,这似乎不是我真实的心率.77可能是那个.


won*_*lik 1

正如 @Kent 和 @Murphy 所建议的,更新的 SDK 就是解决方案。就我而言,我需要放弃该项目并从头开始创建新项目,因为即使更新了 SDK,旧项目也无法工作。