私はAndroidアプリ内でGoogleからステップカウントを取得しようとしています。 Googleアカウントを選択すると、onConnected()
にアプリが正常に呼び出されます。 Google APIコンソールに正しいSHA1フィンガープリントとパッケージ名を設定しました。したがって、コンソールには何も問題はありません。Google Fitはステップカウントを与えません
しかし、これは決して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()
メソッドの内部で打たれていない理由で私を助けることはできますか?
私のdataSourcesResultCallbackがDataSourceResult {status = Status {statusCode = SUCCESS、resolution = null}、data sets = []}を返していることがわかりました。しかし、決して(データソースdataSource:dataSourcesResult.getDataSources()){} forループ – Dchaser88
あなたの 'onResult(DataSourcesResult dataSourcesResult)'の中にログを入れてみましたか?それが実際にそこに着きますか?または 'dataSourcesResult.getDataSources()'の数をチェックしますか? –
こんにちは、返信いただきありがとうございます。 DataSourcesRequestを構築するときにDataSource.TYPE_DERIVEDを使用して解決しました。 – Dchaser88