android - 如何访问 Android 心率传感器原始数据? (反射光,不是心跳)

标签 android wear-os

心率传感器上的 android sdk 仅返回我不感兴趣的计算 bpm。

我需要访问 android 心率传感器原始数据,例如就反射值的强度而言会很大。 (因为基本上心率传感器使用 LED 并随时间测量反射率)

如果可能,访问由更大的图像传感器收集的原始图像。谢谢。

相关问题: Read underlying color/light data from Android Wear heart rate sensor?

最佳答案

如果可以选择 Google Fit,您可以使用 Google Fit 的传感器 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.");
                    }
                }
            });
}

希望这对您有所帮助。

关于android - 如何访问 Android 心率传感器原始数据? (反射光,不是心跳),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534659/

相关文章:

android - 有什么方法可以检测时钟是否是圆的?

android - 添加设置图标以切换表盘配置 (Android Wear)

android - 访问 android wear 数据层时出错

Android 房间分页不起作用

android - 关于最新支持设计库的Day night theme

android - Kotlin 中的 Firebase firestore 权限被拒绝

android - 模拟器中 Google Wear 上的语音识别器没有语音输入

android - 如何在Android Wear卡上设置图标

java - Android 后退按钮不返回到上一个 Activity

java - 是否可以在 Android 设备上使用 native 相机应用程序以编程方式拍照,而无需实际点击拍摄按钮?