是否可以从我的应用中的Androidwatch获取心率更新?

时间:2018-11-19 23:20:33

标签: android wear-os android-sensors samsung-gear-s2 heartrate

我有一个Android应用程序,我想从任何已连接的Android手表(Wear OS,Tizen等)中读取心率。如果不开发可穿戴式应用程序,这是否可能?

我尝试在Sensor.TYPE_HEART_RATE上注册一个侦听器,但是我没有看到出现的3款手表中的任何一款(Ticwatch E,Ticband和Gear S2)。我确保我请求Manifest.permission.BODY_SENSORS权限。

sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager?

    heartRateSensor = sensorManager?.getDefaultSensor(Sensor.TYPE_HEART_RATE)

    val registered = sensorManager?.registerListener(this, heartRateSensor, SensorManager.SENSOR_DELAY_NORMAL)
    Log.i(TAG, if (registered!!) "Registered Listener" else "Failed to register listener")

2 个答案:

答案 0 :(得分:0)

基于这些帖子12,请确保您的应用程序已定义并授予了“人体传感器”权限。

  

验证:

<uses-permission android:name="android.permission.BODY_SENSORS"/>
     

出现在您的AndroidManifest.xml文件中

     

此外,通过检查手表上的“权限”设置,确保已授予该权限:“设置”->“权限”->“您的应用”

例如,您可以选中此GitHub link

答案 1 :(得分:0)

我使用Android Wear手表,Samsung Gear S2,随机心率健身追踪器手表(Ticwatch)和独立的蓝牙心率臂带进行了一些研究。

重申我的目标是通过电话应用程序从手表的传感器读取心率数据,而无需制作手表应用程序。

我的发现如下:

  1. 我上面发布的代码示例位于我的手机应用程序中,SensorManager仅适用于设备内置的传感器。例如,如果应用程序在手机上运行,​​那么我只会在手机上获取传感器,如果在手表上,我会在手表上获取传感器。除非手机内置了心率传感器,否则这显然没有用,因为没有心率传感器出现。手表应用程序中的相同代码有效,并且我能够以这种方式获取心率。
  2. 使用Fitness API和Samsung Health API,当读取心率时,我能够在手机应用程序上获取更新。此解决方案的唯一问题是您无法设置心率读数的频率。为了节省电池寿命,大多数手表似乎在静止不动时每隔10分钟或锻炼期间每隔几秒设置一次间隔。这也没有用,因为我需要更多的频率更新。
  3. 唯一可以以所需频率读取心率的蓝牙心率臂环。此解决方案需要与显示器配对,但这是一个简单的连接,我不需要开发任何手表应用程序!

我希望这可以阐明SensorManager仅适用于运行应用程序的设备上的传感器。