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.
的结果
我正在尝试从 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.
的结果