Questa guida è compatibile con la versione 1.1.0-rc01 di Connessione Salute.
Connessione Salute fornisce un tipo di dati mindfulness per misurare vari aspetti della salute mentale, come stress e ansia. La mindfulness è un tipo di dati che fa parte del benessere generale in Connessione Salute.
Disponibilità della funzionalità
Per determinare se il dispositivo di un utente supporta i record delle sessioni di mindfulness su Health Connect, controlla la disponibilità diFEATURE_MINDFULNESS_SESSION
sul client:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Per saperne di più, consulta la sezione Verificare la disponibilità delle funzionalità.
Autorizzazioni richieste
L'accesso alla funzionalità Mindfulness è protetto dalle seguenti autorizzazioni:
android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
Per aggiungere la funzionalità di mindfulness alla tua app, inizia richiedendo le autorizzazioni di scrittura per il tipo di dati MindfulnessSession
.
Ecco l'autorizzazione che devi dichiarare per poter scrivere mindfulness:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>
Per leggere la mindfulness, devi richiedere le seguenti autorizzazioni:
<application>
<uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>
Richiedere le autorizzazioni all'utente
Dopo aver creato un'istanza client, la tua app deve richiedere le autorizzazioni all'utente. Gli utenti devono poter concedere o negare le autorizzazioni in qualsiasi momento.
A questo scopo, crea un insieme di autorizzazioni per i tipi di dati richiesti. Assicurati che le autorizzazioni nel set siano dichiarate prima nel file manifest di Android.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
)
Utilizza getGrantedPermissions
per verificare se la tua app dispone già delle
autorizzazioni richieste. In caso contrario, utilizza
createRequestPermissionResultContract
per richiedere
queste autorizzazioni. Viene visualizzata la schermata delle autorizzazioni di Connessione Salute.
// 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)
}
}
Poiché gli utenti possono concedere o revocare le autorizzazioni in qualsiasi momento, la tua app deve controllare periodicamente le autorizzazioni concesse e gestire gli scenari in cui l'autorizzazione viene persa.
Informazioni incluse in un record di sessione di mindfulness
Ogni record di sessione di mindfulness acquisisce qualsiasi tipo di sessione di mindfulness eseguita da un utente, ad esempio meditazione, respirazione e movimento. La registrazione può includere anche note aggiuntive sulla sessione.
Aggregazioni supportate
Non sono presenti aggregazioni supportate per questo tipo di dati.
Lettura sessione di mindfulness
Il seguente snippet di codice mostra come leggere una sessione di mindfulness:
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)
),
)))
}