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:
- does app need subscribed able retrieve activities (e.g. walking)?
- 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
Post a Comment