首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取Android心率传感器的原始数据?(反射的光,而不是心跳)

如何获取Android心率传感器的原始数据?(反射的光,而不是心跳)
EN

Stack Overflow用户
提问于 2016-05-31 07:09:43
回答 2查看 4.3K关注 0票数 13

心率传感器上的android sdk只返回计算出的bpm,我对此并不感兴趣。

我需要获取android心率传感器的原始数据,例如,在反映值的强度方面会很好。(因为基本上心率传感器使用led并测量随时间变化的反射率)

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

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

EN

回答 2

Stack Overflow用户

发布于 2016-06-12 02:09:57

如果Google Fit是一个选项,您可以使用Google Fit的Sensor API来获取原始心跳数据。参见Google Fit Guide for details

代码语言:javascript
复制
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.");
                    }
                }
            });
}

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2016-12-10 00:22:10

这个问题是旧的,但对于三星设备,您可以访问原始心率传感器,如红色信号或ir信号(注4,注5,S6,S7),请检查传感器扩展http://developer.samsung.com/galaxy/sensor-extension

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37534659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档