Achtsamkeitsübungen aufzeichnen

Dieser Leitfaden 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 der Funktion

So prüfen Sie, ob das Gerät eines Nutzers Aufzeichnungen von Achtsamkeitssitzungen in Health Connect unterstützt:FEATURE_MINDFULNESS_SESSION

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}

Weitere Informationen

Erforderliche Berechtigungen

Der Zugriff auf „Achtsamkeit” wird durch die folgenden Berechtigungen geschützt:

  • android.permission.health.READ_MINDFULNESS
  • android.permission.health.WRITE_MINDFULNESS

Wenn Sie Ihrer App die Funktion für Achtsamkeit hinzufügen möchten, müssen Sie zuerst Schreibberechtigungen für den Datentyp MindfulnessSession anfordern.

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 auf Achtsamkeitsdaten zugreifen 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 Client-Instanz erstellt haben, muss Ihre App Berechtigungen vom Nutzer anfordern. Nutzer müssen jederzeit die Möglichkeit haben, Berechtigungen zu erteilen oder zu verweigern.

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.

// Create a set of permissions for required data types
val PERMISSIONS =
    setOf(
  HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
  HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
)

Mit getGrantedPermissions können Sie prüfen, ob Ihrer App bereits die erforderlichen Berechtigungen erteilt wurden. Falls nicht, verwenden Sie createRequestPermissionResultContract, um diese Berechtigungen anzufordern. Dadurch wird der Bildschirm mit den Health Connect-Berechtigungen angezeigt.

// 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)
  }
}

Da Nutzer Berechtigungen jederzeit erteilen oder widerrufen können, muss Ihre App regelmäßig prüfen, welche Berechtigungen erteilt wurden, und Szenarien berücksichtigen, in denen Berechtigungen verloren gehen.

In einem Eintrag für eine Achtsamkeitsübung enthaltene Informationen

In jedem Achtsamkeitssitzungsprotokoll wird jede Art von Achtsamkeitssitzung erfasst, die ein Nutzer durchführt, z. B. Meditation, Atemübungen und Bewegung. Der Datensatz kann auch zusätzliche Notizen zur Sitzung enthalten.

Unterstützte Aggregationen

Für diesen Datentyp sind keine unterstützten Aggregationen vorhanden.

Daten zu Achtsamkeitsessions lesen

Das folgende Code-Snippet zeigt, wie eine Achtsamkeitssitzung gelesen wird:

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)
            ),
        )))
    }