Migracja Health Connect z Androida 13 (APK) na Androida 14 (platforma)

Health Connect zostanie dołączona do Androida 14 jako wspólna warstwa przechowywania danych. danych dotyczących zdrowia konsumentów. Są one chronione dzięki szczegółowym uprawnieniom i są dostępne aplikacja systemowa na Androida (w tym dokumencie nazywana „platformą” ).

Deweloperzy powinni rozważyć plik APK Health Connect (Android 13) jako wersję wsteczną warstwa zgodności dla modelu platformy. Model ramowy zachowa W 100% są zgodne z poprzednimi plikami APK.

Podczas przechodzenia z Androida 13 na 14 niezbędnie ważne jest, interfejs jest maksymalnie intuicyjny.

Ten dokument zawiera opis planu migracji i przykładową migrację scenariuszy i zawiera listę zmian w pakiecie SDK Jetpack, który ułatwia dostęp do Interfejs Health Connect API.

Plan migracji

  1. Po opublikowaniu Androida 14 Google przejdzie na dostarczanie Health Connect jako aplikację systemową Androida.
  2. Dane z pliku APK będą uzupełniane po osiągnięciu spójności funkcji.
  3. Wszystkie punkty wejścia będą kierowane na interfejs aplikacji systemowej.
  4. Rozpocznie się migracja danych. W trakcie migracji narzędzie Interfejsy API modułów zostaną zawieszone ze stanem „Migracja w toku” stanu. Ten będzie też widoczna w interfejsie Health Connect.
  5. Po zakończeniu migracji możesz odinstalować plik APK.
.

Przykładowe scenariusze migracji

Oto kilka przykładowych scenariuszy, które objaśniają proces migracji obu typów Typy danych interval i series:

Przykład 1 – aktywny (dane interwału)

Użytkownik gromadzi rekordy biegowe od 10 lat każdego dnia przez godzinę. Ten równa się:

  • Rekordy sesji ćwiczeń: 365 * 10 * 1
  • Kroki: 365 × 10 × 1
  • Kalorie: 365 * 10 * 1
  • Łącznie = 365 * 10 * 3 (365 * 30) = 10 150

Biorąc pod uwagę,że 1 fragment odpowiada 3000 rekordów, powyższe dane stanowią łącznie około 4. fragmentami.

Nasze wewnętrzne testy potwierdziły, że typowy fragment zajmuje około danych do wstawienia, więc dane zostaną przeniesione za około 4 sek.

Przykład 2. Tętno (dane serii)

Użytkownik zebrał dane dotyczące tętna z 5 lat (z zapisem tworzonym co minutę) w sumie 2 628 000 rekordów.

Przy 3000 rekordów na fragment dane są rozłożone na 876 fragmentów. Udzielone że wstawienie 1 fragmentu zajmuje około sekundy, dane zostaną przeniesione. w ciągu niecałych 15 minut.

Proponowany przepływ migracji

Zdecydowaliśmy się na migrację błyskawiczną. W praktyce jest to oznacza, że pakiet APK stanie się nieaktywny od razu po uaktualnieniu urządzenia do Androida 14 przy minimalnych nakładach pracy użytkownika.

Przyjrzyjmy się ogólnemu procesowi migracji:

  1. Użytkownik instaluje Androida 14 na swoim urządzeniu.
  2. Jetpack 14 kieruje użytkownika do interfejsów API modułu i blokuje go, migracja jest w toku.
  3. Proces migracji rozpoczyna się, gdy wersja modułu jest zgodna z funkcjami z plikiem APK – tj. wersja modułu zawiera ten sam zestaw funkcji lub i innych. Po rozpoczęciu procesu migracji pakiet APK przeniesie uprawnienia i danych.
    1. Jeśli obie wersje nie są zgodne z funkcjami, wersja modułu będzie wymagają uaktualnienia. Po zakończeniu uaktualniania proces migracji .
  4. Po zakończeniu migracji stan zmienia się na „Migracja”. „Ukończono”, a interfejsy API modułu są odblokowane.
  5. Plik APK można teraz odinstalować.

Elementy interfejsu migracji

Poniższe ekrany są wyświetlane w module szkolenia użytkowników. zarówno przed migracją, jak i w jej trakcie:

Rysunek 1. Jeśli plik APK Health Connect nie ma informacji o migracji, wyświetli się odpowiedni komunikat. z informacją użytkownika o konieczności zaktualizowania pakietu APK. Jeśli użytkownik odrzuci aktualizację, nadal działa i zaczyna gromadzić uprawnienia i dane:

Wymagana aktualizacja telefonu


Rysunek 2. jeśli moduł platformy wymaga aktualizacji, aby stał się funkcją. zgodne, wyświetli się prośba o wykonanie aktualizacji zrestartować urządzenie. Jeśli użytkownik odrzuci aktualizację, moduł będzie kontynuowany. aby działać i zacząć gromadzić uprawnienia i dane:

Wymagana aktualizacja pliku APK


Rysunek 3. Podczas procesu migracji wyświetlany jest wskaźnik postępu z tekstem wyjaśniającym, że dane są synchronizowane:

Synchronizacja danych

Dane po usunięciu duplikatów

Jeśli moduł platformy rozpoczął pobieranie danych i uprawnień przed migracją lub przywróceniem w chmurze, obowiązują zasady.

Uprawnienia

Jeśli w module platformy znajdują się uprawnienia, każdy duplikat uprawnienia uzyskane z pliku APK są ignorowane podczas migracji.

Dane

Podczas migracji zduplikowane dane pochodzące z pliku APK są ignorowane. Więcej jako pierwsze wyświetlane są najnowsze dane z modułu.

Dane są usuwane po clientRecordId, jeśli identyfikator rekordu został podany przez klienta. Jeśli nie, w przedziałach czasu (startTime i endTime w przypadku wartości wewnętrznych i time w przypadku rekordów błyskawicznych) są traktowane jako klucz razem z danymi typu i nazwy pakietu aplikacji.

Zmiany w pakiecie SDK Jetpack

Pakiet SDK Jetpack jest wspólnym punktem integracji zarówno dla Plik APK Connect oraz interfejsy API platformy Health Connect.

OEM może rozpocząć integrację z Jetpackiem 13, aby po przejściu możesz dostosować nową bibliotekę i skompilować w niej Android 14.

Wkrótce opublikujemy nową wersję pakietu SDK, która umożliwi przejście na Android 14. Aby przeprowadzić integrację, musisz wprowadzić pewne zmiany w swojej dotychczasowej integracji. zapewni płynne przejście.

Deklaracja uprawnień

W Androidzie 13 uprawnienia deklarujesz w niestandardowym formacie plik zasobów połączony z plikiem manifestu:

#AndroidManifest.xml

<activity>
    android:name=".RationaleActivity"
    android: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>

<queries>
    <package android:name="com.google.android.apps.healthdata" />
</queries>

#health_permissions.xml

<resources>
  <array name="health_permissions">
    <item>androidx.health.permission.SleepSession.READ</item>
    <item>androidx.health.permission.SleepStage.READ</item>
    <item>androidx.health.permission.Weight.READ</item>
    <item>androidx.health.permission.Weight.WRITE</item>
  </array>
</resources>

Aby zapewnić obsługę Androida 14, deweloperzy muszą przejść na uprawnienia standardowe format:

#AndroidManifest.xml

<uses-permission android:name=”android.permission.health.READ_SLEEP” />
<uses-permission android:name=”android.permission.health.READ_WEIGHT” />
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT” />

<activity>
    android:name=".RationaleActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
    </intent-filter>
</activity>

<queries>
    <package android:name="com.google.android.apps.healthdata"/>
</queries>

Otwórz Health Connect

Większość aplikacji innych firm ma przycisk otwierający aplikację Health Connect. w polu Zarządzaj dostępem w Fitbit.

Na Androidzie 13 otwórz aplikację Health Connect, korzystając z nazwy pakietu. za pomocą działania androidx.health.ACTION_HEALTH_CONNECT_SETTINGS.

W Androidzie 14 musisz użyć działania intencji, które jest określone w pakiecie SDK Jetpack. ma różne wartości w zależności od wersji Androida, na której działa:

@get:JvmName("getHealthConnectSettingsAction") @JvmStatic val ACTION_HEALTH_CONNECT_SETTINGS

Pobieranie klienta Health Connect

Utworzyliśmy pojedynczy interfejs API o nazwie sdkStatus dostępny w Jetpack 11, zastąpią 2 inne wycofane interfejsy API – IsSdkSupported() oraz isProviderAvailable().

Zmiany interfejsu API rekordu sesji

W ramach wersji alfa10 usunęliśmy 4 podtypy ExerciseSession wersja:

  • ExerciseEvent
  • ExerciseLaps
  • ExerciseRepetitions
  • SwimmingStrokes
.

Tak jak w przypadku elementu ExerciseSessionRecord, SleepStage stanie się podtypem SleepSession

Zarówno podtypy ExerciseSessionRecord, jak i zmiany SleepSession zostaną w ramach kwietniowej aktualizacji pakietu SDK.

Aktualizacja typu sesji ćwiczeń

Poniższe typy sesji ćwiczeń nie będą już obsługiwane, ale zamiast nich zostaną dodane w późniejszym terminie:

  • EXERCISE_TYPE_BACK_EXTENSION
  • EXERCISE_TYPE_BARBELL_SHOULDER_PRESS
  • EXERCISE_TYPE_BENCH_PRESS
  • EXERCISE_TYPE_BENCH_SIT_UP
  • EXERCISE_TYPE_BURPEE
  • EXERCISE_TYPE_CRUNCH
  • EXERCISE_TYPE_DEADLIFT
  • EXERCISE_TYPE_DUMBBELL_CURL_LEFT_ARM
  • EXERCISE_TYPE_DUMBBELL_CURL_RIGHT_ARM
  • EXERCISE_TYPE_DUMBBELL_FRONT_RAISE
  • EXERCISE_TYPE_DUMBBELL_LATERAL_RAISE
  • EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM
  • EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM
  • EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM
  • EXERCISE_TYPE_FORWARD_TWIST
  • EXERCISE_TYPE_JUMPING_JACK
  • EXERCISE_TYPE_JUMP_ROPE
  • EXERCISE_TYPE_LAT_PULL_DOWN
  • EXERCISE_TYPE_LUNGE
  • EXERCISE_TYPE_PLANK
  • EXERCISE_TYPE_SQUAT
  • EXERCISE_TYPE_UPPER_TWIST

Typy zamienników:

  • EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
  • EXERCISE_TYPE_STRENGTH_TRAINING
  • EXERCISE_TYPE_CALISTHENICS

Obsługa historii zmian

Dzienniki zmian nie zostaną przeniesione w ramach przechodzenia z pakietu APK na Androida 14.

Po zakończeniu migracji będziesz otrzymywać powiadomienia TOKEN_EXPIRED lub TOKEN_INVALID wyjątków. Należy to zrobić w następujący sposób (w kolejność preferencji):

1. Odczyt i usuwanie duplikatów wszystkich danych od „ostatniego odczytu” sygnatury czasowej lub dla ostatniego 30 dni

Przechowuje sygnaturę czasową ostatniego odczytu danych z Health Connect przez aplikację. Token wygasa, należy ponownie odczytać dane z tej wartości lub z ostatnich 30 dni (w zależności od wartości minimalnej) i deduplikować ją na podstawie odczytanych wcześniej danych. za pomocą identyfikatora UUID.

2. Odczyt danych od „ostatniego odczytu” sygnatura czasowa

Ustal sygnaturę czasową, która wskazuje, kiedy dane zostały ostatnio odczytane z Health Connect , a po wygaśnięciu tokena odczytują wszystkie dane po tej wartości.

3. Usuń i ponownie odczytaj dane z ostatnich 30 dni

Usuń wszystkie dane odczytywane z Health Connect z ostatnich 30 dni i przeczytaj wszystkie danych (np. tak jak w przypadku pierwszej integracji aplikacji z Health Połącz).

4. nic nie robić (tzn. ponownie odczytać dane z ostatnich 30 dni bez usuwania duplikatów);

Należy korzystać z tej usługi w ostateczności, ponieważ wiąże się to z ryzykiem wyświetlenia powielonych danych. Deweloperzy powinni zamiast tego zapoznać się z opcjami 1–3, ponieważ identyfikatory UUID powinny być już uwzględnione.

Testowanie interfejsów API Androida 14 za pomocą pakietu SDK Jetpack

Pakiet SDK Androida 14 Jetpack ma zostać wydany 7 czerwca 2023 r. wraz z Wersja beta 3 Androida 14. Musisz zacząć kompilować aplikację pod kątem Androida 14, aby móc korzystać z pakietu SDK Androida 14 Jetpack.

Jeśli chcesz przetestować swoje rozwiązanie w porównaniu z kompilacjami w wersji przedpremierowej dla programistów aplikacji na Androida przed 7 czerwca skontaktuj się z osobą kontaktową w Google, aby uzyskać pomoc.

Jeśli chcesz przetestować swoje rozwiązanie w porównaniu z wersją beta 3, utwórz następujące zmiany w pakiecie APK:

  1. Ustaw compileSDKPreview = UpsideDownCake.
  2. Zaktualizuj plik manifestu, aby zawierał intencję dla Androida 14:
# AndroidManifest.xml

<uses-permission android:name=”android.permission.health.READ_SLEEP”/>
<uses-permission android:name=”android.permission.health.READ_WEIGHT”/>
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT”/>

<activity>
    android:name=".RationaleActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
    </intent-filter>
</activity>

<activity-alias>
      android:name="AndroidURationaleActivity"
      android:exported="true"
      android:targetActivity=".RationaleActivity"
      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>

<queries>
    <package android:name="com.google.android.apps.healthdata" />
</queries>

Dostosowanie OEM

Android 14: prywatność i aplikacje Health Connect opcje zarządzania danymi znajdują się w Ustawieniach systemu.

Aby ekrany zarządzania danymi i uprawnieniami wyglądały jak część urządzenia, Health Connect oferuje motywy OEM przez wykorzystanie niestandardowych nakładek.

Dokumentację dotyczącą stylu OEM znajdziesz w Usługach mobilnych Google Health Connect dokumentacji.