问题描述
我无法通过 google fit 返回任何与消耗的卡路里有关的数据。数据集从不包含任何数据点。 Google Fit 主屏幕显示 623 卡路里。我通过 LoseIt 应用输入了食物卡路里数据。
fun getStartTime(): Long {
val cal = Calendar.getInstance()
cal.time = Date()
val endTime = cal.timeInMillis
cal.add(Calendar.YEAR,-1)
return cal.timeInMillis
}
fun getEndTime(): Long {
val cal = Calendar.getInstance()
cal.time = Date()
val endTime = cal.timeInMillis
return cal.timeInMillis
}
fun getfitnessOptions(): fitnessOptions {
return fitnessOptions.builder()
.addDataType(
DataType.TYPE_NUTRITION,fitnessOptions.ACCESS_READ
)
.addDataType(
DataType.AGGREGATE_NUTRITION_SUMMARY,fitnessOptions.ACCESS_READ
)
.build()
}
suspend fun readCaloriesData(activity: Context): MutableList<HKData> {
val account = GoogleSignIn.getAccountForExtension(activity,getfitnessOptions())
val response =
fitness.getHistoryClient(activity,account)
.readData(
DataReadRequest.Builder()
.read(DataType.TYPE_NUTRITION)
.setTimeRange(getStartTime(),getEndTime(),TimeUnit.MILLISECONDS)
.build()
)
val result = withContext(dispatchers.IO) { Tasks.await(response) }
if (result != null) {
val data = result.getDataSets()
return dumpCalorieData(data)
} else {
Log.d(this.toString(),"fitness.getHistoryClient task Failed")
}
return mutablelistof()
}
fun dumpCalorieData(dataSets: MutableList<DataSet>): MutableList<HKData>
{
val dataArray: MutableList<HKData> = mutablelistof()
for(dataSet in dataSets) {
Log.i(
this.javaClass.canonicalName,"Data returned for Data type: " + dataSet.dataType.name
)
if (dataSet.dataPoints.count() < 1) { Log.i(
this.javaClass.canonicalName,"No data in dataset"
)}
//never gets to here
for (dp in dataSet.dataPoints) {
}
}
return dataArray
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)