心率傳感器上的android sdk只返回我沒有興趣的計算bpm。如何訪問Android心率傳感器RAW數據? (反射光,而不是心臟跳動)
我需要訪問android心率傳感器RAW數據,例如,在反射值的強度方面會很大。 (因爲基本上心率傳感器使用導致並且隨時間測量反射率)
如果可能的話,訪問由任何圖像傳感器收集的原始圖像會更大。謝謝。
相關SO問題: Read underlying color/light data from Android Wear heart rate sensor?
心率傳感器上的android sdk只返回我沒有興趣的計算bpm。如何訪問Android心率傳感器RAW數據? (反射光,而不是心臟跳動)
我需要訪問android心率傳感器RAW數據,例如,在反射值的強度方面會很大。 (因爲基本上心率傳感器使用導致並且隨時間測量反射率)
如果可能的話,訪問由任何圖像傳感器收集的原始圖像會更大。謝謝。
相關SO問題: Read underlying color/light data from Android Wear heart rate sensor?
您可以使用谷歌飛度的傳感器API來獲取原始的心跳數據,如果谷歌飛度是一個選項。見Google Fit Guide for details。
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.");
}
}
});
}
希望這會有所幫助。
這是非常有用的,但仍然不是我所需要的。即使是「RAW」心率,我也不需要心臟跳動率。我需要訪問用於計算心跳的反射光。對不起,不夠清楚。 – tcboy88
您的評論和編輯的問題使其更清晰。除非我遺漏了一些東西,否則這些數字化的波形數據不能通過Android框架獲得,儘管它可能是設備驅動程序級API的一部分(我甚至懷疑它)。但即使在這種情況下,它也只會被製造商和原始設備製造商公開。我的建議是搜索一個獨立的設備,它可以完成您正在尋找的任務,通過BT或WiFi提供某種API,理想情況下還包含Android的一些示例代碼。祝你好運! – Kaamel
謝謝,我知道它不可以通過API。這就是爲什麼我期待在Root或修改內核的情況下,它可能是可能的,並希望有人知道它。 – tcboy88
這個問題很舊,但對於三星設備,您可以訪問像紅色信號或ir信號(注4,注5,S6,S7)原始心率傳感器,請檢查傳感器擴展http://developer.samsung.com/galaxy/sensor-extension。
看看這裏:https://www.pubnub.com/blog/2015-09-17-tutorial-realtime-android-heart-rate-monitor-and-dashboard/ –
這很有趣,但它不是我需要的。我需要訪問真實Android心率傳感器上的RAW圖像數據,而不是相機。 – tcboy88