使用Google fit从Android Wear获取心率

问题描述 投票:1回答:1

我正在开发一款适用于Android的应用程序(仅适用于智能手机而非佩戴),我希望使用智能手表(华为手表f.e.)中的googleApiClient(Google Fit)获取心率。我尝试使用传感器API,但在Google Fit API中未将其列为DataSource

REQUEST_INTERVAL = 5;  
Fitness.SensorsApi.findDataSources(client, new DataSourcesRequest.Builder()
                .setDataTypes(DataType.TYPE_LOCATION_SAMPLE,
                        DataType.TYPE_STEP_COUNT_CUMULATIVE,
                        DataType.TYPE_DISTANCE_DELTA,
                        DataType.TYPE_HEART_RATE_BPM)
                .setDataSourceTypes(DataSource.TYPE_RAW, DataSource.TYPE_DERIVED)
                .build())
                .setResultCallback(new ResultCallback<DataSourcesResult>() {
                    @Override
                    public void onResult(DataSourcesResult dataSourcesResult) {

                        for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                            // There isn't heart rate source here
                            final DataType dataType = dataSource.getDataType();
                            Fitness.SensorsApi.add(client,
                                    new SensorRequest.Builder()
                                            .setDataSource(dataSource)
                                            .setDataType(dataType)
                                            .setSamplingRate(REQUEST_INTERVAL, TimeUnit.SECONDS)
                                            .build(),
                                    listener)
                                    .setResultCallback(new ResultCallback<Status>() {
                                        @Override
                                        public void onResult(Status status) {
                                            ...
                                        }
                                    });
                            }
                        }
                    }
                });

其他数据(如步骤,位置和距离)来了。我的客户:

googleApiClient = new GoogleApiClient.Builder(activity)
                .addApi(Plus.API)
                .addApi(Fitness.RECORDING_API)
                .addApi(Fitness.HISTORY_API)
                .addApi(Fitness.SENSORS_API)
                .addApi(LocationServices.API)
                .addApi(Fitness.BLE_API)
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .addScope(Plus.SCOPE_PLUS_PROFILE)
                .addScope(new Scope(Scopes.PROFILE))
                .addScope(new Scope(Scopes.PLUS_LOGIN))
                .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ))
                .addScope(new Scope(Scopes.FITNESS_BODY_READ))
                .addScope(new Scope(Scopes.FITNESS_LOCATION_READ))
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

我花了几个小时阅读文档和答案,但找不到解决方案。也许我做错了什么。来自智能手机的数据来了,但从磨损中却没有。 Google fit适合佩戴。

感谢您的回答!

android wear-os google-fit
1个回答
-1
投票

documentation所述:

Google Fit支持移动设备上的传感器和与设备配对的蓝牙低功耗传感器。 Google Fit允许开发人员实施对其他传感器的支持,并将其作为Android应用中的软件传感器公开。 Google Fit支持的传感器可作为数据源对象用于Android应用。

您可以使用DataSource.getDevice方法获取有关数据源设备的信息。设备信息可用于区分不同设备上的类似传感器,显示从传感器到用户的设备信息,或根据设备不同地处理数据。例如,您可能有兴趣在可穿戴设备上专门从传感器读取数据,但不能从手机上相同类型的传感器读取数据。

你可以查看这个相关的SO线程:Android: How to get Google Fit data from Wearable device?

© www.soinside.com 2019 - 2024. All rights reserved.