I cannot google fit to return any data pertaining to consumed calories. The datasets never contain any data points. Google fit home screen shows 623 calories. I entered the food calorie data via the LoseIt app.
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
}
from How to get google fit nutrition data
No comments:
Post a Comment