Hướng dẫn này tương thích với Health Connect phiên bản 1.1.0-rc01.
Health Connect cung cấp một loại dữ liệu chánh niệm để đo lường nhiều khía cạnh của sức khoẻ tâm thần, chẳng hạn như căng thẳng và lo âu. Chánh niệm là một loại dữ liệu thuộc sức khoẻ tổng thể trong Health Connect.
Phạm vi cung cấp tính năng
Để xác định xem thiết bị của người dùng có hỗ trợ hồ sơ phiên chánh niệm trên Health Connect hay không, hãy kiểm tra trạng thái củaFEATURE_MINDFULNESS_SESSION
trên ứng dụng:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Hãy xem phần Kiểm tra phạm vi cung cấp của các tính năng để tìm hiểu thêm.
Các quyền bắt buộc
Quyền truy cập vào tính năng chánh niệm được bảo vệ bằng các quyền sau:
android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
Để thêm chức năng chánh niệm vào ứng dụng của bạn, hãy bắt đầu bằng cách yêu cầu quyền ghi cho kiểu dữ liệu MindfulnessSession
.
Dưới đây là quyền bạn cần khai báo để có thể ghi lại hoạt động chánh niệm:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>
Để đọc dữ liệu về sự chú tâm, bạn cần yêu cầu các quyền sau:
<application>
<uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>
Yêu cầu người dùng cấp quyền
Sau khi tạo một phiên bản ứng dụng, ứng dụng của bạn cần yêu cầu người dùng cấp quyền. Người dùng phải được phép cấp hoặc từ chối cấp quyền bất cứ lúc nào.
Để thực hiện việc này, hãy tạo một tập hợp quyền cho các kiểu dữ liệu bắt buộc. Trước tiên, bạn cần khai báo các quyền trong tập hợp này ở tệp kê khai Android.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
)
Hãy sử dụng getGrantedPermissions
để xem ứng dụng của bạn đã được cấp các quyền cần thiết chưa. Nếu chưa, hãy sử dụng createRequestPermissionResultContract
để yêu cầu các quyền đó. Thao tác này sẽ hiện màn hình các quyền của Health Connect.
// 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)
}
}
Vì người dùng có thể cấp hoặc thu hồi quyền bất cứ lúc nào, nên ứng dụng của bạn cần kiểm tra định kỳ các quyền đã cấp và xử lý các tình huống khi mất quyền.
Thông tin có trong bản ghi buổi tập chánh niệm
Mỗi bản ghi phiên tập chánh niệm đều ghi lại mọi loại phiên tập chánh niệm mà người dùng thực hiện, chẳng hạn như thiền, hít thở và vận động. Bản ghi cũng có thể bao gồm các ghi chú bổ sung về phiên.
Các phép tổng hợp được hỗ trợ
Không có phép tổng hợp nào được hỗ trợ cho loại dữ liệu này.
Đọc dữ liệu buổi tập chánh niệm
Đoạn mã sau đây minh hoạ cách đọc một phiên chánh niệm:
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)
),
)))
}