В этом руководстве показано, как начать использовать Health Connect в своем приложении.
Шаг 1. Подготовьте приложение Health Connect.
Приложение Health Connect отвечает за обработку всех запросов, которые ваше приложение отправляет через Health Connect SDK. Эти запросы включают в себя хранение данных и управление доступом к ним для чтения и записи.
Доступ к Health Connect зависит от версии Android, установленной на телефоне. В следующих разделах описано, как работать с несколькими последними версиями Android.
Андроид 14
Начиная с Android 14 (уровень API 34), Health Connect является частью Android Framework. Эта версия Health Connect представляет собой модуль платформы . При этом нет необходимости в настройке.
Android 13 и более ранние версии
В Android 13 (уровень API 33) и более ранних версиях Health Connect не является частью Android Framework. Для этого вам необходимо установить приложение Health Connect из магазина Google Play.
Если вы интегрировали свое приложение с Health Connect на Android 13 и более ранних версиях и хотите перейти на Android 14, см. раздел «Миграция с Android 13 на Android 14» .
Откройте приложение Health Connect.
Health Connect больше не отображается на главном экране по умолчанию. Чтобы открыть Health Connect, перейдите в «Настройки» > «Приложения» > «Health Connect» или добавьте Health Connect в меню быстрых настроек .
Кроме того, Health Connect требует, чтобы у пользователя была включена блокировка экрана с помощью PIN-кода, шаблона или пароля, чтобы данные о состоянии здоровья, хранящиеся в Health Connect, были защищены от злоумышленников, пока устройство заблокировано. Чтобы установить блокировку экрана, выберите «Настройки» > «Безопасность» > «Блокировка экрана» .
Шаг 2. Добавьте Health Connect SDK в свое приложение.
Health Connect SDK отвечает за использование Health Connect API для отправки запросов при выполнении операций с хранилищем данных в приложении Health Connect.
Добавьте зависимость Health Connect SDK в файл build.gradle
на уровне модуля:
dependencies {
...
implementation "androidx.health.connect:connect-client:1.1.0-alph10"
...
}
Для получения последней версии см. выпуски Health Connect .
Шаг 3. Настройте свое приложение
В следующих разделах объясняется, как настроить приложение для интеграции с Health Connect.
Объявить разрешения
Доступ к данным о здоровье и фитнесе является конфиденциальным. Health Connect реализует уровень безопасности для операций чтения и записи, поддерживая доверие пользователей.
В Play Console объявите доступ к типам данных Health Connect , которые ваше приложение читает и записывает.
В своем приложении объявите разрешения на чтение и запись в файле AndroidManifest.xml
на основе необходимых типов данных, которые должны соответствовать тем, к которым вы объявили доступ в Play Console.
Health Connect использует стандартный формат декларации разрешений Android. Назначайте разрешения с помощью тегов <uses-permission>
. Вложите их в теги <manifest>
.
<manifest>
<uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
<uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
<uses-permission android:name="android.permission.health.READ_STEPS"/>
<uses-permission android:name="android.permission.health.WRITE_STEPS"/>
<application>
...
</application>
</manifest>
Полный список разрешений и соответствующих им типов данных см. в разделе Список типов данных .
Показать диалоговое окно политики конфиденциальности вашего приложения
В вашем манифесте Android должно быть действие, отображающее политику конфиденциальности вашего приложения, которая является обоснованием запрошенных разрешений вашего приложения и описывает, как используются и обрабатываются данные пользователя.
Объявите это действие для обработки намерения ACTION_SHOW_PERMISSIONS_RATIONALE
, когда оно отправляется в приложение, когда пользователь нажимает ссылку на политику конфиденциальности на экране разрешений Health Connect.
...
<application>
...
<!-- For supported versions through Android 13, create an activity to show the rationale
of Health Connect permissions once users click the privacy policy link. -->
<activity
android:name=".PermissionsRationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>
<!-- For versions starting Android 14, create an activity alias to show the rationale
of Health Connect permissions once users click the privacy policy link. -->
<activity-alias
android:name="ViewPermissionUsageActivity"
android:exported="true"
android:targetActivity=".PermissionsRationaleActivity"
android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
</intent-filter>
</activity-alias>
...
</application>
...
Получите клиент Health Connect
HealthConnectClient
— это точка входа в API Health Connect. Это позволяет приложению использовать хранилище данных в приложении Health Connect. Он автоматически управляет подключением к базовому уровню хранения и обрабатывает все IPC и сериализацию исходящих запросов и входящих ответов.
Чтобы получить экземпляр клиента, сначала объявите имя пакета Health Connect в манифесте Android.
<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
Затем в своем действии проверьте, установлено ли Health Connect с помощью getSdkStatus
. Если да, получите экземпляр HealthConnectClient
.
val availabilityStatus = HealthConnectClient.getSdkStatus(context, providerPackageName)
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) {
return // early return as there is no viable integration
}
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) {
// Optionally redirect to package installer to find a provider, for example:
val uriString = "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding"
context.startActivity(
Intent(Intent.ACTION_VIEW).apply {
setPackage("com.android.vending")
data = Uri.parse(uriString)
putExtra("overlay", true)
putExtra("callerId", context.packageName)
}
)
return
}
val healthConnectClient = HealthConnectClient.getOrCreate(context)
// Issue operations with healthConnectClient
Шаг 4. Запросите разрешения у пользователя
После создания экземпляра клиента вашему приложению необходимо запросить разрешения у пользователя. Пользователям должно быть разрешено предоставлять или отказывать в разрешениях в любое время.
Для этого создайте набор разрешений для необходимых типов данных. Убедитесь, что разрешения в наборе сначала объявлены в манифесте Android.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(HeartRateRecord::class),
HealthPermission.getWritePermission(HeartRateRecord::class),
HealthPermission.getReadPermission(StepsRecord::class),
HealthPermission.getWritePermission(StepsRecord::class)
)
Используйте getGrantedPermissions
, чтобы узнать, есть ли у вашего приложения необходимые разрешения. Если нет, используйте createRequestPermissionResultContract
для запроса этих разрешений. Откроется экран разрешений Health Connect.
// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()
val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
if (granted.containsAll(PERMISSIONS)) {
// Permissions successfully granted
} else {
// Lack of required permissions
}
}
suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
val granted = healthConnectClient.permissionController.getGrantedPermissions()
if (granted.containsAll(PERMISSIONS)) {
// Permissions already granted; proceed with inserting or reading data
} else {
requestPermissions.launch(PERMISSIONS)
}
}
Не думайте, что разрешения постоянны, поскольку пользователи могут предоставить или отозвать их в любое время. Вашему приложению необходимо периодически проверять наличие предоставленных разрешений и обрабатывать сценарии, в которых разрешения теряются.
Шаг 5: Выполните операции
Теперь, когда все настроено, выполните операции чтения и записи в своем приложении.
Запись данных
Структурируйте свои данные в записи. Ознакомьтесь со списком типов данных , доступных в Health Connect.
val stepsRecord = StepsRecord(
count = 120,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET,
)
Затем напишите свою запись, используя insertRecords
.
suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
try {
val stepsRecord = StepsRecord(
count = 120,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET,
)
healthConnectClient.insertRecords(listOf(stepsRecord))
} catch (e: Exception) {
// Run error handling here
}
}
Чтение данных
Вы можете прочитать свои данные по отдельности, используя readRecords
.
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.
}
}
Вы также можете читать свои данные в агрегированном виде, aggregate
.
suspend fun aggregateSteps(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response = healthConnectClient.aggregate(
AggregateRequest(
metrics = setOf(StepsRecord.COUNT_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
// The result may be null if no data is available in the time range
val stepCount = response[StepsRecord.COUNT_TOTAL]
} catch (e: Exception) {
// Run error handling here
}
}
Видеоуроки
Посмотрите эти видеоролики, которые объясняют больше о функциях Health Connect, а также дают рекомендации по обеспечению беспрепятственной интеграции:
- Управление разрешениями в Health Connect
- Чтение и запись в Health Connect
- Советы по эффективной интеграции Health Connect
Ресурсы
Ознакомьтесь со следующими ресурсами, которые помогут в дальнейшей разработке.
- Health Connect SDK (доступен в Jetpack): включите этот SDK в свое приложение, чтобы использовать Health Connect API.
- Справочник по API. Ознакомьтесь со справочником Jetpack по API Health Connect.
- Объявите использование типов данных. В Play Console объявите доступ к типам данных Health Connect , которые ваше приложение читает и записывает.
- Необязательный пример кода и лаборатория кода GitHub. Чтобы начать работу, ознакомьтесь с репозиторием примеров кода GitHub и упражнением по лаборатории кода .
Следующие шаги
Ознакомьтесь с общими рабочими процессами , чтобы узнать, как выполнять в Health Connect такие операции, как: