无法从Moto 360读取心率传感器 - Android Wear

时间:2014-09-13 07:08:36

标签: android android-sensors wear-os

有没有人成功读过Moto 360的心率传感器?

mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);

我收到一条错误消息,指出“SensorManager:传感器或监听器为空”

我知道Gear Live使用了除Sensor.TYPE_HEART_RATE之外的其他ID ...我想知道Moto 360是否属于这种情况。

我尝试了一个65538的传感器值,它将自己报告为“健康传感器”,但似乎也没有返回数据。

任何建议都将不胜感激。

6 个答案:

答案 0 :(得分:1)

我在Moto 360上做同样的事情,我得到了传感器和心率。您是否已获得身体数据的许可:

uses-permission android:name =" android.permission.BODY_SENSORS"

你的Manifest.xml中的

答案 1 :(得分:1)

我在尝试从Moto 360中查询心率时遇到了同样的问题,传感器为空。和你一样,确定可用的传感器是健康传感器:

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);

if (sensor == null) {
  List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
  for (Sensor sensor1 : sensors) {
    Log.i(TAG, sensor1.getName() + ": " + availableSensor.getType());
  }
}

65538似乎是正确使用的类型,所以我使用了它。

Wellness Passive Sensor 65538

Reddit thread I found建议这是正确的路线。我似乎从中得到了读数,但它们并不可靠。

通过更多的研究,我发现了an open source project轮询传感器数据并显示它。这似乎有时只能起作用,因此我将传感器API视为不可靠并暂时停放了我的项目。如果我相信传感器API更可靠,我会在几个月内再次重新审视这个问题并更新我的答案。

答案 2 :(得分:1)

Sensor.TYPE_HEART_RATE实际上是正确的ID。我有同样的问题:即使我在清单中有BODY_SENSORS权限,传感器也是null。我通过删除应用程序,重新启动监视并在运行时请求BODY_SENSORS权限来修复它(请参阅https://developer.android.com/training/articles/wear-permissions.html)。 之后,我获得了身体传感器权限的系统对话,然后我开始接收来自传感器的更新。 我希望这会有所帮助。

答案 3 :(得分:1)

在确保清单中为BODY_SENSORS设置权限的同时,请确保在安装应用程序后启用了权限:

https://support.google.com/androidwear/answer/6321353?hl=en

这个让我有一段时间......

答案 4 :(得分:0)

我和Moto360有同样的问题,以及我如何解决它。

我尝试了所有列出的解决方案 - 重新安装应用程序,升级SDK但它对我有用。我在Manifest文件中包含了body传感器的权限。我在可用传感器列表中看不到心率传感器。所以我认为这是一个权限问题。 API 23以后android使用新的权限模型。

从此链接:https://developer.android.com/training/articles/wear-permissions.html它说 - “注意:对于使用新权限模型的应用程序,它必须为uses-sdk-element和compileSdkVersion指定值23。”

我更改了我的gradel脚本以使用minsdk和compliledsdk作为23.还添加了以下我的应用程序最明显。

<uses-sdk android:minSdkVersion="23"
            android:targetSdkVersion="23"
             /> 

现在它的工作!!

答案 5 :(得分:0)

从Android M,您需要确保用户在first time the applications runs启用权限或手动启用应用权限并启用它