Android Wear:如何获取原始PPG数据?

时间:2017-11-22 21:42:58

标签: android wear-os heartbeat

我可以使用SensorEventListener

使用光学心率传感器访问用户的心率
sensorManager.registerListener(this,
                sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE),
                SensorManager.SENSOR_DELAY_NORMAL);

我需要的是获取原始PPG数据,如: https://ars.els-cdn.com/content/image/1-s2.0-S0960077915001344-gr1.jpg

通过Google Fit或任何其他方式,我可以获得此数据吗?

我研究了Google Fit API的用法: https://developers.google.com/fit/android/sensors

它提供TYPE_HEART_RATE_BPMHEART_RATE_SUMMARY,但不提供PPG原始数据。

1 个答案:

答案 0 :(得分:3)

我花了一些时间弄清楚是否可以从android API中获取原始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传感器的sensorType。在输出中,您会找到其中一个包含单词ppg的传感器之一。例如,这就是我的Huawei watch 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);

4-听听传感器数据的变化:

public void onSensorChanged(SensorEvent event) {

       if (event.sensor.getType() == 65537) {
            String msg = "PPG " + (int) event.values[0];
            //Do something with your PPG signal

        } 

}

您都准备好了。希望它对您有用。