Warstwa abstrakcji sprzętowej (HAL) to typ warstwy abstrakcji ze standardowym interfejsem, który mogą implementować dostawcy sprzętu. HAL umożliwia dostawcom sprzętu implementowanie funkcji niskiego poziomu związanych z konkretnym urządzeniem bez wpływu na kod na wyższych poziomach lub jego modyfikacji.
Wymagane warunki
Poniżej znajdziesz definicje terminów używanych w tej sekcji dokumentacji:
- Język definiowania interfejsu Androida (AIDL)
- Język podobny do Javy, używany do definiowania interfejsów w sposób niezależny od używanego języka programowania. AIDL umożliwia komunikację między klientami HAL a usługami HAL.
- Binderized HAL
- HAL, który komunikuje się z innymi procesami za pomocą wywołań komunikacji między procesami (IPC) za pomocą bindera. Binderized HALs działają w oddzielnym procesie od klienta, który z nich korzysta. Binderized HALs są rejestrowane w menedżerze usług, aby klienci mogli korzystać z ich funkcji. Interfejsy HAL napisane na potrzeby Androida 8 i nowszych są skompilowane w binderze.
- Klient HAL
- Proces uzyskujący dostęp do usługi HAL.
- Interfejs HAL
- Interfejs wspólny używany przez klienta HAL i usługę do komunikacji.
- Usługa HAL
Kod związany z sprzętem, np. kod, który komunikuje się z kamerą Twojego urządzenia. Musisz wdrożyć wszystkie wymagane HAL wymienione w tablicy zgodności dla wersji, na którą kierujesz swoją partycję dostawcy. Więcej informacji o matrycach zgodności znajdziesz w artykule Matryce zgodności.
Możesz też utworzyć nowy interfejs HAL lub rozszerzyć interfejs HAL, aby obsługiwać unikalne funkcje sprzętu.
- Język definiowania interfejsu sprzętowego (HIDL)
Język używany do definiowania interfejsów w sposób niezależny od języka programowania. HIDL umożliwia komunikację między klientami HAL a usługami HAL.
- Same Process (SP) HAL
Ograniczony zestaw zapakowanych HAL-i. Członkowością w zbiorze zarządza Google. HAL-e SP obejmują:
- Stabilny mapper C 5 HAL
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (dostarcza system Android, zawsze opakowany)
- android.hardware.renderscript@1.0
- Zawinięta HAL
usługę HAL utworzoną przed Androidem 8, ale zapakowaną w opakowanie AIDL lub HIDL, aby działała z Androidem 8 lub nowszym.
Co dalej?
- Aby dowiedzieć się, jak zaimplementować usługę HAL, zapoznaj się z dokumentem AIDL dla HAL-i.
- Aby dowiedzieć się, jak utworzyć lub rozszerzyć istniejący interfejs HAL, zapoznaj się z artykułem Załączone rozszerzone interfejsy.