Ten przewodnik jest zgodny z Health Connect w wersji 1.1.0-rc01.
Health Connect udostępnia typ danych uważność, który służy do pomiaru różnych aspektów zdrowia psychicznego, takich jak stres i lęk. Uważność to typ danych, który jest częścią ogólnego samopoczucia w Health Connect.
Dostępność funkcji
Aby sprawdzić, czy urządzenie użytkownika obsługuje rekordy sesji uważności w Health Connect, sprawdź dostępnośćFEATURE_MINDFULNESS_SESSION
w aplikacji:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Więcej informacji znajdziesz w sekcji Sprawdzanie dostępności funkcji.
Wymagane uprawnienia
Dostęp do funkcji uważności jest chroniony przez te uprawnienia:
android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
Aby dodać do aplikacji funkcję uważności, zacznij od poproszenia o uprawnienia do zapisu w przypadku typu danych MindfulnessSession
.
Aby móc zapisywać dane dotyczące uważności, musisz zadeklarować to uprawnienie:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>
Aby odczytywać dane o uważności, musisz poprosić o te uprawnienia:
<application>
<uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>
Prośba użytkownika o uprawnienia
Po utworzeniu instancji klienta aplikacja musi poprosić użytkownika o przyznanie uprawnień. Użytkownicy muszą mieć możliwość przyznania lub odmowy przyznania uprawnień w dowolnym momencie.
Aby to zrobić, utwórz zestaw uprawnień dla wymaganych typów danych. Sprawdź, czy uprawnienia w zestawie są najpierw zadeklarowane w pliku manifestu Androida.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
)
Użyj getGrantedPermissions
, aby sprawdzić, czy Twoja aplikacja ma już przyznane wymagane uprawnienia. Jeśli nie, użyj createRequestPermissionResultContract
, aby poprosić o te uprawnienia. Wyświetli się ekran uprawnień 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)
}
}
Użytkownicy mogą w dowolnym momencie przyznawać i wycofywać uprawnienia, dlatego aplikacja musi okresowo sprawdzać, czy uprawnienia zostały przyznane, i obsługiwać sytuacje, w których uprawnienia zostaną utracone.
Informacje zawarte w rekordzie sesji uważności
Każdy rekord sesji uważności rejestruje dowolny rodzaj sesji uważności, np. medytację, ćwiczenia oddechowe i ruchowe. Rekord może też zawierać dodatkowe notatki dotyczące sesji.
Obsługiwane agregacje
W przypadku tego typu danych nie ma obsługiwanych agregacji.
Odczytuj sesję uważności
Ten fragment kodu pokazuje, jak odczytać sesję uważności:
if (healthConnectClient.features.getFeatureStatus(FEATURE_MINDFULNESS_SESSION) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
healthConnectClient.insertRecords(listOf(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.activelyRecorded(
clientRecordId = "myid",
clientRecordVersion = 0.0,
device = Device(type = Device.TYPE_PHONE)
),
)))
}