Omówienie warstwy abstrakcji sprzętowej (HAL)

Warstwa abstrakcji sprzętowej (HAL) to typ warstwy abstrakcji ze standardowym interfejsem, który mogą implementować dostawcy sprzętu. HAL pozwala dostawcom sprzętu wdrażać funkcje zależne od urządzenia niższego poziomu bez wpływu i modyfikowania kodu na warstwach wyższego poziomu.

Wymagane warunki

Poniżej znajdziesz listę definicji terminów używanych w tej sekcji dokumentacji:

język definiowania interfejsu Androida (AIDL),
Język podobny do Javy, który służy 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. Powiązane poziomy HAL są uruchamiane w procesie innym niż klient, który ich używa. Powiązane poziomy HAL są rejestrowane przez menedżera usługi, aby klienty miały dostęp do swoich możliwości. Listy HAL napisane na Androida 8 i nowsze wersje są tworzone przy użyciu powiązań.
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 otwiera aparat konkretnego 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ć go, aby wykorzystać unikalne możliwości Twojego sprzętu.

Język definiowania interfejsu sprzętowego (HIDL)

Język używany do definiowania interfejsów w sposób niezależny od używanego języka programowania. HIDL umożliwia komunikację między klientami HAL a usługami HAL.

Same Process (SP) HAL

Ograniczony zestaw opakowanych HAL. Członkowością w zbiorze zarządza Google. HAL-e SP obejmują:

  • Stabilny mapper C 5 HAL
  • OpenGL
  • Wulkan
  • android.hidl.memory@1.0 (dostarczany przez system Android, zawsze zapakowany)
  • android.hardware.renderscript@1.0
Opakowany kod HAL

usługa HAL utworzona przed Androidem 8, ale zapakowana w opakowanie AIDL lub HIDL, aby działać na Androidzie 8 lub nowszym;

Co dalej?