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

Dha*_*esh 5 android android-sensors samsung-gear-s2 heartrate wear-os

我有一个 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")
Run Code Online (Sandbox Code Playgroud)

Dha*_*esh 6

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

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

我的发现如下:

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

我希望这能澄清 SensorManager 如何仅适用于运行应用程序的设备上的传感器。