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

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

我有一个 Android 应用程序,我想从任何连接的 Android watch (Wear OS、Tizen 等)读取心率。如果不开发可穿戴应用,这可能吗?

我尝试在 Sensor.TYPE_HEART_RATE 上注册一个监听器,但我没有看到我显示的 3 款 watch 中的任何一款(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")

最佳答案

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

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

我的发现如下:

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

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

关于android - 是否可以在我的应用程序中从 Androidwatch 获取心率更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53384050/

相关文章:

java - 日期和时间格式取决于区域设置

java - Android Studio 2 - 相机安全异常

android - 如何直接从 Android Wear 通过 WiFi 发出 HTTP 请求?

android - 传感器更新率的动态变化

android - 如何取消注册传感器监听器?

android - 在 Android 平台上获取 Sensor 的数据

android - 更改搜索栏上的 ListView 项目值更改

android - 为什么 MapView onTouchListener 只触发一次?

android - 如何取消DelayedConfirmationView?

android - Xamarin:无法在中构建干净的 Android Wear 项目