HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据,或有延迟

HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据,或有延迟

cke_254.png

cke_1086.png

测试代码:

  1. 查询某一时间段内的步数数据如下
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")
    }
}
  1. 数据格式化
/**
 * 将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)
            )
        }
    }
}
  1. 打印日志格式
查询范围: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设备)

备注

  1. 查询到的步数当天统计值是实时的。
5 回复

尊敬的开发者您好:

目前步数统计是准实时开放的,但步数明细(每分钟的步数值)目前非实时。步数明细,因为数据点比较多,需要累计到一定数量时批量写入数据库,且当前底层架构不支持数据从计步模块内存读取 ,性能影响比较大。

更多关于HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据,或有延迟的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者您好,相关问题已经反馈给工作人员,稍后会再回复您,感谢您对华为开发者论坛的支持。

请问这个问题有解决方案吗?还是说根据官方文档的说明,目前步数同步的频率在手机上为10分钟,所以调用查询步数详细数据的接口,就无法立刻响应比较及时。

华为运动健康app和Google fit类似,但目前查询步数详细数据的接口还没有做到能够实时查询,这是性能方面的考虑吗,有没有别的解决方案?

在HarmonyOS鸿蒙Next中查询步数明细数据时,如果出现查询不到数据或数据延迟的情况,可能是由于以下原因:

  1. 数据同步问题:步数数据可能尚未从设备同步到系统中。确保设备与系统之间的数据同步已完成。

  2. 权限问题:应用可能没有获取步数数据的权限。检查应用是否已获得必要的健康数据访问权限。

  3. 系统缓存:系统缓存可能导致数据延迟。尝试清除缓存或重启设备以刷新数据。

  4. API调用问题:查询步数数据的API调用可能存在问题。确保API调用正确,并且参数设置无误。

  5. 设备传感器问题:设备的步数传感器可能出现故障或未正常工作。检查设备传感器状态,确保其正常运行。

  6. 系统版本问题:当前系统版本可能存在已知问题,导致步数数据查询异常。检查系统更新,确保使用最新版本。

  7. 数据存储问题:步数数据可能未正确存储在系统中。检查数据存储路径和格式,确保数据完整。

  8. 网络问题:如果步数数据需要通过网络同步,网络连接不稳定可能导致数据延迟。确保网络连接正常。

以上是可能导致HarmonyOS鸿蒙Next中查询步数明细数据时查询不到数据或数据延迟的常见原因。

在HarmonyOS鸿蒙Next中查询步数明细数据时,若出现查询不到数据或延迟,可能原因包括:

  1. 传感器数据未及时同步,建议检查设备网络连接;
  2. 步数数据未更新,尝试重启设备或重新授权健康应用;
  3. 系统缓存问题,可清除健康应用缓存后重试;
  4. 系统版本或应用版本过旧,建议更新至最新版本。

若问题持续,建议联系华为技术支持。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!