Google Fit不给出步数

Google Fit does not give step count

我正在尝试从 google 适合 Android 应用程序中获取步数。选择 google 帐户后,应用成功调用 onConnected()。我也为 Google API Console 配置了正确的 SHA1 指纹和包名。所以控制台不会有任何错误。

然而,它从来没有被击中 onDataPoint() [这曾经有效]。

我在onConnected后面粘贴代码。

DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
        .setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
        .setDataSourceTypes(DataSource.TYPE_RAW)
        .build();

ResultCallback<DataSourcesResult> dataSourcesResultCallback = new ResultCallback<DataSourcesResult>() {
    @Override
    public void onResult(DataSourcesResult dataSourcesResult) {
        for (DataSource dataSource : dataSourcesResult.getDataSources()) {
            if (DataType.TYPE_STEP_COUNT_CUMULATIVE.equals(dataSource.getDataType())) {

                registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE);

            }
        }
    }
};

Fitness.SensorsApi.findDataSources(mApiClient, dataSourceRequest)
        .setResultCallback(dataSourcesResultCallback);

然后

private void registerFitnessDataListener(DataSource dataSource, DataType dataType) {
Log.e("GoogleFit", "registerFitnessDataListener");
SensorRequest request = new SensorRequest.Builder()
    .setDataSource(dataSource)
    .setDataType(dataType)
    .setSamplingRate(3, TimeUnit.SECONDS)
    .build();


Fitness.SensorsApi.add(mApiClient, request, this)
    .setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(Status status) {
            if (status.isSuccess()) {
                Log.e("GoogleFit", "SensorApi successfully added");
            }
        }
    });
}

有人可以帮我解释为什么它在 onDataPoint() 方法中没有被击中吗??

我在构建 DataSourcesRequest 时使用 DataSource.TYPE_DERIVED 解决了这个问题。我认为发生这种情况是因为我的测试设备 Nexus 7 具有软件传感器而不是硬件传感器。结果,我无法获得 TYPE_STEP_COUNT_DELTA.

的结果