1

我正在尝试使用华为健康套件从我的应用程序发送步数数据。步骤的插入似乎效果很好,但我在华为健康应用程序上看不到发送的值。正常吗?

我已经检查了当前文档示例代码中推荐的所有内容。

  • 用户通过身份验证请求范围权限Scopes.HEALTHKIT_STEP_BOTH
  • 根据此页面在控制台上正确配置了 Health kit
  • 设备上的 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我还使用on 方法读取了值,DataController并且能够检索我的数据。

我问自己的问题是:

  • 这些数据写在哪里:本地数据库和/或华为健康云?
  • 我需要做一些事情来询问健康应用程序上的这些数据的同步吗?
4

1 回答 1

0

这些数据写在哪里:本地数据库和/或华为健康云?

在本地数据库和华为健康云中。

我需要做一些事情来询问健康应用程序上的这些数据的同步吗?

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


更新:

您可以在此处查看最新版本的 Health Kit 。checkHealthAppAuthorization和getHealthAppAuthorization 接口用于检查用户是否已授权华为健康应用向Health Kit开放数据。

于 2020-10-09T03:18:37.727 回答