Можно ли получать обновления пульса от Androidwatch в моем приложении?

У меня есть приложение для 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")

1 ответ

Я провел некоторые исследования с использованием часов Android Wear, Samsung Gear S2, фитнес-часов со случайным пульсом (Ticwatch) и автономного ремешка Bluetooth.

Просто для того, чтобы повторить, моя цель состояла в том, чтобы прочитать данные о частоте сердечных сокращений с датчика часов через приложение для телефона без создания приложения для часов.

Мои выводы были следующими:

  1. Пример кода, который я разместил выше, был в моем приложении для телефона, и SensorManager работает только с датчиками, встроенными в устройство. Например, если бы приложение работало на телефоне, я получал бы только датчики на телефоне, если бы на часах я получал те, что на часах. Это, очевидно, не сработало, так как датчики сердечного ритма не появлялись, если только у телефона его не было. Тот же код в приложении для часов сработал, и я смог таким образом измерить частоту пульса.
  2. Используя API для фитнеса и Samsung Health API, я смог получать обновления в телефонном приложении при считывании пульса. Единственной проблемой этого решения было то, что вы не можете установить частоту показаний пульса. Чтобы продлить срок службы батареи, похоже, что большинство часов ограничивают интервал каждые 10 минут во время тренировки или каждые несколько секунд во время тренировки. Это также не сработало, так как мне нужно было больше частотных обновлений.
  3. Нарукавная повязка для пульса Bluetooth была единственной, где я мог измерить частоту пульса на нужной мне частоте. Для этого решения требовалось сопряжение с монитором, но это было простое соединение, и мне не нужно было создавать приложения для часов!

Я надеюсь, что это проясняет, как SensorManager работает только для датчиков на устройстве, на котором запущено приложение.

Исходя из этих постов 1 и 2, убедитесь, что ваше приложение определило и предоставило разрешение для датчиков тела.

Подтвердите это:

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

присутствует в вашей одежде AndroidManifest.xml

Кроме того, убедитесь, что разрешение было предоставлено, проверив настройки разрешений на часах: Настройки -> Разрешения -> Ваше приложение

Вы можете проверить эту ссылку GitHub, например.

Другие вопросы по тегам