1

Huawei Health kit を使用してアプリから歩数データを送信しようとしています。ステップの挿入はうまくいっているようですが、Huawei Health アプリケーションで送信された値を確認できません。正常ですか?

現在のドキュメントサンプル コードで推奨されているすべての内容を確認しました。

  • ユーザーは、スコープのアクセス許可を要求して認証されていますScopes.HEALTHKIT_STEP_BOTH
  • このページに従って、ヘルス キットがコンソールで正しく構成されている
  • デバイスのヘルス アプリケーションは最新です (バージョン 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で出力されるため、値が更新されていることがはっきりとわかります

onSuccess 更新

readまた、メソッド onを使用して値を読み取ったところDataController、データを取得できました。

私が自問している質問は次のとおりです。

  • このデータはどこに書き込まれますか: ローカル データベースおよび/または Huawei Health Cloud ?
  • Health Application でこのデータの同期を要求するために何かをする必要がありますか?
4

1 に答える 1

0

このデータはどこに書き込まれますか: ローカル データベースおよび/または Huawei Health Cloud ?

ローカル データベースと Huawei Health Cloud の両方。

Health Application でこのデータの同期を要求するために何かをする必要がありますか?

現在、 Health Kitは Health アプリおよびサービスへのデータの直接書き込みをサポートしていません。2020 年 10 月下旬にフィットネスと健康データの読み取りがサポートされ、2021 年 1 月に健康アプリとサービスへのデータの直接書き込みがサポートされる予定です。


アップデート:

Health Kit の最新バージョンは、こちらで確認できます。checkHealthAppAuthorizationおよびgetHealthAppAuthorization API を使用して、HUAWEI Health アプリが Health Kit にデータを開くことをユーザーが許可したかどうかを確認できます

于 2020-10-09T03:18:37.727 に答える