是否可以通过 android 从智能手表获取 PPG(Photoplethysmogram)数据?

Posted

技术标签:

【中文标题】是否可以通过 android 从智能手表获取 PPG(Photoplethysmogram)数据?【英文标题】:Is it possible to get PPG(Photoplethysmogram) data from a smart watch via android? 【发布时间】:2015-04-15 07:08:02 【问题描述】:

我想使用带有光学心率传感器的 android 智能手表设备开发一款医疗保健应用。此类设备的示例包括:Samsung gear live、Moto360、LG G watch R 等。

为此,我需要来自这些设备的原始 PPG 信号数据,但我发现 Android API 仅支持 BPM 单位的心率数据。

有谁知道原始信号数据是否可以访问,如果可以,我如何访问该数据?

【问题讨论】:

【参考方案1】:

是的,这是可能的(至少在三星移动设备上,例如 S5、S6 等)。

查看此链接:http://developer.samsung.com/galaxy#sensor-extension

来自三星网站:

HRM 传感器位于手机后面板上。如果您放置手指,则开始测量。 光电容积脉搏波(PPG)信号是指从手指血管反射回来的 IR / RED 光量。

使用三星的 SDK,它会为您提供原始值(如果我没记错的话,值范围从 0 到 ~64600)。

【讨论】:

这是用于智能手机的,但腕带呢? @Danf 对于三星腕带,如 Gear S2 和 S3,您可以查看以下 SDK 文档以从 Gear S2/S3 收集 ppg 原始数据:developer.samsung.com/forum/thread/…【参考方案2】:

是的,可以这样做。我在这里回答了类似的问题:Android Wear: How to get raw PPG data?

基本上,请尝试按照以下步骤操作:

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 传感器的 sensorType。在您的输出中,您会发现其中一个传感器在其类型中包含单词 ppg。例如,我的华为手表 2 的 ppg 传感器如下所示:

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

3-使用您的 ppg 传感器的 type_number 注册您的听众,我的是 65537,所以我会这样做:

sensorManager.registerListener(this,sensorManager.getDefaultSensor(65537),SensorManager.SENSOR_DELAY_NORMAL);

【讨论】:

即使这是一个很好的解决方法,但在某些情况下它并不适用,因为字符串类型并不总是 != null。因此“ppg”字符串并不总是可用(我已经在 ticwatch 1 上测试过) 您能否粘贴列出传感器时获得的信息? (这是我回答中的第 1 点) I/MainActivity:名称:Cywee 加速度传感器类型_字符串:android.sensor.accelerometer /ype_number:1 I/MainActivity:名称:Cywee 磁场传感器类型_字符串:android.sensor.magnetic_field /ype_number:2 2019 -02-24 18:52:03.864 6972-6972/thecave.forge.biowatchapp I/MainActivity:名称:Cywee 陀螺仪传感器类型_字符串:android.sensor.gyroscope /ype_number:4:名称:Cywee 心率类型_字符串:android.sensor。 heart_rate /ype_number: 21 : Name: Cywee Heart Rate Touch Type_String: /ype_number: 33171030 确实,我确实得到了频率约为 100HZ 的原始 PPG 数据。这已经在华为手表 2 上进行了测试。 @MehdiBoukhechba 感谢您的回答!我想自己试一试,但我真的不想为此买一块昂贵的手表。您是否有机会向我介绍一款价格较低但仍应使用您的方法的设备?【参考方案3】:

不,我已经严格搜索以提取原始值,但没有成功。 AsteroidOS (asteroidos.org/) 是为少数兼容手表定制的 rom,即使浏览了整个源代码,我也只能找到一个使用心率监测器的地方。

实施文件

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

我觉得它不起作用的原因是因为听力率是由硬件内部计算的。

出于实验目的,您可以在外部构建自己的 PPG 传感器

www.sparkfun.com/products/11574

并将其连接到 aurdino。

或者可以搜索一些无线 PPG 传感器并自己构建一个。

【讨论】:

以上是关于是否可以通过 android 从智能手表获取 PPG(Photoplethysmogram)数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用 BLE 从智能手表接收加速度计和陀螺仪信号

包从颤振智能手表接收心率数据

Android FTP 意图

如何在独立的智能手表应用程序或表盘中检查蓝牙连接手机的电池电量? [关闭]

在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是啥?

原创Android 5.0 BLE低功耗蓝牙从设备应用