Đọc dữ liệu thô

Ví dụ sau đây minh hoạ cách đọc dữ liệu thô trong quy trình công việc chung.

Dễ đọc

Loại dữ liệu về Số bước trong Health Connect ghi lại số bước người dùng đi được giữa các kết quả đọc. Số bước chính là cách đo lường phổ biến trên các nền tảng về sức khoẻ, hoạt động thể chất và sức khoẻ tinh thần. Health Connect giúp bạn dễ dàng đọc và ghi dữ liệu về số bước.

Để đọc bản ghi, hãy tạo một ReadRecordsRequest và cung cấp bản ghi đó khi bạn gọi readRecords.

Ví dụ sau đây cho biết cách đọc dữ liệu về số bước của một người dùng trong một khoảng thời gian nhất định. Để xem ví dụ mở rộng với SensorManager, hãy xem hướng dẫn dữ liệu về số bước.

suspend fun readStepsByTimeRange(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.readRecords(
            ReadRecordsRequest(
                StepsRecord::class,
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        for (stepRecord in response.records) {
            // Process each step record
        }
    } catch (e: Exception) {
        // Run error handling here
    }
}

Đọc dữ liệu đã ghi trước đây

Nếu trước đây, một ứng dụng đã ghi bản ghi vào Health Connect, thì ứng dụng đó có thể đọc lại bản ghi mà không cần quyền Đọc đối với các bản ghi cụ thể đó. Cách này áp dụng cho các trường hợp mà trong đó, ứng dụng cần đồng bộ hoá lại với Health Connect sau khi người dùng cài đặt lại ứng dụng này.

Để đọc dữ liệu trong trường hợp này, bạn cần biểu thị tên gói ở dạng đối tượng DataOrigin trong tham số dataOriginFilter của ReadRecordsRequest.

Ví dụ sau đây minh hoạ cách biểu thị tên gói khi đọc bản ghi về Số bước:

try {
    val response =  healthConnectClient.readRecords(
        ReadRecordsRequest(
            recordType = StepsRecord::class,
            timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
            dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
        )
    )
    for (record in response.records) {
        // Process each record
    }
} catch (e: Exception) {
    // Run error handling here
}

Giới hạn 30 ngày đối với việc đọc dữ liệu

Health Connect có thể đọc dữ liệu trong vòng tối đa 30 ngày trước thời điểm cấp quyền lần đầu.

Tuy nhiên, nếu người dùng xoá ứng dụng của bạn, nhật ký cấp quyền sẽ bị mất. Nếu người dùng cài đặt lại ứng dụng của bạn và cấp lại quyền, thì ứng dụng có thể đọc dữ liệu của Health Connect trong vòng tối đa 30 ngày trước ngày mới đó.

Ví dụ

Nếu người dùng cấp cho ứng dụng của bạn quyền đọc dữ liệu lần đầu là vào ngày 30 tháng 3 năm 2023, thì dữ liệu cũ nhất mà ứng dụng có thể đọc sẽ là từ ngày 28 tháng 2 năm 2023 trở đi.

Sau đó, người dùng xoá ứng dụng của bạn vào ngày 10 tháng 5 năm 2023. Người dùng quyết định cài đặt lại vào ngày 15 tháng 5 năm 2023 và cấp quyền đọc. Lúc này, ứng dụng của bạn có thể đọc dữ liệu từ ngày 15 tháng 4 năm 2023.

Quy tắc hạn chế ở nền trước

Chỉ những ứng dụng chạy ở nền trước mới xem được dữ liệu về kết quả đọc bằng Health Connect. Chúng tôi áp dụng biện pháp hạn chế này nhằm tăng cường bảo vệ quyền riêng tư của người dùng. Việc này nhằm đảm bảo với người dùng rằng Health Connect không có quyền đọc dữ liệu ở chế độ nền, và dữ liệu đó chỉ được đọc và truy cập ở nền trước.

Trong những tình huống mà việc gián đoạn có thể chấp nhận được, chẳng hạn như khi hiển thị kết quả đọc trong ứng dụng, hãy đọc trực tiếp từ Health Connect đến ứng dụng.

Trong những tình huống mà bạn không muốn bị gián đoạn, chẳng hạn như khi đọc một loạt dữ liệu từ Health Connect, sau đó ghi và tải dữ liệu đó lên nơi khác, hãy sử dụng ForegroundService, thay vì một Hoạt động nơi nó có thể bị loại bỏ nhanh chóng.