Z tego przewodnika dowiesz się, jak zacząć korzystać z Health Connect w swojej aplikacji.
Krok 1. Przygotuj aplikację Health Connect
Aplikacja Health Connect odpowiada za obsługę wszystkich żądań wysyłanych przez aplikację przez pakiet SDK Health Connect. Żądania te obejmują przechowywanie danych oraz zarządzanie ich uprawnieniami do odczytu i zapisu.
Dostęp do Health Connect zależy od wersji Androida zainstalowanej na telefonie. W sekcjach poniżej opisujemy, jak obsługiwać kilka najnowszych wersji Androida.
Android 14
Od Androida od 14 (poziom interfejsu API 34) Health Connect jest częścią platformy Android. Ta wersja Health Connect to moduł platformy. Dzięki temu nie musisz niczego konfigurować.
Android 13 i starsze
Na Androidzie 13 (poziom interfejsu API 33) i starszych wersjach Health Connect nie jest częścią Android Framework. Następnie musisz zainstalować aplikację Health Connect ze Sklepu Google Play.
Jeśli Twoja aplikacja jest zintegrowana z Health Connect na Androidzie 13 lub starszym i chcesz przeprowadzić migrację na Androida 14, przeczytaj artykuł Migracja z Androida 13 na 14.
Otwórz aplikację Health Connect
Health Connect nie wyświetla się już domyślnie na ekranie głównym. Aby otworzyć Health Connect, wybierz Ustawienia > Aplikacje > Health Connect lub dodaj Health Connect do menu Szybkie ustawienia.
Dodatkowo Health Connect wymaga od użytkownika ustawienia blokady ekranu z użyciem kodu PIN, wzoru lub hasła. Dzięki temu dane dotyczące zdrowia przechowywane w Health Connect są chronione przed złośliwymi osobami, gdy urządzenie jest zablokowane. Aby ustawić blokadę ekranu, wybierz Ustawienia > Zabezpieczenia > Blokada ekranu.
Krok 2. Dodaj do aplikacji pakiet SDK Health Connect
Pakiet Health Connect SDK odpowiada za używanie interfejsu Health Connect API do wysyłania żądań podczas wykonywania operacji do magazynu danych w aplikacji Health Connect.
Dodaj zależność z pakietem SDK Health Connect w pliku build.gradle
na poziomie modułu:
dependencies {
...
implementation "androidx.health.connect:connect-client:1.1.0-alpha02"
...
}
Najnowsza wersja znajduje się w wersjach Health Connect.
Krok 3. Skonfiguruj aplikację
W sekcjach poniżej dowiesz się, jak skonfigurować integrację z Health Connect.
Deklarowanie uprawnień
Dostęp do danych dotyczących zdrowia i aktywności fizycznej jest poufny. Health Connect wdraża warstwę zabezpieczeń do operacji odczytu i zapisu, co pozwala utrzymać zaufanie użytkowników.
Zadeklaruj uprawnienia do odczytu i zapisu w pliku AndroidManifest.xml
na podstawie wymaganych typów danych. Upewnij się, że korzystasz z zestawu uprawnień, o dostęp do których prosiłeś po wypełnieniu formularza.
Health Connect korzysta ze standardowego formatu deklaracji uprawnień Androida.
Przypisz uprawnienia za pomocą tagów <uses-permission>
. Umieść je między tagami <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>
Pełną listę uprawnień i odpowiadających im typów danych znajdziesz w sekcji Lista typów danych.
Pokaż okno polityki prywatności obowiązujące w Twojej aplikacji
Plik manifestu aplikacji na Androida musi zawierać aktywność, która wyświetla politykę prywatności aplikacji zgodnie z uzasadnieniem wymaganych uprawnień i opisem sposobu wykorzystywania i przetwarzania danych użytkownika.
Zadeklaruj tę aktywność, aby obsługiwać intencję ACTION_SHOW_PERMISSIONS_RATIONALE
, gdzie jest wysyłana do aplikacji, gdy użytkownik kliknie link polityka prywatności na ekranie uprawnień do 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>
...
Pobierz klienta Health Connect
HealthConnectClient
to punkt wejścia do interfejsu Health Connect API.
Pozwala aplikacji na korzystanie z magazynu danych w aplikacji Health Connect. Automatycznie zarządza połączeniem z bazową warstwą pamięci masowej i obsługuje wszystkie IPC oraz serializację żądań wychodzących i odpowiedzi przychodzących.
Aby uzyskać instancję klienta, najpierw zadeklaruj nazwę pakietu Health Connect w pliku manifestu Androida.
<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
Następnie w sekcji Aktywność sprawdź, czy aplikacja Health Connect jest zainstalowana za pomocą aplikacji getSdkStatus
. Jeśli tak, uzyskaj instancję 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
Krok 4. Poproś użytkownika o uprawnienia
Po utworzeniu instancji klienta aplikacja musi zażądać uprawnień od użytkownika. Użytkownicy muszą mieć możliwość przyznawania i odrzucania uprawnień w dowolnym momencie.
Aby to zrobić, utwórz zestaw uprawnień dla wymaganych typów danych. Upewnij się, że uprawnienia z zestawu zostały najpierw zadeklarowane w pliku manifestu Androida.
// 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)
)
Użyj narzędzia getGrantedPermissions
, aby sprawdzić, czy Twoja aplikacja ma już przyznane wymagane uprawnienia. Jeśli nie, użyj metody createRequestPermissionResultContract
, aby poprosić o te uprawnienia. Wyświetli się ekran uprawnień do 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)
}
}
Nie zakładaj, że uprawnienia są stałe, ponieważ użytkownicy mogą je w każdej chwili przyznać lub odebrać. Aplikacja musi okresowo sprawdzać przyznane uprawnienia i radzić sobie w sytuacjach ich utraty.
Krok 5. Wykonaj operacje
Wszystko jest już ustawione, więc możesz wykonać operacje odczytu i zapisu w aplikacji.
Zapisywanie danych
Utwórz rekord z danymi. Sprawdź listę typów danych dostępnych w Health Connect.
val stepsRecord = StepsRecord(
count = 120,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET,
)
Następnie zapisz rekord za pomocą 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
}
}
Odczytywanie danych
Dane pojedynczo możesz odczytywać w usłudze 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.
}
}
Możesz też odczytywać dane w formie zbiorczej za pomocą narzędzia 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
}
}
Samouczki wideo
Obejrzyj te filmy, które zawierają więcej informacji o funkcjach Health Connect i poznają sprawdzone metody dotyczące płynnej integracji:
- Zarządzanie uprawnieniami w Health Connect
- Czytanie i pisanie w Health Connect
- Jak skutecznie zintegrować Health Connect
Zasoby
W dalszej części procesu tworzenia aplikacji zapoznaj się z tymi zasobami.
- Pakiet SDK Health Connect (dostępny w Jetpack): dodaj ten pakiet SDK do swojej aplikacji, aby korzystać z interfejsu Health Connect API.
- Dokumentacja API: zapoznaj się z dokumentacją Jetpack dotyczącą interfejsu Health Connect API.
- Formularz deklaracji dewelopera prośby o dostęp do interfejsu API: użyj tego formularza, aby poprosić o uprawnienia do odczytu i zapisu typów danych. Więcej informacji znajdziesz w artykule Wysyłanie próśb o dostęp do typów danych z Health Connect.
- Opcjonalny przykładowy kod i ćwiczenie z programowania na GitHubie: Zapoznaj się z przykładowym kodem na GitHubie repozytorium i ćwiczeniami z programowania, które pomogą Ci zacząć.
Dalsze kroki
Zapoznaj się z typowymi przepływami pracy, aby dowiedzieć się, jak wykonywać operacje w Health Connect, takie jak: