HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据,或有延迟
HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据,或有延迟
测试代码:
- 查询某一时间段内的步数数据如下
fun onAccessDurationSteps(view: View) {
val dataController = HuaweiHiHealth.getDataController(this)
// 步骤1:构造查询条件时间区间:开始、结束时间。
val dateFormat = SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
val startDate = Calendar.getInstance().apply { add(Calendar.HOUR_OF_DAY, -1) }.time
val endDate = Date()
Log.d(TAG, "查询范围:$startDate - $endDate")
// 步骤2:构造查询条件的查询对象。
// 此处填写的DataType.DT_CONTINUOUS_STEPS_DELTA,可用来查询用户的步数健康数据。
val readOptions = ReadOptions.Builder().read(DataType.DT_CONTINUOUS_STEPS_DELTA)
.setTimeRange(startDate.time, endDate.time, TimeUnit.MILLISECONDS)
.build()
// 步骤3:使用指定的条件查询对象,调用read接口查询数据集。
val readReplyTask = dataController.read(readOptions)
// 步骤4:调用read接口查询采样集数据是异步操作,需要设置成功或失败的Listener,用来监听数据查询成功或失败。
readReplyTask.addOnSuccessListener { readReply ->
logger("Success read a SampleSets from HMS core")
showSampleSet(readReply.getSampleSet(DataType.DT_CONTINUOUS_STEPS_DELTA))
}.addOnFailureListener { e ->
val errorCode = e.message
val errorMsg = HiHealthStatusCodes.getStatusCodeMessage(errorCode!!.toInt())
logger("$errorCode: $errorMsg")
}
}
- 数据格式化
/**
* 将SampleSet对象中的SamplePoint打印输出
* @param sampleSet 采样集
*/
private fun showSampleSet(sampleSet: SampleSet) {
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
for (samplePoint in sampleSet.samplePoints) {
logger("Sample point type: " + samplePoint.dataType.name)
logger("Start: " + dateFormat.format(Date(samplePoint.getStartTime(TimeUnit.MILLISECONDS))))
logger("End: " + dateFormat.format(Date(samplePoint.getEndTime(TimeUnit.MILLISECONDS))))
for (field in samplePoint.dataType.fields) {
logger(
"Field: " + field.name.toString() + " Value: " + samplePoint.getFieldValue(field)
)
}
}
}
- 打印日志格式
查询范围:Wed Jun 08 11:26:05 GMT+08:00 2022 - Wed Jun 08 12:26:05 GMT+08:00 2022
Success read a SampleSets from HMS core
Sample point type: com.huawei.continuous.steps.delta
Start: 2022-06-08 11:28:00
End: 2022-06-08 11:29:00
Field: steps_delta Value: 34
Sample point type: com.huawei.continuous.steps.delta
Start: 2022-06-08 11:29:00
End: 2022-06-08 11:30:00
Field: steps_delta Value: 33
求助问题:
1. 新增步数无法获取
新增步数无法实时获取,需要通过如下操作才能查询成功: a. 在健康 App 首页的点击步数卡片打开步数数据页面; b. 在运动健康App的“我的 > 设置 > 手动同步数据”中手动触发数据同步到云。(Mate 30设备)
2. 新增步数获取不完整
健康 App 中的步数数据的记录范围是一分钟,查询到的新增步数(一分钟)比健康 App 中记录的一分钟内的步数要小。
3. 新增步数无法及时获取(P30 pro可以读取到步数,但存在延迟,延迟时间从几秒到十几秒不等 (P30 pro设备)
备注
- 查询到的步数当天统计值是实时的。
尊敬的开发者您好:
目前步数统计是准实时开放的,但步数明细(每分钟的步数值)目前非实时。步数明细,因为数据点比较多,需要累计到一定数量时批量写入数据库,且当前底层架构不支持数据从计步模块内存读取 ,性能影响比较大。
更多关于HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据,或有延迟的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
开发者您好,相关问题已经反馈给工作人员,稍后会再回复您,感谢您对华为开发者论坛的支持。
请问这个问题有解决方案吗?还是说根据官方文档的说明,目前步数同步的频率在手机上为10分钟,所以调用查询步数详细数据的接口,就无法立刻响应比较及时。
华为运动健康app和Google fit类似,但目前查询步数详细数据的接口还没有做到能够实时查询,这是性能方面的考虑吗,有没有别的解决方案?
在HarmonyOS鸿蒙Next中查询步数明细数据时,如果出现查询不到数据或数据延迟的情况,可能是由于以下原因:
-
数据同步问题:步数数据可能尚未从设备同步到系统中。确保设备与系统之间的数据同步已完成。
-
权限问题:应用可能没有获取步数数据的权限。检查应用是否已获得必要的健康数据访问权限。
-
系统缓存:系统缓存可能导致数据延迟。尝试清除缓存或重启设备以刷新数据。
-
API调用问题:查询步数数据的API调用可能存在问题。确保API调用正确,并且参数设置无误。
-
设备传感器问题:设备的步数传感器可能出现故障或未正常工作。检查设备传感器状态,确保其正常运行。
-
系统版本问题:当前系统版本可能存在已知问题,导致步数数据查询异常。检查系统更新,确保使用最新版本。
-
数据存储问题:步数数据可能未正确存储在系统中。检查数据存储路径和格式,确保数据完整。
-
网络问题:如果步数数据需要通过网络同步,网络连接不稳定可能导致数据延迟。确保网络连接正常。
以上是可能导致HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据或数据延迟的常见原因。
在HarmonyOS鸿蒙Next中查询步数明细数据时,若出现查询不到数据或延迟,可能原因包括:
- 传感器数据未及时同步,建议检查设备网络连接;
- 步数数据未更新,尝试重启设备或重新授权健康应用;
- 系统缓存问题,可清除健康应用缓存后重试;
- 系统版本或应用版本过旧,建议更新至最新版本。
若问题持续,建议联系华为技术支持。