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

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

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

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

【问题讨论】:

    标签: android wear-os sony-smartwatch


    【解决方案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 传感器并自己构建一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2013-04-02
      相关资源
      最近更新 更多