一起看 I/O | 用 Health Connect 連通應用間的健康資料

Android開發者發表於2022-05-31

作者 / Chris Wilk, Product Manager

從 MyFitnessPal 應用幫助您記錄一日三餐,再到 Withings 產品為您呈現自身健康水平的全面分析,應用和裝置已然形成了聚合多種健康和健身資訊的資料來源。如果您是 Android 開發者,通過在應用間連線和共享這些資料能夠幫助您更深入瞭解使用者,並向他們提供更豐富的體驗。然而,這些健康資料大都散佈在體驗各異的多種裝置上,所以過去想要整合起來十分困難,此外,還沒有一種統一的隱私管理方案來保護 Android 使用者的資料。

瞭解 Health Connect

為了解決文章開頭提到的問題,我們推出了 Health Connect,它既是一個平臺,也是面向 Android 應用開發者的 API。在使用者允許的前提下,開發者們可以用這一組 API 實現跨 Android 裝置訪問和共享使用者的健康及健身資料。

當前我們正與三星合作以簡化應用之間連線為目標來構建這個新的統一平臺。我們與三星共同推出了 Health Connect,旨在打造更豐富的應用體驗,併為使用者提供統一的隱私控制支援。

同時,我們一直在與 MyFitnessPal、Leap Fitness 和 Withings 的開發者開展早期體驗計劃。此外,Samsung Health、Google Fit 和 Fitbit 正在整合接入 Health Connect。所有開發者們都可以通過 Android Jetpack 獲得 Health Connect 提供的 Android API 集。

Health Connect 通過使用自身的平臺和技術來連線健康資訊併為之賦能,這與 Google Health 的願景 "幫助數十億人保持健康" (Helping billions of people be healthier) 所做出的廣泛努力相契合。

Health Connect 是如何運作的?

△ Health Connect 的運作方式

△ Health Connect 的運作方式

Health Connect 支援多種常見的健康和健身資料型別以及類別,其中包括: 活動情況、睡眠質量、營養攝入、體測資料以及重要的體徵資訊 (比如心率和血壓)。

經過使用者同意後,開發者們可以通過標準化的架構和 API 呼叫,安全地從 Health Connect 讀取或寫入資料。使用者對自己的隱私設定持有完全的控制權,Health Connect 為其提供了精細的粒度來檢視哪些 App 在某個時刻請求了資料訪問。Health Connect 產生的所有資料都被加密存放在裝置本地,使用者完全可以禁用對 Health Connect 資料的訪問,也可以刪除某些自己不想存放在裝置裡的資料。當使用者使用多個同類應用時,Health Connect 還為其提供了將某個資料來源的優先順序提高的選項。

開始使用

讓您的應用接入 Health Connect 非常簡單。Health Connect 的這組 API 簡化了許可權管理和資料讀寫。下面示例程式碼為您展示了怎樣先請求許可權,隨後寫入一些資料。

首先,構造一個您希望請求讀取或寫入的授權許可權集合。本例中,我們會讀寫行走步數和心率資料。

private val permissions =
  setOf(
    Permission.createReadPermission(Steps::class),
    Permission.createWritePermission(Steps::class),
    Permission.createReadPermission(HeartRate::class),
    Permission.createWritePermission(HeartRate::class),
  )

// 隨後,為這組許可權建立一個許可權請求。您可以使用 ActivityCompat.requestPermissions() 方法。

隨後,發起剛才建立的許可權請求,使用者可以在 Health Connect 的授權介面上賦予有關許可權。

當使用者授權後,您就可以讀寫資料了。下面的程式碼片段展示了怎樣寫入一段時間內的步數資訊。首先,這組資料中包含了此段時間內的總步數、開始和結束時間,以及時區資訊。隨後,這組資料會被插入 Health Connect 裡。

private suspend fun writeSomeData(client: HealthConnectClient) {
    val records = mutableListOf<Record>()

    records.add(
      Steps(
        count = 888,
        startTime = START_TIME,
        endTime = END_TIME,
        startZoneOffset = null,
        endZoneOffset = null,
      )
    )
    // 如果有需要的話,可以增加額外的記錄項
}

瞭解更多

Health Connect 現在已對開發者們開放,請參閱以下資源:

如需瞭解更多相關內容,您可以觀看 演講視訊

歡迎您 點選這裡 向我們提交反饋,或分享您喜歡的內容、發現的問題。您的反饋對我們非常重要,感謝您的支援!

相關文章