Android 9 zawiera android.hardware.health HAL 2.0,
główną wersję uaktualnienia Health@1.0 HAL. Nowa HAL ma te zalety:
Lepsze oddzielenie ramy od kodu dostawcy.
Wycofuje zbędny demon healthd.
Większa swoboda dostosowywania raportów z informacjami o zdrowiu przez dostawców.
więcej informacji o stanie urządzenia niż tylko o baterii.
Android 11 zawiera android.hardware.health HAL 2.1,
co jest drobną aktualizacją interfejsu HAL health@2.0. Nowa wersja HAL ma te zalety:
Łatwiejsza implementacja
Lepsze dopasowanie do istniejących interfejsów HAL 2.0
Lepsze oddzielenie Treble w kodzie ładowania w trybie offline
lepsza obsługa platformy, która wskazuje stan baterii urządzenia;
Android 13 zawiera interfejs android.hardware.health AIDL HAL, który jest konwersją interfejsu health@2.1 HAL. Nowa HAL ma te zalety:
Usuwanie nieużywanych interfejsów API związanych z ładowarkami
Usuwanie nieużywanych pól StorageAttribute i powiązanych z nimi pól
Obsługa ładowania na stacji dokującej.
Wymagania
Urządzenia z Androidem 9 i 10
Urządzenia z Androidem 9 muszą mieć interfejs HAL 2.x (nie można używać interfejsu HAL 1.0) lub interfejs AIDL HAL. Urządzenia, które nie są uruchamiane z Androidem 9, ale planują zaktualizować obraz dostawcy do wersji 3 macierzy zgodności platformy docelowej (wydanej w Androidzie 9), muszą usunąć istniejące implementacje interfejsu HAL 1.0 i zastosować interfejs HAL 2.x lub interfejs HAL AIDL.
AOSP zawiera wiele bibliotek pomocniczych, które ułatwiają implementację interfejsu HAL 2.0 i przejście ze starego interfejsu HAL 1.0.
Urządzenia z Androidem 11 i Androidem 12
Urządzenia z Androidem 11 muszą mieć interfejs HAL 2.1 (nie można używać interfejsu HAL 1.0 ani 2.0) lub interfejs AIDL HAL. Urządzenia, które nie są jeszcze dostępne w Androidzie 11, ale mają zostać zaktualizowane do wersji 5 z tablicy zgodności z Target Framework (opublikowanej w Androidzie 11), muszą usunąć istniejące implementacje interfejsu HAL 2.0 i zastosować interfejs HAL 2.1 lub interfejs HAL AIDL. Zaleca się też, aby urządzenia, które nie uruchamiają Androida 11 i nie planują aktualizować obrazu dostawcy, zawierały HAL 2.1.
AOSP zawiera wiele bibliotek pomocniczych, które ułatwiają implementację interfejsu HAL 2.1 i przejście ze starego interfejsu HAL 1.0.
Urządzenia z Androidem 13 lub nowszym
Urządzenia wprowadzane na rynek z Androidem 13 muszą zawierać kod HAL AIDL (i nie mogą udostępniać HAL HIDL). Urządzenia, które nie są uruchamiane z Androidem 13, ale planują zaktualizować obraz dostawcy do wersji docelowej w ramach wersji 7 macierzy zgodności frameworku (wydane w Androidzie 13), muszą usunąć istniejące implementacje interfejsu HIDL HAL oraz udostępnić interfejs AIDL HAL. W przypadku urządzeń, które nie mają Androida 13 i nie planują aktualizować obrazu dostawcy, zalecamy również stosowanie wartości HAL AIDL.
Urządzenia nie mogą udostępniać interfejsu HIDL 1.0.
AOSP zawiera wiele bibliotek pomocniczych, które ułatwiają implementację interfejsu AIDL HAL i przejście ze starych interfejsów HIDL HAL.
Terminologia
health@1.0: skrót od android.hardware.health@1.0. Odnosi się do interfejsu HIDL HAL dla zdrowia w wersji 1.0, który został wydany w Androidzie 8.0.
health@2.0: skrót od android.hardware.health@2.0. Odnosi się do interfejsu HIDL HAL dla zdrowia w wersji 2.0, który został wydany w Androidzie 9.
health@2.1: skrót od android.hardware.health@2.1. Odnosi się do stanu HAL HIDL w wersji 2.1 wydanej w Androidzie 11.
health AIDL HAL: skrót od android.hardware.health.
Wersja 1 została wydana w Androidzie 13.
charger: plik wykonywalny działający w trybie ładowania w trybie wyłączenia, który wyświetla animację ładowania telefonu.
recovery: plik wykonywalny działający w trybie odzyskiwania, który musi pobrać informacje o baterii.
healthd: starszy demon działający w Androidzie, który pobiera informacje dotyczące zdrowia i przekazuje je do frameworku.
storaged: demon działający na Androidzie, który pobiera informacje o pamięci i przekazuje je do frameworku.
Zdrowie na Androidzie 8.x
W Androidzie 8.x komponent stanu działa zgodnie z diagramem poniżej:
Rysunek 1 Health w Androidzie 8.x.
Na tym diagramie:
Do komunikacji z sprzętem framework używa 1 wywołania binder i 1 wywołania hwbinder.
healthd jest połączony statycznie z usługami libhealthd_android, libbatterymonitor i libbatteryservice.
health@1.0-impl zawiera linki statyczne do libhealthd.BOARD.
Każda płyta może mieć inny libhealthd.BOARD. W czasie kompilacji określa się, jakie wartości mają mieć charger, health@1.0-impl i recovery link.
W przypadku innych trybów:
Rysunek 2. Stan w Androidzie 8.x, ładowanie w trybie wyłączenia i tryb przywracania.
ładowarka jest statycznie połączona z libhealthd.BOARD,
libhealthd_charger i libbatterymonitor.
recovery jest statycznie powiązany z libhealthd.BOARD i libbatterymonitor.
Zdrowie w Androidzie 9
W Androidzie 9 komponent stanu zdrowia działa zgodnie z tym schematem:
Rysunek 3. Health w Androidzie 9.
Platforma próbuje pobrać usługę health@2.0 z hwservicemanager.
Jeśli się nie uda, wywołuje health@1.0 (w Androidzie 8.x). Stary kod jest zachowany, aby obraz systemu Android 9 był zgodny z obrazem dostawcy Androida 8.x. Platforma nie pobiera informacji z obu list HAL, ponieważ na urządzeniu może istnieć tylko jedna wersja usługi (1.0 lub 2.0).
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.