Можно ли получить данные PPG (фотоплетизмограммы) с умных часов через Android?

Я хочу разработать приложение для здравоохранения с использованием смарт-часов Android с оптическим датчиком сердечного ритма. Примеры таких устройств: Samsung gear live, Moto360, LG G watch R и т. д.

Для этого мне нужны необработанные данные сигнала PPG с этих устройств, но я обнаружил, что API Android поддерживает только данные о частоте сердечных сокращений в единицах BPM.

Кто-нибудь знает, доступны ли необработанные данные сигнала, и если да, то как мне получить доступ к этим данным?


person Dul Lee    schedule 14.02.2015    source источник


Ответы (3)


Да, это возможно (по крайней мере, на мобильных устройствах Samsung, таких как S5, S6 и т. д.).

См. эту ссылку: http://developer.samsung.com/galaxy#sensor-extension

С сайта Самсунг:

Датчик HRM расположен на задней панели телефона. Если вы поместите палец, начнется измерение. Сигнал фотоплетизмограммы (ФПГ) означает количество обратного ИК/КРАСНОГО света, отраженного от кровеносного сосуда в пальце.

Используйте SDK Samsung, и он даст вам необработанные значения (значения варьируются от 0 до ~ 64600, если я правильно помню).

person eSquirel    schedule 17.03.2016
comment
это для смартфона, а что насчет браслетов? - person Danf; 04.04.2019
comment
@Danf для браслетов Samsung, таких как Gear S2 и S3, вы можете изучить следующие документы SDK для сбора необработанных данных PPG с Gear S2/S3: developer.samsung.com /форум/тред/ - person pedrofsn; 16.07.2019

Да, это возможно. Я ответил на аналогичный вопрос здесь: Android Wear: как получить необработанный PPG данные?

В основном, попробуйте выполнить следующие шаги:

1- Получите тип датчика (представленный числом) вашего датчика PPG (это константа, которая описывает датчик). Это можно сделать, перечислив все доступные датчики на вашем устройстве:

List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
        for (Sensor currentSensor : sensorList) {
            Log.d("List sensors", "Name: "+currentSensor.getName() + " /Type_String: " +currentSensor.getStringType()+ " /Type_number: "+currentSensor.getType());
        }

2- Затем попробуйте найти тип датчика вашего датчика PPG. В вашем выводе вы найдете один из датчиков, содержащих слово ppg в своем типе. Например, вот как выглядит датчик PPG моих часов Huawei Watch 2:

Name: AFE4405 light Sensor /Type_String:  com.huawei.watch.ppg /Type_Number: 65537

3-Зарегистрируйте своего слушателя, используя type_number вашего датчика ppg, мой 65537, поэтому я бы сделал это:

sensorManager.registerListener(this,sensorManager.getDefaultSensor(65537),SensorManager.SENSOR_DELAY_NORMAL);
person Mehdi Boukhechba    schedule 09.10.2018
comment
Даже это хороший обходной путь, в некоторых случаях он неприменим, потому что строковый тип не всегда != null. Поэтому строка ppg не всегда доступна (я проверял на ticwatch 1) - person Thecave3; 24.02.2019
comment
Не могли бы вы вставить то, что вы получаете, когда перечисляете свои датчики? (Это пункт 1 в моем ответе) - person Mehdi Boukhechba; 24.02.2019
comment
I/MainActivity: Имя: Датчик акселерометра Cywee Type_String: android.sensor.accelerometer /ype_number: 1 I/MainActivity: Имя: Датчик магнитного поля Cywee Type_String: android.sensor. Magnetic_field /ype_number: 2 2019-02-24 18:52: 03.864 6972-6972/thecave.forge.biowatchapp I/MainActivity: Имя: Cywee Gyroscope Sensor Type_String: android.sensor.gyroscope /ype_number: 4: Имя: Cywee Heart Rate Type_String: android.sensor.heart_rate /ype_number: 21: Имя: Cywee Heart Rate Touch Type_String: /ype_number: 33171030 - person Thecave3; 24.02.2019
comment
Я что-то не понял... вы можете слушать необработанные значения ppg или только частоту сердечных сокращений? - person Danf; 04.04.2019
comment
Действительно, я получаю необработанные данные PPG с частотой около 100 Гц. Это было протестировано на Huawei Watch 2. - person Mehdi Boukhechba; 04.04.2019
comment
@MehdiBoukhechba Спасибо за ответ! Я хотел бы попробовать это сам, но я действительно не хочу покупать дорогие часы для этого. Есть ли шанс, что вы можете указать мне на устройство, которое находится на более дешевом конце спектра, но все же должно работать с вашим подходом? - person Stefan Falk; 25.07.2021

Нет, я тщательно искал, чтобы извлечь необработанные значения, но безуспешно. AsteroidOS (asteroidos.org/) — это специальная прошивка для нескольких совместимых часов, даже после просмотра всего исходного кода я смог найти только одно место, где использовался монитор сердечного ритма.

Файл реализации

https://github.com/AsteroidOS/android_frameworks_native/blob/e88bdd18c91c313b2102445eb5eb6213814bc124/libs/gui/Sensor.cpp

Причина, по которой я чувствую, почему это не сработает, заключается в том, что частота слышимости вычисляется аппаратным обеспечением внутри.

В экспериментальных целях вы можете создать свой собственный внешний датчик PPG.

www.sparkfun.com/products/11574

и подключите его к аурдино.

Или можно поискать какой-нибудь беспроводной датчик PPG и создать свой собственный.

person sai    schedule 06.12.2016