读取Moto 360心率传感器有困难 - Android Wear

5

有人成功从Moto 360读取心率传感器的数据吗?

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

我遇到了一个错误,提示“SensorManager:传感器或监听器为空”。

我知道Gear Live使用的ID与Sensor.TYPE_HEART_RATE不同...我想知道Moto 360是否也是如此。

我尝试了65538这个传感器值,它自称为“健康传感器”,但似乎也没有返回数据。

如果您有任何建议,将不胜感激。


你解决了这个问题吗? - EyesClear
传感器API,根据我的经验,似乎非常不稳定。希望我做错了什么,事实并非如此,但似乎缺乏成功经验的人很明显。 - Ben Pearson
请参见我在另一个线程上的回复 https://dev59.com/7F8d5IYBdhLWcg3wvkSN#30947209 - Alexander K
6个回答

1

我在尝试从Moto 360中获取心率时遇到了相同的问题,传感器为null。做了与你一样的操作,发现可用的传感器是健康传感器:

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线程建议这是正确的路线。我似乎从中获得了读数,但它们不可靠。

经过更多的研究,我发现了一个开源项目,它轮询传感器数据并显示它。这似乎只有时而有效,因此我将传感器API视为不可靠,并暂时搁置了我的项目。如果我认为传感器API更可靠,我会在几个月后重新访问并更新我的答案。


1
我正在我的Moto 360 上做同样的事情,我得到了传感器和心率。你是否在Manifest.xml中加入了身体数据的权限: < p > uses-permission android:name="android.permission.BODY_SENSORS" < /p > ?

我在AndroidManifest.xml中添加了uses-permission,但无法获取心率。SensorManager.getSensorList没有返回Sensor.TYPE_HEART_RATE。 - kazhik
@kazhik,我有最新的SDK,但它对我不起作用。我在列表中看不到心率传感器。你能帮我吗? - EyesClear
@EyesClear 创建一个新项目可能会解决你的问题。https://dev59.com/7F8d5IYBdhLWcg3wvkSN - kazhik

1

1

Sensor.TYPE_HEART_RATE实际上是正确的ID。我遇到了同样的问题:尽管我在清单中拥有BODY_SENSORS权限,但传感器仍为空。我通过删除应用程序、重新启动手表并在运行时请求BODY_SENSORS权限(请参见https://developer.android.com/training/articles/wear-permissions.html)来解决这个问题。 之后,我收到了身体传感器权限的系统对话框,然后开始从传感器接收更新。 希望这可以帮助。


0

我也曾遇到Moto360的同样问题,以下是我的解决方法。

我尝试了所有列出的解决方案 - 重新安装应用程序,升级SDK,但对我没有用。我在清单文件中包含了身体传感器的权限。我无法在可用传感器列表中看到心率传感器。因此,我认为这是一个权限问题。从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"
             /> 

现在它正在运行!!


0

从安卓M开始,您需要确保用户在应用程序首次运行时启用权限,或手动转到应用程序权限并启用它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接