我无法同时获得DISTANCE_DELTA和STEP_COUNT_DELTA

时间:2016-04-02 20:44:14

标签: android google-fit

目前使用Google Fit API并在使用Sensors API时遇到一些问题。我尝试将DISTANCE_DELTA和STEP_COUNT_DELTA放在一起。但是当我跑步时,我会步伐或只有距离。不是两个

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

                    datasources.clear();
                    listeners.clear();
                    for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                        final DataType dataType = dataSource.getDataType();
                        if (    dataType.equals(DataType.TYPE_LOCATION_SAMPLE) ||
                                dataType.equals(DataType.TYPE_STEP_COUNT_DELTA)||
                                dataType.equals(DataType.TYPE_DISTANCE_DELTA)) {

                            final OnDataPointListener listener = new OnDataPointListener() {
                                @Override
                                public void onDataPoint(DataPoint dataPoint) {
                                    String msg = "onDataPoint: ";
                                    for (Field field : dataPoint.getDataType().getFields()) {
                                        Value value = dataPoint.getValue(field);
                                        msg += field + "=" + value + ", ";
                                        Log.d(TAG, msg);
                                    }

                                }
                            };
                            Fitness.SensorsApi.add(client,
                                    new SensorRequest.Builder()
                                            .setDataSource(dataSource)
                                            .setDataType(dataType)
                                            .setSamplingRate(5, TimeUnit.SECONDS)
                                            .build(),
                                    listener)
                                    .setResultCallback(new ResultCallback<Status>() {
                                        @Override
                                        public void onResult(Status status) {
                                            if (status.isSuccess()) {
                                                listeners.add(listener);
                                                Log.d(TAG, "Listener for " + dataType.getName() + " registered");

                                            } else {
                                                Log.e(TAG, "Failed to register listener for " + dataType.getName());
                                            }
                                        }
                                    });
                        }
                    }
                    datasourcesListener.onDatasourcesListed();
                }
            });

0 个答案:

没有答案