Обзор уровня абстракции оборудования (HAL)

Уровень абстракции оборудования (HAL) — это тип уровня абстракции со стандартным интерфейсом, который могут реализовать производители оборудования. HAL позволяет производителям оборудования реализовывать низкоуровневые функции, специфичные для устройства, не затрагивая и не изменяя код на более высоких уровнях.

Обязательные условия

Ниже приведен список определений терминов, используемых в этом разделе документации:

Язык определения интерфейса Android (AIDL)
Java-подобный язык, используемый для определения интерфейсов независимо от используемого языка программирования. AIDL обеспечивает связь между клиентами HAL и службами HAL.
Связанный HAL
HAL, который взаимодействует с другими процессами с помощью вызовов межпроцессного взаимодействия (IPC) . HAL с привязкой выполняются в отдельном процессе от клиента, который их использует. HAL с привязкой регистрируются у менеджера служб, чтобы клиенты могли получить доступ к своим возможностям. HAL, написанные для Android 8 и выше, связываются.
HAL-клиент
Процесс, который обращается к службе HAL.
HAL-интерфейс
Общий интерфейс, используемый клиентом и службой HAL для связи.
HAL-сервис

Код, специфичный для оборудования, например код, который используется для камеры вашего конкретного устройства. Вы должны реализовать все необходимые HAL, перечисленные в матрице совместимости для целевой версии в разделе поставщика. Дополнительную информацию о матрицах совместимости см. в разделе Матрицы совместимости .

Вы также можете создать новый интерфейс HAL или расширить интерфейс HAL для поддержки уникальных возможностей вашего оборудования.

Язык определения аппаратного интерфейса (HIDL)

Язык, используемый для определения интерфейсов независимо от используемого языка программирования. HIDL обеспечивает связь между клиентами HAL и службами HAL.

Тот же процесс (SP) HAL

Ограниченный набор завернутых HAL. Членство в наборе контролируется Google. HAL SP включают в себя:

  • Стабильный преобразователь C 5 HAL
  • OpenGL
  • Вулкан
  • android.hidl.memory@1.0 (предоставляется системой Android, всегда упакован)
  • android.hardware.renderscript@1.0
Обернутый HAL

Служба HAL, созданная до Android 8, но заключенная в оболочку AIDL или HIDL для работы с Android 8 и более поздних версий.

Что дальше?