Z tego przewodnika dowiesz się, jak zacząć korzystać z Health Connect w aplikacji.
Krok 1. Przygotuj aplikację Health Connect
Aplikacja Health Connect odpowiada za obsługę wszystkich żądań, które Twoja aplikacja wysyła za pomocą pakietu Health Connect SDK. Te prośby obejmują przechowywanie danych i zarządzanie dostępem do odczytu i zapisu.
Dostęp do Health Connect zależy od wersji Androida zainstalowanej na telefonie. W poniższych sekcjach opisano, jak postępować w przypadku kilku najnowszych wersji Androida.
Android 14
Począwszy od Androida 14 (poziom interfejsu API 34) Health Connect jest częścią platformy Android Framework. Ta wersja Health Connect jest modułem platformy. Nie musisz niczego konfigurować.
Android 13 i starsze
W Androidzie 13 (poziom API 33) i starszych Health Connect nie jest częścią platformy Android. W tym celu 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 przenieść ją na Androida 14, przeczytaj artykuł Migracja z Androida 13 do wersji 14.
Otwórz aplikację Health Connect.
Health Connect nie jest już domyślnie widoczne na ekranie głównym. Aby otworzyć Health Connect, otwórz Ustawienia > Aplikacje > Health Connect lub dodaj Health Connect do menu Szybkie ustawienia.
Poza tym Health Connect wymaga, aby użytkownik miał włączoną blokadę ekranu z kodem PIN, wzorem lub hasłem. Dzięki temu dane o zdrowiu przechowywane w Health Connect są chronione przed złośliwymi atakami, gdy urządzenie jest zablokowane. Aby ustawić blokadę ekranu, wybierz Ustawienia > Zabezpieczenia > Blokada ekranu.
Krok 2. Dodaj pakiet Health Connect SDK do aplikacji
Pakiet Health Connect SDK odpowiada za korzystanie z interfejsu Health Connect API do wysyłania żądań podczas wykonywania operacji na bazie danych w aplikacji Health Connect.
Dodaj zależność pakietu SDK Health Connect w pliku build.gradle
na poziomie modułu:
dependencies {
...
implementation "androidx.health.connect:connect-client:1.1.0-alph10"
...
}
Najnowszą wersję znajdziesz w Health Connect w wersji.
Krok 3. Skonfiguruj aplikację
W następnych sekcjach dowiesz się, jak skonfigurować aplikację, aby zintegrować ją z Health Connect.
Deklarowanie uprawnień
Dostęp do danych o zdrowiu i aktywności fizycznej jest poufny. Health Connect stosuje warstwę zabezpieczeń do odczytu i zapisu, zachowując zaufanie użytkowników.
W Konsoli Play zadeklaruj dostęp do typów danych z Health Connect, z których aplikacja odczytuje dane i w których zapisuje dane.
W aplikacji zadeklaruj uprawnienia do odczytu i zapisu w pliku AndroidManifest.xml
na podstawie wymaganych typów danych, które powinny być zgodne z tymi, które zadeklarowałeś/zadeklarowałaś w Konsoli Play.
Health Connect korzysta ze standardowego formatu deklaracji uprawnień Androida.
Przypisz uprawnienia za pomocą tagów <uses-permission>
. Umieść je w tagach <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 artykule Lista typów danych.
Wyświetlanie okna dialogowego polityki prywatności aplikacji
Plik AndroidManifest.xml musi zawierać aktywność, która wyświetla politykę prywatności aplikacji. Jest to uzasadnienie żądanych uprawnień, które opisuje sposób wykorzystywania i obsługi danych użytkownika.
Zadeklaruj tę aktywność, aby obsłużyć działanie ACTION_SHOW_PERMISSIONS_RATIONALE
, które jest wysyłane do aplikacji, gdy użytkownik kliknie link Polityka prywatności na ekranie uprawnień 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>
...
Pobieranie klienta Health Connect
HealthConnectClient
to punkt wejścia do interfejsu Health Connect API.
Pozwala aplikacji na korzystanie z magazynu danych w aplikacji Health Connect. Aplikacja automatycznie zarządza połączeniem z warstwą pamięci masowej i obsługuje wszystkie IPC oraz serializację żądań wychodzących i przychodzących odpowiedzi.
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 (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 przyznanie uprawnień
Po utworzeniu instancji klienta aplikacja musi poprosić użytkownika o uprawnienia. Użytkownicy muszą mieć możliwość przyznania lub odmowy uprawnień w dowolnym momencie.
Aby to zrobić, utwórz zestaw uprawnień dla wymaganych typów danych. Upewnij się, że uprawnienia w zestawie są 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 aplikacja ma już przyznane wymagane uprawnienia. Jeśli nie, użyj createRequestPermissionResultContract
, aby poprosić o te uprawnienia. Wyświetli się ekran uprawnień 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 przyznawać lub cofać w dowolnym momencie. Aplikacja musi okresowo sprawdzać, czy przyznano uprawnienia, oraz obsługiwać scenariusze, w których uprawnienia zostaną utracone.
Krok 5. Wykonywanie operacji
Gdy wszystko będzie gotowe, wykonaj w aplikacji operacje odczytu i zapisu.
Zapisywanie danych
Uporządkuj dane w rekord. 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ą narzędzia 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 możesz odczytać indywidualnie za pomocą 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.
}
}
Dane możesz też odczytywać w postaci danych zagregowanych za pomocą 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 oraz wskazówki dotyczące sprawnej integracji:
- Zarządzanie uprawnieniami w Health Connect
- Czytanie i pisanie w Health Connect
- Wskazówki dotyczące skutecznej integracji z Health Connect
Materiały
Zapoznaj się z poniższymi materiałami, które pomogą Ci w późniejszym tworzeniu aplikacji.
- Pakiet SDK Health Connect (dostępny w Jetpacku): dodaj ten pakiet SDK do aplikacji, aby korzystać z interfejsu Health Connect API.
- Materiały referencyjne interfejsu API: zapoznaj się z dokumentacją Jetpack dotyczącą interfejsu Health Connect API.
- Zadeklaruj użycie typów danych: w Konsoli Play zadeklaruj dostęp do typów danych Health Connect, które aplikacja odczytuje i zapisze.
- Opcjonalny przykładowy kod GitHub i codelab: aby rozpocząć, zapoznaj się z repozytorium przykładowego kodu GitHuba i ćwiczeniem codelab.
Dalsze kroki
Aby dowiedzieć się, jak wykonywać w Health Connect takie działania jak: