Получение данных с носимого устройства в пользовательском приложении - PullRequest
1 голос
/ 23 мая 2019

Я планирую создать фитнес-приложение для Android.Помимо прочего, я хочу немного интегрироваться с носимыми устройствами.Устройство, которое я имею под рукой, - это Honor Band 4 (Huawei).Я не нашел четких объяснений того, как подойти к этой проблеме, и если это вообще возможно.

Моей первой идеей было периодически получать данные из приложения HuaweiHealth и импортировать их внутри себя.Но кажется, что приложение HuaweiHealth не очень хорошо сочетается с другими, поскольку я не видел способа доступа к этим данным.

Еще одна вещь, с которой я столкнулся, - это API-интерфейс сенсоров Android: https://developers.google.com/fit/android/ble-sensors Могу ли я использовать это для получения данных от моего Honor Band?Я предполагаю, что это даст мне только необработанные данные, и мне придется справиться со всей логикой, чтобы получить точный шагомер, измеритель сердечного ритма и т. Д.

Любой ввод будет оценен.

1 Ответ

1 голос
/ 23 мая 2019

Я не знаю много о Google Fit, так что, возможно, с этим легче взаимодействовать с часами.Однако я объясняю, как в прошлом я имел дело с Bluetooth-связью в аналогичном сценарии

. Для передачи данных устройство использует протокол Bluetooth Low Energy.Прежде всего, вы должны прочитать общее описание того, как работает протокол.Хорошим началом будет веб-сайт Bluetooth SIG .

. Самое важное, что вам нужно знать, - это модель программного обеспечения.Каждое устройство выставляет Generic Attribute Profile (GATT).На мой взгляд, это похоже на API.В нем говорится, какие данные «предлагает» устройство и как их использовать.ГАТТ имеет следующую терминологию:

  1. Характеристика: Значение данных, передаваемое между клиентом и сервером, например, текущее напряжение батареи.
  2. Сервис: Набор связанных характеристик, которые работают вместе для выполнения определенной функции.Например, служба «Термометр состояния» включает характеристики для значения измерения температуры и интервал времени между измерениями.
  3. Дескриптор: Дескриптор предоставляет дополнительную информацию о характеристике.Например, характеристика значения температуры может иметь указание ее единиц измерения (например, Цельсия), а также максимальных и минимальных значений, которые может измерять датчик.Дескрипторы являются необязательными - каждая характеристика может иметь любое количество дескрипторов.

Bluetooth SIG определяет полный список общих служб и характеристик, а также способы их взаимодействия.Опять же, вся эта информация находится на их веб-сайте.

Итак, прежде чем вы начнете писать код для взаимодействия с часами, вам нужно знать, какие услуги и характеристики предоставляет устройство.Идеальной вещью было бы то, что руководство, которое поставлялось с часами, когда вы их купили, что-то говорило об этом ... но это, вероятно, не тот случай.

Таким образом, вы должны понять это самостоятельно.Первое, что вы можете сделать, это загрузить приложение, которое позволит вам подключиться к BLE-устройству, и изучить его профиль GATT.Я рекомендую LightBlue Explorer .Используя его, вы можете подключиться к часам и узнать характеристики и предоставляемые услуги.Затем вы идете и читаете спецификацию на веб-сайте Bluetooth SIG, и у вас есть все, что вам нужно для написания кода.

Однако производители устройств BLE не ограничиваются услугами и характеристиками, определенными Bluetooth SIG.Они могут создавать и реализовывать свои собственные.На изображении ниже я подключен к цифровой шкале.Как видите, у него много «стандартных» сервисов (индекс пользователя, состав тела, обслуживание аккумулятора и т. Д.), Но в окружении красного квадрата вы можете увидеть сервис с пятью характеристиками, которые не имеют названия.

enter image description here

Так как эта служба не была определена с помощью Bluetooth SIG, вам необходимо выполнить реверс-инжиниринг, который может быть очень сложным и разочаровывающим.Я загрузил официальное приложение устройства, включил Bluetooth Snoop HCI и затем по-разному взаимодействовал с устройством.После этого я открыл журнал с помощью Wireshark и проанализировал передачу пакетов Bluetooth, чтобы увидеть, как эти характеристики работают.

Наконец, когда вы узнаете, как работает Bluetooth в устройстве, вы готовынаписать собственное приложение для взаимодействия с ним.Я настоятельно рекомендую вам использовать библиотеку для реализации коммуникации, иначе вы будете много бороться.Лучшее, что я видел и использовал, это RxAndroidBle (у них есть другие версии библиотеки для разных платформ).

Это длительный процесс, и то, что я здесь написал, это лишь некоторая общая информация, поэтому у вас есть с чего начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...