我正在尝试使用Huawei Health Kit从我的应用程序发送步骤数据。步骤的插入似乎很好,但是在Huawei Health应用程序上看不到发送的值。正常吗?
我已经检查了current documentationsample code中推荐的所有内容。

  • 用户已通过身份验证,请求范围权限Scopes.HEALTHKIT_STEP_BOTH
  • 根据this page
  • 在控制台上正确配置了运行状况工具包
  • 设备上的Health应用程序是最新的(版本10.1.2.553)
  • 最新的SDK版本集成为:implementation "com.huawei.hms:health:5.0.3.300"implementation "com.huawei.hms:hwid:5.0.3.301"

  • 以下是我用来发送测试值的代码:
        // create DataCollector
        val dataCollector = DataCollector.Builder()
            .setPackageName(context)
            .setDataCollectorName("My awesome device")
            .setDataType(DataType.DT_CONTINUOUS_STEPS_DELTA)
            .setDataStreamName("STEPS_DELTA")
            .setDataGenerateType(DataCollector.DATA_TYPE_RAW)
            .build()
    
        // create a sample set and add the sampleSet into the collector
        val sampleSet = SampleSet.create(dataCollector)
    
        val dateFormat = SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
        val start = dateFormat.parse("2020-10-07 09:00:00").time
        val end = dateFormat.parse("2020-10-07 10:00:00").time
    
        val samplePoint: SamplePoint = sampleSet.createSamplePoint()
            .setTimeInterval(start, end, TimeUnit.MILLISECONDS).apply {
                getFieldValue(Field.FIELD_STEPS_DELTA).setIntValue(5000)
            }
        sampleSet.addSample(samplePoint)
    
        // retrieve DataController and insert the built data
        val hiHealthOptions = HiHealthOptions.builder()
            .addDataType(
                DataType.DT_CONTINUOUS_STEPS_DELTA,
                HiHealthOptions.ACCESS_WRITE
            )
            .addDataType(
                DataType.DT_CONTINUOUS_STEPS_DELTA,
                HiHealthOptions.ACCESS_READ
            )
            .build()
        val signInHuaweiId = HuaweiIdAuthManager.getExtendedAuthResult(hiHealthOptions)
        val dataController = HuaweiHiHealth.getDataController(context, signInHuaweiId)
    
        val updateOptions = UpdateOptions.Builder()
            .setTimeInterval(start, end, TimeUnit.MILLISECONDS)
            .setSampleSet(sampleSet)
            .build()
    
        // update task
        dataController.update(updateOptions).apply {
            addOnSuccessListener {
                Log.d(TAG, "onSuccess update")
            }
            addOnFailureListener { error ->
                Log.e(TAG, "onFailure update, error: $error")
            }
        }
    
    
    我清楚地看到该值已更新,因为在Logcat中它会打印

    我还使用read上的DataController方法读取了值,并且能够检索到我的数据。
    我问自己的问题是:
  • 这些数据写在哪里:本地数据库和/或Huawei Health Cloud?
  • 我是否需要做一些事情来要求在Health Application上同步此数据?
  • 最佳答案


    既可以在本地数据库中,也可以在华为健康云中。

    当前,Health Kit不支持将数据直接写入Health应用程序和服务。它将在2020年10月下旬支持读取健身和健康数据,并将在2021年1月支持将数据直接写入Health应用程序和服务。

    关于android - 从Health Kit发送步骤后,步骤在Huawei Health应用程序上不可见,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64259344/

    10-11 00:01