Farkındalık oturumlarını takip etme

Bu kılavuz, Health Connect 1.1.0-rc01 sürümüyle uyumludur.

Health Connect, ruh sağlığının stres ve kaygı gibi çeşitli yönlerini ölçmek için bilinçli farkındalık veri türü sağlar. Mindfulness, Health Connect'teki genel sağlıklı yaşam kapsamındaki bir veri türüdür.

Özellik kullanılabilirliği

Kullanıcının cihazının Health Connect'te farkındalık oturumu kayıtlarını destekleyip desteklemediğini belirlemek için istemcide FEATURE_MINDFULNESS_SESSION'nin kullanılabilirliğini kontrol edin:

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

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

Daha fazla bilgi için Özellik kullanılabilirliğini kontrol etme başlıklı makaleyi inceleyin.

Gerekli izinler

Health Connect'teki tüm veri türlerinde olduğu gibi, farkındalık oturumuna erişim de READ_MINDFULNESS ve WRITE_MINDFULNESS adlı iki izinle korunur.

Kullanıcıdan izin isteme

Uygulamanızın, istemci örneği oluşturduktan sonra kullanıcıdan izin istemesi gerekir. Kullanıcıların diledikleri zaman izin vermesine veya reddetmesine izin verilmelidir.

Bunun için gerekli veri türleri için bir dizi izin oluşturun. Öncelikle, gruptaki izinlerin Android manifest dosyanızda beyan edildiğinden emin olun.

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

Uygulamanıza gerekli izinlerin verilip verilmediğini görmek için getGrantedPermissions'u kullanın. Aksi takdirde bu izinleri istemek için createRequestPermissionResultContract değerini kullanın. Health Connect izinleri ekranı gösterilir.

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

Kullanıcılar diledikleri zaman izin verebilir veya iptal edebilir. Bu nedenle, uygulamanızın izinleri düzenli olarak kontrol etmesi ve izinlerin kaybedildiği senaryoları ele alması gerekir.

Farkındalık oturumu kaydına dahil edilen bilgiler

Her farkındalık oturumu kaydı, kullanıcının gerçekleştirdiği farkındalık oturumlarının tümünü (ör. meditasyon, nefes alma ve hareket) yakalar. Kayıt, oturumla ilgili ek notlar da içerebilir.

Desteklenen toplama işlemleri

Bu veri türü için desteklenen toplama işlemi yoktur.

Örnek kullanım

Aşağıdaki kod snippet'inde, Jetpack kitaplığı kullanılarak farkındalık meditasyonu oturumunun nasıl yazılacağı gösterilmektedir:

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