使用入门

在开始安装 Health Connect 之前,请参阅以下资源。

资源

  • 客户端 SDK(可在 Jetpack 上获取)。在您的应用中添加此 SDK,以使用 Health Connect API。
  • Health Connect APK(可在 Google Play 商店中获取)。通过 Google Play 商店安装此 APK。它将使用 Health Connect SDK 处理您的应用发送的所有请求。
  • API 参考文档。如需了解 Health Connect API,请参阅 Jetpack 参考文档
  • GitHub 代码示例(可选)。请参阅 GitHub 代码示例,以便快速上手使用。

请按照下面简单快捷的步骤操作,与 Health Connect 集成:

第 1 步

首先,确保执行以下操作:

在模块的 build.gradle 文件中添加 Health Connect SDK 的依赖项

dependencies {
   …
  implementation 'androidx.health:health-connect-client:1.0.0-alpha03'
}

版本中查找最新版本

将 Health Connect APK 安装到您的设备上

首先,点击此处选择加入 Health Connect 开放式 Beta 版测试计划。开放式 Beta 版链接页面还介绍了如何下载 Health Connect 应用。选择加入后,在您的设备上安装 Health Connect APK

第 2 步

在 AndroidManifest.xml 中声明以下 activity,以处理将解释应用的权限使用情况的 intent。

<application …>
    <activity name=".PermissionsRationaleActivity" exported="true">
        <intent-filter>
            <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
        </intent-filter>
        <meta-data android:name="health_permissions"
                android:resource="@array/health_permissions" />
    </activity>

应用需要处理此 intent,并显示一份隐私权政策,说明将如何使用和处理用户数据。当用户点击 Health Connect 权限对话框中的“隐私权政策”链接时,系统会向应用发送此 intent。

第 3 步:关联到 Health Connect API

HealthConnectClient 是 Health Connect API 的入口点。

以下是与 Health Connect 相关联的流程的分步说明:

  1. 更新 AndroidManifest.xml。

    // Add this to AndroidManifest.xml
    <!-- To check whether healthcore apk is installed or not -->
    <queries>
        <package android:name="com.google.android.apps.healthdata" />
    </queries>
    
  2. 在 MainActivity 中,检查是否已安装 Health Connect。如果是,请获取 HealthConnectClient 实例。

    if (HealthConnectClient.isAvailable(context)) {
      // Health Connect is available and installed.
      val healthConnectClient = HealthConnectClient.getOrCreate(context)
    } else {
      // ...
    }
     ```
    
  3. 然后,客户端应用必须向用户请求权限。用户可以随时授予或拒绝对客户端应用的访问权限。

HealthConnectClient 会自动管理它与底部存储层的关联,并处理传出请求和传入响应的所有 IPC 和序列化。

第 4 步:权限

声明您的应用将使用的权限。在 res/values/health_permissions.xml 中创建一个数组资源。请注意,您需要为应用将要使用的每项权限分别添加一行代码:

<resources>
  <array name="health_permissions">
    <item>androidx.health.permission.HeartRate.READ</item>
    <item>androidx.health.permission.HeartRate.WRITE</item>
    <item>androidx.health.permission.Steps.READ</item>
    <item>androidx.health.permission.Steps.WRITE</item>
  </array>
</resources>

如需在您的应用内启动请求权限对话框,请先为必需的数据类型构建一组权限。确保 res/values/health_permissions.xml 中也声明了该组中的权限。

// build a set of permissions for required data types
val PERMISSIONS =
 setOf(
   Permission.createReadPermission(HeartRateRecord::class),
   Permission.createWritePermission(HeartRateRecord::class),
   Permission.createReadPermission(StepsRecord::class),
   Permission.createWritePermission(StepsRecord::class)
 )

然后,请求权限。在启动权限请求之前,请检查是否已授予相应权限。

// Create the permissions launcher.
val requestPermissionActivityContract = healthConnectClient.permissionController.createRequestPermissionActivityContract()

val requestPermissions =
 registerForActivityResult(requestPermissionActivityContract) { granted ->
   if (granted.containsAll(PERMISSIONS)) {
     // Permissions successfully granted
   } else {
     // Lack of required permissions
   }
 }

fun checkPermissionsAndRun(client: HealthConnectClient) {
 lifecycleScope.launch {
   val granted = client.permissionController.getGrantedPermissions(PERMISSIONS)
   if (granted.containsAll(PERMISSIONS)) {
     // Permissions already granted
   } else {
     requestPermissions.launch(PERMISSIONS)
   }
 }
}

现在,您可以开始执行 CRUD 操作了