Pierwsze kroki z aplikacją Health Connect

Z tego przewodnika dowiesz się, jak zacząć korzystać z Health Connect w aplikacji.

Krok 1. Przygotuj aplikację Health Connect

Aplikacja Health Connect jest odpowiedzialna za obsługę wszystkich żądań aplikacja wysyła za pomocą pakietu Health Connect SDK. Żądania te obejmują zapisywanie danych i zarządzaniem 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 postępować w przypadku kilku najnowszych wersji Androida.

Android 14

Od Androida 14 (poziom interfejsu API 34) Health Connect jest częścią Android Framework. Ta wersja Health Connect jest modułem platformy. Na Nie wymaga konfiguracji.

Android 13 i starsze

Na Androidzie 13 (API na poziomie 33) i starszych wersjach Health Connect nie jest częścią platformy Android. Aby to zrobić, musisz zainstalować aplikację Health Connect ze Sklepu Google Play.

jeśli aplikacja jest zintegrowana z Health Connect na Androidzie 13 lub starszym; chcesz przeprowadzić migrację na Androidzie 14, zapoznaj się z artykułem Migracja z Androida 13 na 14

Otwórz aplikację Health Connect

Health Connect nie będzie już domyślnie wyświetlany na ekranie głównym. Aby otworzyć aplikację Zdrowie Połącz, otwórz Ustawienia > Aplikacje > Health Connect lub dodaj Health Connect do menu Szybkich ustawień.

Health Connect wymaga też, aby użytkownik miał włączoną blokadę ekranu kodu PIN, wzoru lub hasła do przechowywania danych dotyczących zdrowia w aplikacji Zdrowie Gdy urządzenie jest zablokowane, funkcja Connect jest chroniona przed złośliwymi atakami. Aby ustawić blokady ekranu, wybierz Ustawienia > Bezpieczeństwo > Blokada ekranu.

Krok 2. Dodaj pakiet Health Connect SDK do aplikacji

Pakiet Health Connect SDK odpowiada za używanie interfejsu Health Connect API do wysyłania żądań podczas wykonywania operacji na magazynie danych w Health Połącz aplikację.

Dodaj zależność Health Connect SDK w pliku build.gradle na poziomie modułu:

dependencies {
  ...
  implementation "androidx.health.connect:connect-client:1.1.0-alpha02"
  ...
}

Najnowsza wersja znajdziesz w wersjach Health Connect.

Krok 3. Skonfiguruj aplikację

W sekcjach poniżej wyjaśniamy, jak skonfigurować integrację z aplikacją. Health Connect.

Deklarowanie uprawnień

Dostęp do danych o zdrowiu i aktywności fizycznej jest poufny. Health Connect implementuje warstwa zabezpieczeń do operacji odczytu i zapisu, pozwalająca utrzymać zaufanie użytkowników.

Zadeklaruj uprawnienia do odczytu i zapisu w pliku AndroidManifest.xml na podstawie wymagane typy danych. Upewnij się, że używasz zestawu uprawnień prosi o dostęp w domenie po wypełnieniu formularza.

Health Connect korzysta ze standardowego formatu deklaracji uprawnień Androida. Przypisz uprawnienia za pomocą tagów <uses-permission>. Umieść je w <manifest> tagu.

<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 tutaj: Lista typów danych.

Wyświetl okno polityki prywatności obowiązującej w Twojej aplikacji

Plik manifestu Androida musi zawierać aktywność, która wyświetla polityki prywatności, która uzasadnia przyznanie aplikacji przyznanych uprawnień; opisujący sposób wykorzystywania i przetwarzania danych użytkownika.

Zadeklaruj tę aktywność do obsługi: ACTION_SHOW_PERMISSIONS_RATIONALE w którym jest ona wysyłana do aplikacji, gdy użytkownik kliknie link do polityki 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. Zezwala aplikacji na korzystanie z magazynu danych w aplikacji Health Connect. it automatycznie zarządza jego połączeniem z bazową warstwą pamięci masowej i obsługuje wszystkich adresów IPC oraz serializacji żądań wychodzących i przychodzących.

Aby uzyskać instancję klienta, zadeklaruj nazwę pakietu Health Connect w Najpierw plik 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 przy użyciu getSdkStatus. Jeśli tak, uzyskaj HealthConnectClient instancja.

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ć o uprawnienia użytkownika. 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 z zestawu 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 Twoja aplikacja ma już przyznano wymagane uprawnienia. Jeśli nie, użyj createRequestPermissionResultContract, aby poprosić o: tych uprawnień. Pojawi 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, bo użytkownicy mogą przyznawać i odbierać uprawnienia ich w każdej chwili. Aplikacja musi okresowo sprawdzać przyznane uprawnienia. i obsługiwać scenariusze, w których dochodzi do utraty uprawnień.

Krok 5. Przeprowadź operacje

Teraz gdy wszystko jest gotowe, wykonaj operacje odczytu i zapisu w aplikacji.

Zapisywanie danych

Uporządkuj dane w rekord. Zobacz listę typy danych dostępne 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

Swoje dane możesz odczytywać pojedynczo za pomocą narzędzia 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ą 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, w których dowiesz się więcej o funkcjach Health Connect jako sprawdzone metody płynnej integracji:

Materiały

Zapoznaj się z tymi materiałami, które mogą Ci pomóc rozwoju usługi.

  • Pakiet Health Connect SDK (dostępny na Jetpack): umieść ten pakiet SDK w do korzystania z interfejsu Health Connect API.
  • Dokumentacja API: zapoznaj się z dokumentacją Jetpack: Interfejs Health Connect API.
  • Formularz prośby o deklarację dotyczącą interfejsu API: użyj tego formularza, aby poprosić o uprawnienia do odczytu i zapisu typów danych. Zobacz Aby dowiedzieć się więcej, poproś o dostęp do typów danych z Health Connect.
  • Opcjonalny przykładowy kod GitHub i ćwiczenia z programowania: zobacz przykładowy kod GitHub dzięki repozytorium i ćwiczeniu z codelab, które pomogą Ci zdobyć rozpoczęto.
.

Dalsze kroki

Zapoznaj się z sekcją Typowe przepływy pracy, aby dowiedzieć się, jak wykonywać operacje Health Connect, na przykład: