讀取原始資料

以下範例說明如何讀取原始資料 工作流程

簡易讀取

Health Connect 中的「步數」資料類型會擷取使用者走過的步數 讀取及回覆時間步數代表 健康、健身和保健平台。Health Connect 提供易於讀取的資料 以及寫入步數資料

如要讀取記錄,請建立 ReadRecordsRequest 並提供 方能接聽 readRecords

以下範例說明如何讀取使用者在 或在特定時間發生如需包含 SensorManager 的延伸範例 查看步數 資料指南

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

讀取先前寫入的資料

如果應用程式先前已將記錄寫入 Health Connect,就有可能發生這種情況 應用程式就能讀書內容,而不必取得這些特定項目的讀取權限 。這適用於需要與應用程式重新同步的情況 Health Connect 在使用者重新安裝後。

如要在此情況下讀取資料,您必須將套件名稱指定為 DataOrigin 物件dataOriginFilter ReadRecordsRequest

以下範例說明如何在讀取步驟時指定套件名稱 紀錄:

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
}

30 天讀取限制

Health Connect 讀取資料時,日期最遠可以溯及原先獲得任何權限前的 30 天 首次授予。

不過,如果使用者刪除您的應用程式,權限記錄就會遺失。如果使用者 重新安裝應用程式並再次授予權限,讓應用程式可以從以下位置讀取資料: Health Connect 在這個新日期前最多 30 天。

範例

如果使用者在 2023 年 3 月 30 日首次授予應用程式讀取權限, 2023 年 2 月 28 日之後,應用程式可以讀取的最早資料 。

使用者之後在 2023 年 5 月 10 日刪除您的應用程式,使用者決定重新安裝 並在 2023 年 5 月 15 日授予讀取權限應用程式目前可以建立的最早日期 讀取資料來源為 2023 年 4 月 15 日

前景限制

只有在以下項目中運作的應用程式才能使用 Health Connect 讀取資料: 前景。這項限制旨在進一步強化使用者隱私。 這樣可向使用者保證 Health Connect 不具備以下背景讀取權限: 而且只會在前景讀取及使用這些資料。

在可容許幹擾的情況下,例如顯示 讀取應用程式時,請直接從 Health Connect 讀取資料至用戶端 應用程式。

不希望受到干擾的情況,例如:唸出特定範圍的內容 才能從 Health Connect 載入資料並上傳到其他位置 ForegroundService 而非可以快速關閉的 Activity。