2016-08-05 12 views
0

ウォーキング/ランニング/サイクリングは、Google Appsがインストールされたアンドロイド携帯電話に自動的に記録されるアクティビティの例です。私はgoogle fit apiから集計されたアクティビティの概要が表示されないように自動的に記録されたアクティビティ

DataReadRequest readRequest = new DataReadRequest.Builder() 
    .aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY) 
    .bucketBySession(1, TimeUnit.MINUTES) 
    .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
    .build(); 

DataReadResult dataReadResult = Fitness.HistoryApi 
    .readData(googleApiClient, readRequest) 
    .await(1, TimeUnit.MINUTES); 

このクエリの結果は、その活動の開始時間と持続時間と活動のリストを提供しています...次のクエリを持つAndroid用フィットAPIからこれらの活動を取得しようとしてきました。これはまさに私が期待していることですが、何らかの理由でGoogle適合アプリケーションによって自動的に記録されたデータを返さないのです。それだけでこれらの条件のいずれかに該当項目を返すようだ:

  • 活動を手動でGoogleの適合インターフェースから記録されたの
  • 「セッション」の歴史を使用して
  • アクティビティは手動で追加されたセッションのAPIを用いて記録しましたAPI(これをテストしたが、これは私の仮定ではありませんでした)

質問

は、誰もAでありGoogleのアプリケーションに自動的に記録されるデータを取得するためにクエリを変更する必要があるかもしれません。この特定のデータは使用できない場合があります(自動的に記録された手順を得ることができますので奇妙です)。

答えて

1

受動的にデータを保存するサブスクリプションをセットアップしましたか?方法は次のとおりです。

Fitness.RecordingApi.subscribe(mClient, DataType.TYPE_ACTIVITY_SEGMENT) 
    .setResultCallback(new ResultCallback<Status>() { 
     @Override 
     public void onResult(Status status) { 
      if (status.isSuccess()) { 
       if (status.getStatusCode() 
         == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) { 
        Log.i(TAG, "Existing subscription for activity detected."); 
       } else { 
        Log.i(TAG, "Successfully subscribed!"); 
       } 
      } else { 
       Log.i(TAG, "There was a problem subscribing."); 
      } 
     } 
}); 
+0

ええと私はそれを試しましたが、何らかの理由で私はまだデータを取得できません。私が前提にしたのは、私が起動しているポイントから走行中/自転車のデータを取得するということでした。 – justyn

0

アクティビティセグメントのデータが正常に取得されます。私の読書要求はあなたのものとは異なるので、私はあなたのものをコピーし、1週間分のデータを読んで、データセットを受け取りませんでした。この1週間で私は手動でデータセッションを挿入していません。私の信念は、bucketBySessionがあなたの問題だということです。私は(私のために1週間)3回の試験、時間範囲を想定して説明それぞれDataReadRequestも設定されているを実行した:

  1. read(DataType.TYPE_ACTIVITY_SEGMENT)。集計もバケットもありません。 結果:良好なデータです。
  2. aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)bucketBySession(1, TimeUnit.MINUTES)結果:データセットまたはバケットがありません。
  3. aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)bucketByTime(1, TimeUnit.DAYS)である。 結果:私の意見では良いデータ

bucketBySession documentationが、それは排他的にSessionの一部であるデータを返すということは非常に明確ではありませんが、それは私の3回の試験の結果だけでなく、あなたを説明しているようですあなたが気づいた条件のリスト。

ノート Google Fitアプリがインストールされていて、そうでない場合は、この同じデータが自動的に記録/購読されるかどうかはわかりません。

関連する問題