Open codingjeremy opened 5 years ago
Hey, I have run into the same problem.
I have managed to overcome it by using deprecated methods from historical API sample:
return DataReadRequest.Builder() .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) .bucketByTime(1, TimeUnit.DAYS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .build()
Hope this will save someone's day.
Issue by ilyasdirin Tuesday May 14, 2019 at 08:11 GMT Originally opened as https://github.com/googlesamples/android-fit/issues/50
I'm developing a step counter with Google Fit. I tried to implement as it is defined in Google Fit docs. But the problem is that when I query step count it always returns empty dataset but when I query with readDailyTotal function it returns a dataset. I am not able to find what is the cause.
if (! GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(activity),
fitnessOptions)) { GoogleSignIn.requestPermissions( activity, // your activity REQUEST_CODE_GOOGLE_FIT_PERMISSIONS, GoogleSignIn.getLastSignedInAccount(activity), fitnessOptions ) } else { onSuccess.invoke() }
Fitness.getRecordingClient(context, client!!) .subscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener { onSuccess.invoke() } .addOnFailureListener { e -> onFail.invoke(e) }
// Setting a start and end date using a range of 1 week before this moment.
val cal = Calendar.getInstance()
val now = Date()
cal.time = now
val endTime = cal.timeInMillis
cal.add(Calendar.WEEK_OF_YEAR, -1)
val startTime = cal.timeInMillis
val dateFormat = DateFormat.getDateInstance() Log.i(TAG, "Range Start: " + dateFormat.format(startTime)) Log.i(TAG, "Range End: " + dateFormat.format(endTime))
val readRequest = DataReadRequest.Builder() // The data request can specify multiple data types to return, effectively // combining multiple data queries into one call. // In this example, it's very unlikely that the request is for several hundred // datapoints each consisting of a few steps and a timestamp. The more likely // scenario is wanting to see how many steps were walked per day, for 7 days. .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) // Analogous to a "Group By" in SQL, defines how data should be aggregated. // bucketByTime allows for a time span, whereas bucketBySession would allow // bucketing by "sessions", which would need to be defined in code. .bucketByTime(1, TimeUnit.DAYS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .enableServerQueries() .build() Fitness.getHistoryClient(context, client) .readData(readRequest) .addOnSuccessListener { dataReadResponse -> dumpDataSets(dataReadResponse.dataSets) onSuccess.invoke(dataReadResponse) } .addOnFailureListener { e -> onFail.invoke(e) } .addOnCompleteListener { task -> dumpDataSets(task.result!!.dataSets) onComplete.invoke(task) }