قياس درجة حرارة الجلد

يتوافق هذا الدليل مع الإصدار 1.1.0-alpha12 من Health Connect.

يوفّر Health Connect نوع بيانات درجة حرارة الجلد لقياس درجة حرارة الأطراف الجسم. يُعدّ هذا القياس إشارة مفيدة بشكل خاص لرصد جودة النوم والصحة الإنجابية وبداية المرض المحتمَلة.

الأذونات المطلوبة

كما هو الحال مع أي نوع من البيانات في Health Connect، يتم حماية الوصول إلى درجة حرارة الجلد بزوج من الأذونات: READ_SKIN_TEMPERATURE و WRITE_SKIN_TEMPERATURE.

المعلومات المضمّنة في سجلّ درجة حرارة الجلد

يتم تنظيم قياسات درجة حرارة الجلد في سجلات. يتألّف كل سجلّ من المعلومات التالية:

  • درجة الحرارة الأساسية، بالدرجات المئوية أو فهرنهايت هذه قيمة اختيارية وأكثر فائدة للعرض المرئي في واجهة مستخدم تطبيقك.
  • قائمة بالاختلافات في درجة حرارة الجلد، يعرض كل منها التغيّر في درجة حرارة الجلد منذ آخر قياس في حال توفُّر درجة الحرارة الأساسية، يجب أن تستخدم هذه الاختلافات وحدات درجة الحرارة نفسها.
  • الموقع على جسم المستخدم الذي تم أخذ القياس منه: الإصبع أو الإصبع الصغير أو الرسغ

عمليات التجميع المسموح بها

يتيح لك Health Connect الحصول على القيم المجمّعة التالية لقائمة معيّنة من القيم:

  • أدنى قيمة
  • أقصى قيمة
  • متوسط القيمة

قراءة بيانات درجة حرارة الجلد

يوضّح مقتطف الرمز التالي كيفية قراءة قياسات درجة حرارة الجلد باستخدام مكتبة 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)

    healthConnectClient.insertRecords(
        // For this example, there's only one skin temperature record.
        listOf(
            SkinTemperatureRecord(
                baseline = Temperature.celsius(37.0),
                startTime = recordStartTime.toInstant(),
                startZoneOffset = recordStartTime.offset,
                endTime = recordEndTime.toInstant(),
                endZoneOffset = recordEndTime.offset,
                deltas = listOf(
                    SkinTemperatureRecord.Delta(
                        recordEndTime.minusMinutes(50).toInstant(), celsius(0.5)
                    ), SkinTemperatureRecord.Delta(
                        recordEndTime.minusMinutes(30).toInstant(), celsius(-0.7)
                    )
                ),
                measurementLocation = SkinTemperatureRecord.MEASUREMENT_LOCATION_FINGER,
                metadata = Metadata.autoRecorded(
                    device = Device(type = Device.TYPE_RING)
                ),
            )
        )
    )
}