Uma camada de abstração de hardware (HAL, na sigla em inglês) é um tipo de camada de abstração com uma interface padrão para os fornecedores de hardware implementarem. Uma HAL permite que os fornecedores de hardware implementem recursos de nível inferior e específicos do dispositivo sem afetar ou modificar o código em camadas de nível superior.
Termos obrigatórios
A seguir, há uma lista de definições de termos usados nesta seção da documentação:
- Linguagem de definição de interface do Android (AIDL)
- Uma linguagem semelhante a Java usada para definir interfaces de maneira independente da linguagem de programação usada. A AIDL permite a comunicação entre clientes e serviços HAL.
- HAL vinculada
- Uma HAL que se comunica com outros processos usando chamadas de comunicação entre processos (IPC, na sigla em inglês) do Binder. As HALs vinculadas são executadas em um processo separado do cliente que as usa. As HALs vinculadas são registradas com um administrador do serviço para que os clientes possam acessar os recursos delas. As HALs gravadas para o Android 8 e versões mais recentes são vinculadas.
- Cliente HAL
- O processo que acessa o serviço HAL.
- Interface HAL
- A interface comum usada pelo cliente e pelo serviço HAL para se comunicar.
- Serviço HAL
O código específico do hardware, como o código que se comunica com a câmera do dispositivo. É necessário implementar todas as HALs obrigatórias listadas na matriz de compatibilidade da versão de destino na partição do fornecedor. Para mais informações sobre matrizes de compatibilidade, consulte Matrizes de compatibilidade.
Também é possível criar uma nova interface HAL ou estender a interface de uma HAL para oferecer suporte aos recursos exclusivos do hardware.
- Linguagem de definição de interface de hardware (HIDL)
Uma linguagem usada para definir interfaces de maneira independente da linguagem de programação usada. A HIDL permite a comunicação entre clientes e serviços HAL.
- HAL de mesmo processo (SP)
Um conjunto restrito de HALs encapsuladas. A participação no conjunto é controlada pelo Google. As HALs de SP incluem:
- HAL do mapper C estável 5
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (fornecido pelo sistema Android, sempre encapsulado)
- android.hardware.renderscript@1.0
- HAL encapsulada
Um serviço HAL criado antes do Android 8, mas que foi encapsulado em um wrapper AIDL ou HIDL para funcionar com o Android 8 e versões mais recentes.
A seguir
- Para saber como implementar um serviço HAL, consulte AIDL para HALs.
- Para saber como criar ou estender uma HAL atual, consulte as Interfaces estendidas anexadas.