我目前正在开发一个Android项目,该项目必须从Google Fit API收集每日信息。我进行了很多搜索,但没有找到2个问题的答案:
非常感谢您
答案 0 :(得分:1)
第一点。 如果您通过适当的分段开始时间和结束时间以及存储桶和聚合功能形成数据读取请求,则可以检索每小时的数据存储桶。 下面是我用于检索任何给定开始日期和结束日期的每小时数据的代码。
fun getReadDataRequestBuilderAggregated(startDate: Date, endDate: Date): DataReadRequest? {
val cal = Calendar.getInstance()
cal.time = startDate.setDayStartTime()
var startTime = cal.timeInMillis
cal.time = endDate.setDayEndTime()
var endTime = cal.timeInMillis
return if (startTime>endTime) {
null
} else {
return DataReadRequest.Builder()
.aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED)
.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
.bucketByTime(1, TimeUnit.HOURS)
.enableServerQueries()
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS).build()
}
}
private fun Date.setDayEndTime(): Date {
val currentTime = Calendar.getInstance().apply {
time = this@setDayEndTime
}
currentTime.set(Calendar.HOUR_OF_DAY, 23)
currentTime.set(Calendar.MINUTE, 59)
currentTime.set(Calendar.SECOND, 59)
return currentTime.time
}
private fun Date.setDayStartTime(): Date {
val currentTime = Calendar.getInstance().apply {
time = this@setDayStartTime
}
currentTime.set(Calendar.HOUR_OF_DAY, 0)
currentTime.set(Calendar.MINUTE, 0)
currentTime.set(Calendar.SECOND, 0)
currentTime.set(Calendar.MILLISECOND,0)
return currentTime.time
}