2016-06-14 5 views
5

Google 피트니스에 연결하는 앱을 만들려고 노력 중이며 사용자가 자신의 데이터를 간소화 된 방식으로 보여주고 사용자가 구운 칼로리를 찾는 데 어려움을 겪고 있습니다. 하루에 각각의 개별 활동. 나는 하루 종일 총 칼로리를 얻을 수 있고, 사용자가 매일 한 각 활동을 볼 수는 있지만 각 활동에 소모 된 칼로리는 얻을 수 없습니다.구글 맞춤 API, 활동 당 칼로리 소모

GitHub에 대한 링크 : https://github.com/drb56/FitTest xml 항목이 아닌 java 코드 만 추가했습니다. Google Fit 코드는 FitTestFragment.java에 있습니다. 나는 아래로 아래의 몇 가지 핵심 코드를 붙여 넣을 수 있습니다 :

여기
mClient = new GoogleApiClient.Builder(getContext()) 
      .addApi(Fitness.HISTORY_API) 
      .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ)) 
      .addConnectionCallbacks(this) 
      .enableAutoManage(getActivity(), 0, new GoogleApiClient.OnConnectionFailedListener() { 
      @Override 
      public void onConnectionFailed(ConnectionResult result) { 
       Log.i("MyApp", "Google Play services connection failed. Cause: " + 
         result.toString()); 
     }}) 
     .build(); 

이야 내가 특정 정보에 대한 DataReadRequest합니다 :

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

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


    if (dataReadResult.getBuckets().size() > 0) 
    { 
     Log.i("MyApp", "Number of returned buckets of DataSets is: " 
       + dataReadResult.getBuckets().size()); 
     for (Bucket bucket : dataReadResult.getBuckets()) 
     { 
      List<DataSet> dataSets = bucket.getDataSets(); 
        for (DataSet dataSet : dataSets) 
        { 
         dumpDataSet(dataSet); 
        } 
       } 
      } 
      else 
      { 
       Log.i("MyApp", "No data"); 
      } 

여기

을 나는 구글에 맞는 API 클라이언트에 연결하는 곳입니다 여기에 일부 활동 및 소비 된 칼로리에 대한 내 결과물이 있습니다 :

Data point: 
    Type: com.google.calories.expended 
    Date: 06/09/2016 
    Start: 2:58:13 PM 
    End: 2:58:13 PM 
    Field: calories Value: 2555.9749 
Data point: 
    Type: com.google.activity.summary 
    Date: 06/09/2016 
    Start: 2:58:13 PM 
    End: 2:58:13 PM 
    Field: activity Value: 3 
    Field: duration Value: 76513626 
    Field: num_segments Value: 17 
Data point: 
    Type: com.google.activity.summary 
    Date: 06/09/2016 
    Start: 4:13:58 PM 
    End: 12:41:04 PM 
    Field: activity Value: 7 
    Field: duration Value: 4553146 
    Field: num_segments Value: 17 
+0

총 칼로리가 필요한 사람을 위해이 블로그를 확인하십시오. http://www.gadgetsaint.com/android/google-fit-steps-calories-android/#.WESRX6J97BJ – ASP

답변

0

Fitness.HISTORY_API 대신 Fitness.SESSIONS_API를 사용해야합니다. Sessions은 사용자가 피트니스 활동을 수행하는 시간 간격을 나타냅니다.

2

당신은 당신이 원하는만큼 일에 대한 데이터를 얻을 당신은 루프에서이 코드를 실행할 수 있습니다

DataReadRequest readRequest = new DataReadRequest.Builder() 
      .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED) 
      .bucketByActivityType(1, TimeUnit.SECONDS) 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .build(); 

다음 코드를 사용하여 매일 다양한 활동에 대한 칼로리를 얻을 수 있습니다. 그것은 모든 활동에 대한 데이터 버킷을 반환하고 사용자 정의 컬렉션에

bucket.getActivity(); 

문자열

으로 저장을 활동 이름을 반환이 방법으로 버킷에서 활동 이름을 가져올 수 있습니다 당신이 갈 수 있습니다. 희망이 도움이됩니다! :)