皮膚温を測定

ヘルスコネクトには、末端の体温を測定する皮膚温データ型が用意されています。この測定は、睡眠の質、生殖衛生、病気の潜在的な発症を検出する場合に特に有用なシグナルです。

必要な権限

ヘルスコネクトの他のどのデータタイプと同様に、皮膚温へのアクセスは、READ_SKIN_TEMPERATUREWRITE_SKIN_TEMPERATURE の 2 つの権限によって保護されています。

皮膚温レコードに含まれる情報

皮膚温の測定結果は記録にまとめられます。各レコードは次の情報で構成されます。

  • ベースライン温度(摂氏または華氏)。これは省略可能な値です。アプリの UI で視覚化する場合に最も役立ちます。
  • 皮膚温の差分リスト。それぞれに、前回の測定からの皮膚温の変化が表示されます。ベースライン温度が指定されている場合は、これらの差分には同じ温度単位を使用する必要があります。
  • 測定が行われたユーザーの身体の部位(指、つま先、手首)。

サポートされている集計

ヘルスコネクトでは、特定の差分リストについて次の集計値を取得できます。

  • 最小値
  • 最大値
  • 平均値

皮膚温を読み取る

次のコード スニペットは、Jetpack ライブラリを使用して皮膚温度の測定値を読み取る方法を示しています。

suspend fun readSkinTemperatures() {
    // Error handling, permission check, and feature availability check
    // aren't included.

    // Record includes measurements during the past hour.
    val recordEndTime = Instant.now()
    val recordStartTime = recordEndTime.minusSeconds(60 * 60)

    val response = healthConnectClient.readRecords(
        ReadRecordsRequest<SkinTemperatureRecord>(
            timeRangeFilter = TimeRangeFilter.between(
                    recordStartTime, recordEndTime)
        )
    )

    for (skinTemperatureRecord in response.records) {
        // Process each skin temperature record here.
    }
}

皮膚温を書き込む

次のコード スニペットは、Jetpack ライブラリを使用して皮膚温度の測定値を書き込成する方法を示しています。


suspend fun writeSkinTemperatures(): InsertRecordsResponse {
    // Error handling, permission check, and feature availability check
    // aren't included.

    // Record includes measurements during the past hour.
    val recordEndTime: ZonedDateTime = now()
    val recordStartTime: ZonedDateTime = recordEndTime.minusHours(1)

    return healthConnectClient.insertRecords(
        // For this example, there's only one skin temperature record.
        listOf(
            SkinTemperatureRecord(
                startTime = recordStartTime.toInstant(),
                startZoneOffset = recordStartTime.offset,
                endTime = recordEndTime.toInstant(),
                endZoneOffset = recordEndTime.offset,
                deltas = listOf(
                    SkinTemperatureRecord.Delta(
                            recordEndTime.minusMinutes(50), celsius(0.5)),
                    SkinTemperatureRecord.Delta(
                            recordEndTime.minusMinutes(30), celsius(-0.7))
                ),
                measurementLocation =
                        SkinTemperatureRecord.MEASUREMENT_LOCATION_FINGER
            )
        )
    )
}