我能够使用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_BPM
和HEART_RATE_SUMMARY
,但不提供PPG原始数据。
我花了一些时间弄清楚是否可以从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传感器的感觉类型。在您的输出中,您会找到一个传感器之一,其中包含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);
4-符合传感器数据的更改:
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == 65537) {
String msg = "PPG " + (int) event.values[0];
//Do something with your PPG signal
}
}
您都设定了。希望它对您有用。