安卓SDK中的心率传感器仅返回计算出的心率值,而我对此不感兴趣。
我需要访问安卓心率传感器的原始数据,例如反射值强度等方面的数据。这是因为基本上心率传感器使用LED并测量随时间变化的反射率。
如果可能的话,访问任何图像传感器收集的原始图像数据将更加方便。谢谢。
相关的SO问题:从Android Wear心率传感器读取底层颜色/光数据?
安卓SDK中的心率传感器仅返回计算出的心率值,而我对此不感兴趣。
我需要访问安卓心率传感器的原始数据,例如反射值强度等方面的数据。这是因为基本上心率传感器使用LED并测量随时间变化的反射率。
如果可能的话,访问任何图像传感器收集的原始图像数据将更加方便。谢谢。
相关的SO问题:从Android Wear心率传感器读取底层颜色/光数据?
private void trackHeartRate() {
SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_HEART_RATE_BPM)
// Can specify whether data type is raw or derived.
.setDataSourceTypes(DataSource.TYPE_RAW)
.build())
.setResultCallback(new ResultCallback<DataSourcesResult>() {
@Override
public void onResult(DataSourcesResult dataSourcesResult) {
Log.i(TAG, "Result: " + dataSourcesResult.getStatus().toString());
for (DataSource dataSource : dataSourcesResult.getDataSources()) {
Log.i(TAG, "Data source found: " + dataSource.toString());
Log.i(TAG, "Data Source type: " + dataSource.getDataType().getName());
if (dataSource.getDataType().equals(DataType.TYPE_HEART_RATE_BPM)
&& mListener == null) {
Log.i(TAG, "Data source for heart rate found! Registering.");
registerFitnessDataListener(dataSource,
DataType.TYPE_HEART_RATE_BPM);
}
}
}
});
mListener = new OnDataPointListener() {
@Override
public void onDataPoint(DataPoint dataPoint) {
for (Field field : dataPoint.getDataType().getFields()) {
Value val = dataPoint.getValue(field);
Log.i(TAG, "Detected DataPoint field: " + field.getName());
Log.i(TAG, "Detected DataPoint value: " + val);
}
}
};
}
private void registerFitnessDataListener(DataSource dataSource, DataType dataType) {
Fitness.SensorsApi.add(
mClient,
new SensorRequest.Builder()
.setDataSource(dataSource) // Optional but recommended for custom data sets.
.setDataType(dataType) // Can't be omitted.
.setSamplingRate(10, TimeUnit.SECONDS)
.build(),
mListener)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
Log.i(TAG, "Listener registered!");
} else {
Log.i(TAG, "Listener not registered.");
}
}
});
}
这个问题很旧了,但对于三星设备,您可以访问原始心率传感器,如红色信号或红外信号(Note 4、Note 5、S6、S7),请查看Sensor Extensionhttp://developer.samsung.com/galaxy/sensor-extension。