以下範例說明如何讀取原始資料 工作流程
簡易讀取
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。