Bu kılavuz, Health Connect'in 1.1.0-rc01 sürümüyle uyumludur.
Health Connect, stres ve kaygı gibi ruh sağlığının çeşitli yönlerini ölçmek için farkındalık veri türünü sunar. Farkındalık, Health Connect'teki genel sağlıklı yaşamın bir parçası olan 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 istemcideFEATURE_MINDFULNESS_SESSION
simgesinin 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 Özelliklerin kullanılabilirliğini kontrol etme başlıklı makaleyi inceleyin.
Gerekli izinler
Farkındalık özelliklerine erişim aşağıdaki izinlerle korunur:
android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
Uygulamanıza farkındalık özelliği eklemek için öncelikle MindfulnessSession
veri türü için yazma izni isteyerek başlayın.
Farkındalıkla ilgili içerik yazabilmek için bildirmeniz gereken izin şudur:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>
Farkındalık okumak için aşağıdaki izinleri istemeniz gerekir:
<application>
<uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>
Kullanıcıdan izin isteme
İstemci örneği oluşturduktan sonra uygulamanızın kullanıcıdan izin istemesi gerekir. Kullanıcıların izinleri istedikleri zaman vermesine veya reddetmesine izin verilmelidir.
Bunun için gerekli veri türleri için bir izin grubu oluşturun. Gruptaki izinlerin önce Android manifestinizde tanımlandığından 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
aracını kullanın. Aksi takdirde, bu izinleri istemek için createRequestPermissionResultContract
simgesini kullanın. Bu işlem, Health Connect izinleri ekranını gösterir.
// 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 izinleri istedikleri zaman verebilir veya iptal edebilir. Bu nedenle, uygulamanızın verilen izinleri düzenli olarak kontrol etmesi ve izinlerin kaybedildiği senaryoları yönetmesi gerekir.
Farkındalık oturumu kaydında yer alan bilgiler
Her farkındalık oturumu kaydı, kullanıcının yaptığı her türlü farkındalık oturumunu (ör. meditasyon, nefes ve hareket) yakalar. Kayda oturumla ilgili ek notlar da eklenebilir.
Desteklenen toplamalar
Bu veri türü için desteklenen toplama işlemi yok.
Farkındalık oturumunu okuma
Aşağıdaki kod snippet'inde, bir farkındalık oturumunun nasıl okunacağı 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)
),
)))
}