2016-04-16 90 views
1

フィットネス履歴Apiから毎日のデータをメソッドreadDailyTotalで読み取ろうとしています。私はステップを読んで、サイクリングして走りたい。私は成功したステップを実装しましたが、私はサイクリングと実行のための毎日の結果を得ることができません。readDailyTotalを使用してGoogle Fit History APIからサイクリングデータとランニングデータを読み取る方法

これは私が手順を取得するために使用しているコードであり、それは動作します:

PendingResult<DailyTotalResult> resultSteps 
       = Fitness.HistoryApi.readDailyTotal(mGoogleApiClient, DataType.TYPE_STEP_COUNT_DELTA); 

resultSteps.setResultCallback(new ResultCallback<DailyTotalResult>() { 
     @Override 
     public void onResult(@NonNull DailyTotalResult dailyTotalResult) { 
      if (dailyTotalResult.getStatus().isSuccess()) { 
      DataSet dataSet = dailyTotalResult.getTotal(); 

      for (DataPoint dp : dataSet.getDataPoints()) { 
       Log.i(TAG, "DataType: " + dp.getDataType().getName()); 
       for (Field field : dp.getDataType().getFields()) { 
        Log.i(TAG, "\tField: " + field.getName() + 
          " Value: " + dp.getValue(field)); 
        Log.i(TAG, "Field: " + field.getName()); 
        Log.i(TAG, "Field: " + field.getFormat()); 
        Log.i(TAG, "Field: " + dp.getDataType().getName()); 
        Log.i(TAG, "---------------------------------"); 
       } 
       } 
      } 
     } 
}); 

私は同じコードを使用しようとしたが、サイクリングのために:

PendingResult<DailyTotalResult> resultCycling 
        = Fitness.HistoryApi.readDailyTotal(mGoogleApiClient, DataType.TYPE_CYCLING_WHEEL_RPM); 

はまた、私は別のデータ型を使用しようとしました以下のようになります。 TYPE_CYCLING_PEDALING_CADENCE,TYPE_CYCLING_PEDALING_CUMULATIVE,TYPE_CYCLING_WHEEL_REVOLUTION

のようになります。私はFitness Fitの全文も読んでいて、私はそれをやる方法が分からなかった。

私の質問は、サイクリングとランニングのために毎日のデータを取得する方法です。もしあなたがそれについて私にいくつかのスニペットを与えることができれば、私は感謝するでしょう。

感謝:)

+0

サイクリングデータがどのようにキャプチャされると思いますか?標準のFITアプリケーションはこのデータを収集しません。私は、このデータに必要な速度とケイデンスセンサーの直接サポートはないと思います。このデータを収集するサードパーティのアプリがあります。 – Ifor

答えて

0

は、私は、サイクルペダリングデータについてはよく分からないが、あなたは、このようなバイク型のデータを取得することができます。

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

    PendingResult<DataReadResult> pendingResult = Fitness.HistoryApi.readData(client, readRequest); 

    DataReadResult dataReadResult = pendingResult.await(60, TimeUnit.SECONDS); 
    Log.d(TAG, "Retrieved results: " + dataReadResult); 
    if (dataReadResult.getStatus().isSuccess()) { 
     if (dataReadResult.getBuckets().size() > 0) { 

      for (Bucket bucket : dataReadResult.getBuckets()) { 

       List<DataSet> dataSets = bucket.getDataSets(); 
       Log.d(TAG, "getFitHistoryByTime: Activity " + bucket.getActivity()); 
       Log.d(TAG, "getFitHistoryByTime: Start - End " 
         + dateFormat.format(bucket.getStartTime(TimeUnit.MILLISECONDS)) 
         + " - " 
         + dateFormat.format(bucket.getEndTime(TimeUnit.MILLISECONDS))); 
       for (DataSet dataSet : dataSets) { 
        Log.i(TAG, "Data returned for Data type: " + dataSet.getDataType().getName()); 
        for (DataPoint dp : dataSet.getDataPoints()) { 

         if (dp.getDataType().equals(DataType.AGGREGATE_ACTIVITY_SUMMARY)) { 
          boolean activityToAdd = false; 
          ActivitiesData activitiesData = new ActivitiesData(); 
          for (Field field : dp.getDataType().getFields()) { 
           if (Field.FIELD_ACTIVITY.equals(field)) { 
            int activityType = dp.getValue(field).asInt(); 
            Log.d(TAG, "getFitHistoryByTime: activity type " + activityType); 
            if (FitnessActivities.getName(activityType).equals("biking")) { 
             activityToAdd = true; 
             Log.d(TAG, "getFitHistoryByTime: added activity: " + FitnessActivities.getName(activityType)); 

            } 
           } 

           if (Field.FIELD_DURATION.equals(field)) { 
            long duration = dp.getValue(field).asInt(); 
           } 
          } 
         } 
        } 
       } 


      ..... 

おそらく、あなたは、このコードスニペットをもとにアイデアを得ます。 また、この質問をGoogle Fit G+ communityに投稿してください。

大切にしてください。 MB

関連する問題