Diese Anleitung ist mit Health Connect-Version 1.1.0-rc01 kompatibel.
Health Connect bietet den Datentyp Achtsamkeit, mit dem verschiedene Aspekte der psychischen Gesundheit wie Stress und Ängste gemessen werden können. „Achtsamkeit“ ist ein Datentyp, der Teil des allgemeinen Wohlbefindens in Health Connect ist.
Verfügbarkeit von Health Connect prüfen
Bevor Ihre App versucht, Health Connect zu verwenden, sollte sie prüfen, ob Health Connect auf dem Gerät des Nutzers verfügbar ist. Health Connect ist möglicherweise nicht auf allen Geräten vorinstalliert oder wurde deaktiviert.
Sie können die Verfügbarkeit mit der Methode HealthConnectClient.getSdkStatus() prüfen.
Verfügbarkeit von Health Connect prüfen
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 }
Je nach Status, der von getSdkStatus() zurückgegeben wird, können Sie den Nutzer bei Bedarf anweisen, Health Connect im Google Play Store zu installieren oder zu aktualisieren.
Verfügbarkeit der Funktion
Um herauszufinden, ob das Gerät eines Nutzers Aufzeichnungen zu Achtsamkeitssessions in Health Connect unterstützt, prüfen Sie, ob auf dem ClientFEATURE_MINDFULNESS_SESSION verfügbar ist:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Erforderliche Berechtigungen
Der Zugriff auf „Achtsamkeit“ wird durch die folgenden Berechtigungen geschützt:
android.permission.health.READ_MINDFULNESSandroid.permission.health.WRITE_MINDFULNESS
Wenn Sie Ihrer App die Funktion „Achtsamkeit“ hinzufügen möchten, fordern Sie zuerst Berechtigungen für den Datentyp MindfulnessSession an.
Hier ist die Berechtigung, die Sie deklarieren müssen, um „Achtsamkeit“ schreiben zu können:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>
Wenn Sie „Achtsamkeit“ lesen möchten, müssen Sie die folgenden Berechtigungen anfordern:
<application>
<uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>
Berechtigungen vom Nutzer anfordern
Nachdem Sie eine Clientinstanz erstellt haben, muss Ihre App Berechtigungen vom Nutzer anfordern. Nutzer müssen jederzeit Berechtigungen erteilen oder verweigern können. Erstellen Sie dazu eine Reihe von Berechtigungen für die erforderlichen Datentypen. Achten Sie darauf, dass die Berechtigungen im Set zuerst in Ihrem Android-Manifest deklariert werden.
val permissions = setOf( HealthPermission.getReadPermission(MindfulnessSessionRecord::class), HealthPermission.getWritePermission(MindfulnessSessionRecord::class) )
getGrantedPermissions
können Sie prüfen, ob Ihrer App bereits die erforderlichen Berechtigungen erteilt wurden. Wenn nicht, fordern Sie diese Berechtigungen mit
createRequestPermissionResultContract
an. Dadurch wird der Berechtigungsbildschirm von Health Connect angezeigt.
val permissions = setOf( HealthPermission.getReadPermission(StepsRecord::class), HealthPermission.getWritePermission(StepsRecord::class), HealthPermission.getReadPermission(HeartRateRecord::class), HealthPermission.getWritePermission(HeartRateRecord::class) ) val requestPermissionsLauncher = rememberLauncherForActivityResult( contract = PermissionController.createRequestPermissionResultContract() ) { grantedPermissions -> if (grantedPermissions.containsAll(permissions)) { coroutineScope.launch { snackbarHostState.showSnackbar("Permissions granted!") } } else { coroutineScope.launch { snackbarHostState.showSnackbar("Permissions denied.") } } }
In einer Aufzeichnung zu einer Achtsamkeitssession enthaltene Informationen
In jeder Aufzeichnung zu einer Achtsamkeitssession werden alle Arten von Achtsamkeitssessions erfasst, die ein Nutzer durchführt, z. B. Meditation, Atemübungen und Bewegung. Die Aufzeichnung kann auch zusätzliche Notizen zur Sitzung enthalten.
Für MindfulnessSessionRecord sind die folgenden Arten von Achtsamkeitssessions verfügbar:
MINDFULNESS_SESSION_TYPE_UNKNOWNMINDFULNESS_SESSION_TYPE_MEDITATIONMINDFULNESS_SESSION_TYPE_BREATHINGMINDFULNESS_SESSION_TYPE_MUSICMINDFULNESS_SESSION_TYPE_MOVEMENTMINDFULNESS_SESSION_TYPE_UNGUIDED
Eine vollständige Liste der Arten von Achtsamkeitssessions finden Sie in der
MindfulnessSessionRecord
Referenzdokumentation.
Unterstützte Aggregationen
Für
MindfulnessSessionRecord sind die folgenden aggregierten Werte verfügbar:
Daten zu Achtsamkeitssessions schreiben
Das folgende Code-Snippet zeigt, wie Sie eine Achtsamkeitssession schreiben:
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) ) )
Daten zu Achtsamkeitssessions lesen
Das folgende Code-Snippet zeigt, wie Sie eine Achtsamkeitssession in einem bestimmten Zeitraum lesen:
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}")
}