Retrieve recent walks from the Google Fit Android API -


currently i'm trying develop native android application retrieves information history_api. i'm able retrieve calories, daily steps , active time. thinking taking next level , try view different type of activities retrieved history api using code below:

    protected void doinbackground(void... params) {         datareadrequest readrequest = queryfitnessdata();          datareadresult datareadresult =                 fitness.historyapi.readdata(mgoogleapiclient, readrequest).await(1, timeunit.minutes);          getdata(datareadresult);         return null;    } 

this function defines request:

    private datareadrequest queryfitnessdata() {         calendar cal = calendar.getinstance();         date = new date();         cal.settime(now);         long endtime = cal.gettimeinmillis();         cal.add(calendar.week_of_month, -1);         long starttime = cal.gettimeinmillis();          datasource activity_segment = new datasource.builder()                 .setdatatype(datatype.type_activity_segment)                 .settype(datasource.type_derived)                 .build();          datareadrequest readrequest = new datareadrequest.builder()                 .aggregate(activity_segment, datatype.aggregate_activity_summary)                 .bucketbytime(5, timeunit.minutes)                 .settimerange(starttime, endtime, timeunit.milliseconds)                 .build();          return readrequest;     } 

and seemed work fine in afternoon, when working on further now, isn't displaying views longer. looking in log files showed buckets returned of type 'in_vehicle'. makes sense why code below doesn't add views array.

    private void getdata(datareadresult result) {         if (result.getbuckets().size() > 0) {             log.i(tag, "bucket size: " + result.getbuckets().size());             for(bucket bucket : result.getbuckets()) {                 long activetime = bucket.getendtime(timeunit.minutes) - bucket.getstarttime(timeunit.minutes);                  log.i(tag, bucket.getactivity());                  switch (bucket.getactivity()) {                     case "walking":                         log.i(tag, "adding walking card");                         activitydata.add(new customactivitycard("walking","place, 27 juli",long.tostring(activetime) + " minutes","5 kilometers","2340 steps","1340 calories"));                         break;                     case "running":                         log.i(tag, "adding running card");                         activitydata.add(new customactivitycard("running","place, 27 juli",long.tostring(activetime) + " minutes","5 kilometers","2340 steps","1340 calories"));                         break;                     case "biking":                         log.i(tag, "adding cycling card");                         activitydata.add(new customactivitycard("cycling","place, 27 juli",long.tostring(activetime) + " minutes","5 kilometers","2340 steps","1340 calories"));                         break;                 }             }         }     } 

i can't understand why code displaying walking , running activities afternoon, , returns activities while driving. 1 possible solution can think of app isn't subscribed of datatypes. questions are:

  1. does app need subscribed able retrieve activities (e.g. walking)?
  2. how should retrieve activities performed on day or within week?

i'm not sure yet if subscriptions suggested in comments made difference, 1 thing helped in order solution changing code piece below:

datareadrequest readrequest = new datareadrequest.builder()     .aggregate(activity_segment, datatype.aggregate_activity_summary)     .bucketbytime(5, timeunit.minutes)     .settimerange(starttime, endtime, timeunit.milliseconds)     .build(); 

to datarequest below, made me able retrieve walking activities of current day

datareadrequest readrequest = new datareadrequest.builder()     .aggregate(datatype.type_activity_segment, datatype.aggregate_activity_summary)     .bucketbyactivitysegment(7, timeunit.minutes)     .settimerange(starttime, endtime, timeunit.milliseconds)     .build(); 

hope others well!


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -