Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Wear:如何获取原始PPG数据?_Android_Wear Os_Heartbeat - Fatal编程技术网

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

Android Wear:如何获取原始PPG数据?,android,wear-os,heartbeat,Android,Wear Os,Heartbeat,我能够使用SensorEventListener通过光学心率传感器访问用户的心率: 我需要的是获得原始PPG数据,如: 通过Google Fit或任何其他方式,我可以获得这些数据吗 我调查了Google Fit API的使用情况: 它提供了类型“心率”BPM和心率摘要,但没有PPG原始数据。我花了一些时间研究从android API获取原始PPG信号是否可行,与一些人可能说的相反,这绝对是可能的。下面是如何做到这一点: 1-获取由PPG传感器编号表示的传感器类型。这是一个描述传感器的常数。这

我能够使用SensorEventListener通过光学心率传感器访问用户的心率:

我需要的是获得原始PPG数据,如:

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

我调查了Google Fit API的使用情况:


它提供了类型“心率”BPM和心率摘要,但没有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());
        }
3-使用ppg传感器的type_编号注册您的监听器,我的是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

        } 

}

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

我花了一些时间研究从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());
        }
3-使用ppg传感器的type_编号注册您的监听器,我的是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

        } 

}

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

仅适用于为您提供显式PPG API的设备:仅适用于为您提供显式PPG API的设备:我将其制作成一个插件:此外,我使用的化石体育和化石第5代设备上实际上有2个通道,您的代码仅捕获第一个通道事件。值[0]一旦我开始监听PPG传感器,即使在应用程序关闭后,它也不会关闭并耗尽电池电量。你有这个问题吗?如果你想在应用程序处于后台时停止监听PPG事件,你可以在onPause方法中注销你的侦听器,并在应用程序的onResume方法中重新注册它。我知道自从上次评论以来已经有一段时间了,但你们中有人在iOS中原型过吗?我正在努力实现同样的目标,但是Swift Sensors SDK仍处于试验阶段,我正在尝试仅使用原始蓝牙标准来实现这一点谢谢您的指导,已经帮了我很多!我把它做成了一个插件:另外,我使用的Fossil Sport和Fossil Gen 5设备上实际上有2个通道,你的代码只捕获第一个通道事件。值[0]一旦我开始监听PPG传感器,即使在应用程序关闭后,它也不会关闭并耗尽电池。你有这个问题吗?如果你想在应用程序处于后台时停止监听PPG事件,你可以在onPause方法中注销你的侦听器,并在应用程序的onResume方法中重新注册它。我知道自从上次评论以来已经有一段时间了,但你们中有人在iOS中原型过吗?我正在努力实现同样的目标,但是Swift Sensors SDK仍处于试验阶段,我正在尝试仅使用原始蓝牙标准来实现这一点谢谢您的指导,已经帮了我很多!