Panduan ini kompatibel dengan Health Connect versi 1.1.0-rc01.
Health Connect menyediakan jenis data mindfulness untuk mengukur berbagai aspek kesehatan mental, seperti stres dan kecemasan. Mindfulness adalah jenis data yang merupakan bagian dari kesehatan secara keseluruhan di Health Connect.
Memeriksa ketersediaan Health Connect
Sebelum mencoba menggunakan Health Connect, aplikasi Anda harus memverifikasi bahwa Health Connect tersedia di perangkat pengguna. Health Connect mungkin tidak diinstal sebelumnya di semua perangkat atau dapat dinonaktifkan.
Anda dapat memeriksa ketersediaan menggunakan metode HealthConnectClient.getSdkStatus().
Cara memeriksa ketersediaan Health Connect
fun checkHealthConnectAvailability(context: Context) { val providerPackageName = "com.google.android.apps.healthdata" // Or get from HealthConnectClient.DEFAULT_PROVIDER_PACKAGE_NAME val availabilityStatus = HealthConnectClient.getSdkStatus(context, providerPackageName) if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) { // Health Connect is not available. Guide the user to install/enable it. // For example, show a dialog. return // early return as there is no viable integration } if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) { // Health Connect is available but requires an update. // Optionally redirect to package installer to find a provider, for example: val uriString = "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding" context.startActivity( Intent(Intent.ACTION_VIEW).apply { setPackage("com.android.vending") data = Uri.parse(uriString) putExtra("overlay", true) putExtra("callerId", context.packageName) } ) return } // Health Connect is available, obtain a HealthConnectClient instance val healthConnectClient = HealthConnectClient.getOrCreate(context) // Issue operations with healthConnectClient }
Bergantung pada status yang ditampilkan oleh getSdkStatus(), Anda dapat memandu pengguna untuk menginstal atau mengupdate Health Connect dari Google Play Store jika diperlukan.
Ketersediaan fitur
Untuk menentukan apakah perangkat pengguna mendukung catatan sesi mindfulness di Health Connect, periksa ketersediaanFEATURE_MINDFULNESS_SESSION di klien:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Izin yang diperlukan
Akses ke mindfulness dilindungi oleh izin berikut:
android.permission.health.READ_MINDFULNESSandroid.permission.health.WRITE_MINDFULNESS
Untuk menambahkan kemampuan mindfulness ke aplikasi Anda, mulailah dengan meminta izin untuk jenis data MindfulnessSession.
Berikut adalah izin yang harus Anda deklarasikan agar dapat menulis mindfulness:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>
Untuk membaca mindfulness, Anda harus meminta izin berikut:
<application>
<uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>
Meminta izin dari pengguna
Setelah membuat instance klien, aplikasi Anda perlu meminta izin dari pengguna. Pengguna harus diizinkan untuk memberikan atau menolak izin kapan saja.
Untuk melakukannya, buat kumpulan izin untuk jenis data yang diperlukan. Pastikan izin dalam kumpulan dideklarasikan dalam manifes Android Anda terlebih dahulu.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
)
Gunakan getGrantedPermissions untuk mengetahui apakah aplikasi Anda sudah mendapatkan
izin yang diperlukan. Jika tidak, gunakan
createRequestPermissionResultContract untuk meminta
izin tersebut. Tindakan ini akan menampilkan layar izin Health Connect.
// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()
val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
if (granted.containsAll(PERMISSIONS)) {
// Permissions successfully granted
} else {
// Lack of required permissions
}
}
suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
val granted = healthConnectClient.permissionController.getGrantedPermissions()
if (granted.containsAll(PERMISSIONS)) {
// Permissions already granted; proceed with inserting or reading data
} else {
requestPermissions.launch(PERMISSIONS)
}
}
Karena pengguna dapat memberikan atau mencabut izin kapan saja, aplikasi Anda perlu memeriksa izin setiap kali sebelum menggunakannya dan menangani skenario saat izin hilang.
Informasi yang disertakan dalam catatan sesi mindfulness
Setiap catatan sesi mindfulness mencatat semua jenis sesi mindfulness yang dilakukan pengguna, misalnya meditasi, pernapasan, dan gerakan. Catatan ini juga dapat menyertakan catatan tambahan tentang sesi.
Jenis sesi mindfulness berikut tersedia untuk MindfulnessSessionRecord:
MINDFULNESS_SESSION_TYPE_UNKNOWNMINDFULNESS_SESSION_TYPE_MEDITATIONMINDFULNESS_SESSION_TYPE_BREATHINGMINDFULNESS_SESSION_TYPE_MUSICMINDFULNESS_SESSION_TYPE_MOVEMENTMINDFULNESS_SESSION_TYPE_UNGUIDED
Untuk mengetahui daftar lengkap jenis sesi mindfulness, lihat
MindfulnessSessionRecord
dokumentasi referensi.
Agregasi yang didukung
Nilai agregat berikut tersedia untuk
MindfulnessSessionRecord:
Tulis sesi mindfulness
Cuplikan kode berikut menunjukkan cara menulis sesi mindfulness:
val isAvailable = healthConnectClient.features.getFeatureStatus(FEATURE_MINDFULNESS_SESSION) if (isAvailable == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) { val record = MindfulnessSessionRecord( startTime = Instant.now().minus(Duration.ofHours(1)), startZoneOffset = ZoneOffset.UTC, endTime = Instant.now(), endZoneOffset = ZoneOffset.UTC, mindfulnessSessionType = MindfulnessSessionRecord.MINDFULNESS_SESSION_TYPE_MEDITATION, title = "Lake meditation", notes = "Meditation by the lake", metadata = Metadata( clientRecordId = "myid", clientRecordVersion = 1L, device = Device(type = Device.TYPE_PHONE) ) )
Baca sesi mindfulness
Cuplikan kode berikut menunjukkan cara membaca sesi mindfulness dalam rentang waktu:
Val now = Instant.now()
val records = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = MindfulnessSessionRecord::class,
timeRangeFilter = TimeRangeFilter.between(
startTime = now.minus(Duration.ofHours(5)),
endTime = now
)
)
)
// Process the returned records
records.records.forEach { session ->
println("Mindfulness session:")
println("Start: ${session.startTime}")
println("End: ${session.endTime}")
println("Title: ${session.title}")
println("Notes: ${session.notes}")
println("Type: ${session.mindfulnessSessionType}")
}