Panduan ini kompatibel dengan Health Connect versi 1.1.0-alpha11.
Health Connect menyediakan jenis data sesi tidur, untuk menyimpan informasi tentang
tidur pengguna, seperti sesi malam atau tidur siang.
Jenis data SleepSessionRecord
digunakan untuk merepresentasikan sesi ini.
Sesi memungkinkan pengguna mengukur performa berdasarkan waktu selama jangka waktu tertentu, seperti detak jantung berkelanjutan atau data lokasi.
Sesi SleepSessionRecord
berisi data yang mencatat tahapan tidur, seperti
AWAKE
, SLEEPING
, dan DEEP
.
Data subjenis adalah data yang "termasuk" dalam sesi dan hanya bermanfaat jika dibaca dengan sesi induk. Misalnya, fase tidur.
Ketersediaan fitur
Tidak ada tanda ketersediaan fitur untuk jenis data ini.
Izin yang diperlukan
Akses ke sesi tidur dilindungi oleh izin berikut:
android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
Deklarasikan izin ini di Konsol Play untuk aplikasi Anda, serta di manifes aplikasi Anda:
<application>
<uses-permission
android:name="android.permission.health.READ_SLEEP" />
<uses-permission
android:name="android.permission.health.WRITE_SLEEP" />
...
</application>
Anda bertanggung jawab untuk menyatakan semua izin yang sesuai yang ingin Anda gunakan di perangkat dan aplikasi Anda. Anda juga harus memeriksa bahwa setiap izin telah diberikan oleh pengguna sebelum digunakan
Panduan umum
Berikut adalah beberapa panduan praktik terbaik tentang cara menggunakan sesi tidur di Health Connect.
- Sesi harus digunakan untuk menambahkan data dari sesi tidur tertentu, untuk tidur:
suspend fun writeSleepSession(healthConnectClient: HealthConnectClient) {
healthConnectClient.insertRecords(
listOf(
SleepSessionRecord(
startTime = Instant.parse("2022-05-10T23:00:00.000Z"),
startZoneOffset = ZoneOffset.of("-08:00"),
endTime = Instant.parse("2022-05-11T07:00:00.000Z"),
endZoneOffset = ZoneOffset.of("-08:00"),
title = "My Sleep"
),
)
)
}
- Sesi tidak boleh digunakan untuk pengukuran umum, seperti jumlah langkah harian.
- Data subjenis tidak berisi UID, tetapi data terkait memiliki UID yang berbeda.
- Data subjenis harus disejajarkan dalam sesi dengan stempel waktu berurutan yang tidak tumpang-tindih. Namun, celah diizinkan.
- Sesi akan berguna jika pengguna menginginkan data dikaitkan dengan (dan dilacak sebagai bagian dari) sesi, bukan dicatat secara terus-menerus.
Sesi tidur
Anda dapat membaca atau menulis data tidur di Health Connect. Data tidur ditampilkan sebagai sesi, dan dapat dibagi menjadi 8 tahapan tidur yang berbeda:
UNKNOWN
: Tidak ditentukan atau tidak diketahui apakah pengguna sedang tidur.AWAKE
: Pengguna terbangun dalam siklus tidur, bukan pada siang hari.SLEEPING
: Deskripsi tidur umum atau tidak terperinci.OUT_OF_BED
: Pengguna beranjak dari tempat tidur di tengah sesi tidur.AWAKE_IN_BED
: Pengguna terbangun di tempat tidur.LIGHT
: Pengguna dalam siklus tidur ringan.DEEP
: Pengguna berada dalam siklus tidur nyenyak.REM
: Pengguna berada dalam siklus tidur REM.
Nilai ini mewakili jenis tidur yang dialami pengguna dalam rentang waktu. Menulis tahapan tidur bersifat opsional, tetapi sebaiknya dilakukan jika tersedia.
Menulis sesi tidur
Jenis data SleepSessionRecord
memiliki dua bagian:
- Sesi keseluruhan yang mencakup seluruh durasi tidur.
- Masing-masing tahapan selama sesi tidur seperti tidur ringan atau tidur nyenyak.
Berikut ini cara menyisipkan sesi tidur tanpa tahapan:
SleepSessionRecord(
title = "weekend sleep",
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
)
Berikut ini cara menambahkan tahapan yang mencakup seluruh periode sesi tidur:
val stages = listOf(
SleepSessionRecord.Stage(
startTime = START_TIME
endTime = END_TIME,
stage = SleepSessionRecord.STAGE_TYPE_SLEEPING,
)
)
SleepSessionRecord(
title = "weekend sleep",
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET,
stages = stages,
)
Membaca sesi tidur
Untuk setiap sesi tidur yang ditampilkan, Anda harus memeriksa apakah data tahapan tidur juga ada:
suspend fun readSleepSessions(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
val response =
healthConnectClient.readRecords(
ReadRecordsRequest(
SleepSessionRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
for (sleepRecord in response.records) {
// Retrieve relevant sleep stages from each sleep record
val sleepStages = sleepRecord.stages
}
}
Menghapus sesi tidur
Berikut ini cara menghapus sesi. Untuk contoh ini, kita telah menggunakan sesi tidur:
suspend fun deleteSleepSession(
healthConnectClient: HealthConnectClient,
sleepRecord: SleepSessionRecord,
) {
val timeRangeFilter = TimeRangeFilter.between(sleepRecord.startTime, sleepRecord.endTime)
healthConnectClient.deleteRecords(SleepSessionRecord::class, timeRangeFilter)
}