【问题标题】:Having trouble reading heart rate sensor from Moto 360 - Android Wear无法从 Moto 360 读取心率传感器 - Android Wear
【发布时间】:2016-09-29 18:57:46
【问题描述】:

有人成功读取了 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,它报告自己为“健康传感器”,但似乎也没有返回数据。

任何建议将不胜感激。

【问题讨论】:

  • 这个问题你解决了吗?
  • 根据我的使用经验,传感器 API 似乎非常不稳定。希望我做错了什么,但事实并非如此,但似乎明显缺乏在这方面取得成功的人
  • 另见我在另一个线程上的回复stackoverflow.com/a/30947209/2029699

标签: android android-sensors wear-os


【解决方案1】:

我在我的 Moto 360 上做同样的事情,我得到了传感器和心率。您是否为正文数据设置了权限:

使用权限 android:name="android.permission.BODY_SENSORS"

在您的 Manifest.xml 中?

【讨论】:

  • 我在 AndroidManifest.xml 中添加了 uses-permission,但无法获取心率。 SensorManager.getSensorList 不返回 Sensor.TYPE_HEART_RATE。
  • @kazhik 我有最新的 SDK,但它不适合我。我没有在列表中看到心率传感器。你能帮帮我吗?
  • @EyesClear 创建一个新项目可能会解决您的问题。 stackoverflow.com/questions/26489281/…
【解决方案2】:

我在尝试从 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 更可靠,我会在几个月后再次访问并更新我的答案。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      除了确保在清单中为 BODY_SENSORS 设置权限外,还要确保在安装应用后启用该权限:

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

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

      【讨论】:

        【解决方案5】:

        我对 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"
                     /> 
        

        现在它的工作!

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多