Уровень абстрагирования оборудования (HAL) – это тип уровня абстрагирования со стандартным интерфейсом, который могут реализовать поставщики оборудования. HAL позволяет поставщикам оборудования реализовывать низкоуровневые функции, специфичные для устройства, не затрагивая и не изменяя код на более высоких уровнях.
Обязательные условия
Ниже приведены определения терминов, используемых в этом разделе документации.
- Язык описания интерфейсов Android (AIDL)
- Язык, похожий на Java, который используется для определения интерфейсов независимо от используемого языка программирования. AIDL позволяет наладить связь между клиентами и сервисами HAL.
- HAL с привязкой
- HAL, который взаимодействует с другими процессами с помощью вызовов межпроцессного взаимодействия Binder (IPC). HAL, использующие Binder, выполняются в процессе, отдельном от клиента, который их использует. HAL, связанные с Binder, регистрируются в диспетчере сервисов, чтобы клиенты могли получить доступ к их возможностям. HAL, написанные для Android 8 и более поздних версий, являются связанными с Binder .
- Клиент HAL
- Процесс, который обращается к сервису HAL.
- Интерфейс HAL
- Общий интерфейс, используемый клиентом и сервисом HAL для связи.
- Сервис HAL
Код, относящийся к оборудованию, например код, который взаимодействует с камерой устройства. В разделе поставщика необходимо реализовать все обязательные уровни абстракции оборудования, перечисленные в матрице совместимости для целевой версии. Дополнительную информацию о матрицах совместимости можно найти в разделе Матрицы совместимости.
Вы также можете создать новый интерфейс HAL или расширить интерфейс HAL, чтобы поддерживать уникальные возможности оборудования.
- Язык описания аппаратного интерфейса (HIDL)
Язык, используемый для определения интерфейсов независимо от языка программирования. HIDL обеспечивает связь между клиентами HAL и службами HAL.
- Уровень абстрагирования оборудования (HAL) для одного процесса (SP)
Ограниченный набор обернутых HAL. Членство в наборе контролируется Google. В SP HAL входят:
- Стабильный HAL C mapper 5
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (предоставляется системой Android, всегда оборачивается)
- android.hardware.renderscript@1.0
- Обернутый HAL
Сервис HAL, созданный до Android 8, но обернутый в оболочку AIDL или HIDL для работы с Android 8 и более поздними версиями.
Что дальше?
- Чтобы узнать, как реализовать сервис HAL, ознакомьтесь с AIDL для HAL.
- Чтобы узнать, как создать или расширить существующий HAL, ознакомьтесь с разделом Прикрепленные расширенные интерфейсы.