2016-06-14 30 views
5

Bu yüzden, Google Fit'e bağlanan ve kullanıcı verilerini oldukça akıcı bir şekilde gösteren bir uygulama oluşturmaya çalışıyorum ve kullanıcının yaktığı kaloriyi bulmakta zorlanıyorum. Günde her bireysel aktivite. Tüm gün boyunca toplam kalori alabilirim ve her gün yapılan her etkinlik, her aktivite için yakılan kaloriyi değil.Google Fit API, etkinlik başına yakılan kalori alıyorum

GitHub'a bağlanma: https://github.com/drb56/FitTest Yalnızca java kodunu xml öğelerinden biri eklemedim. Ve Google Fit kodu FitTestFragment.java'da. Ben aşağı aşağıda bazı temel kodu yapıştırın edeceğiz:

İşte
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(); 

var ben özel bilgiler için DataReadRequest yapmak:

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"); 
      } 

İşte

google fit API istemcisi bağlanmak nerede Çıktıklarım, bazı faaliyetler ve harcanan kaloriler için ne gibi görünüyor:

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

Bu blogu, kalori yakılan toplam kalori ihtiyacı olan herkes için kontrol edin http://www.gadgetsaint.com/android/google-fit-steps-calories-android/#.WESRX6J97BJ – ASP

cevap

0

Fitness.HISTORY_API yerine Fitness.SESSIONS_API ile çalışmanız gerekir. Sessions, kullanıcıların bir fitness etkinliği gerçekleştirdikleri bir zaman aralığını temsil eder.

2

İstediğiniz kadar günlerce veri almak için bir döngüde bu kodu çalıştırabilir

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

Aşağıdaki kodu kullanarak her gün için çeşitli etkinlikler için kalori alabilirsiniz. Tüm faaliyetler için veri kovalar dönecektir ve bir özel Collection

bucket.getActivity(); 

dize

olarak Store'u o etkinlik adını döndürür Bu yöntemle kova etkinlik adını getirebilir ve gitmek iyidir. Umarım yardımcı olur! :)