Un Hardware Abstraction Layer (HAL) è un tipo di strato di astrazione con un'interfaccia standard che i fornitori di hardware possono implementare. Un HAL consente ai fornitori di hardware di implementare funzionalità di livello inferiore specifiche del dispositivo senza influire o modificare il codice negli strati di livello superiore.
Termini obbligatori
Di seguito è riportato un elenco di definizioni dei termini utilizzati in questa sezione della documentazione:
- Android Interface Definition Language (AIDL)
- Un linguaggio simile a Java utilizzato per definire le interfacce in modo indipendente dal linguaggio di programmazione utilizzato. AIDL consente la comunicazione tra i client HAL e i servizi HAL.
- HAL con binder
- Un HAL che comunica con altri processi utilizzando le chiamate di comunicazione interprocesso (IPC) del binder. Gli HAL con binder vengono eseguiti in un processo separato dal client che li utilizza. Gli HAL con binder vengono registrati con un gestore del servizio in modo che i client possano accedere alle loro funzionalità. Gli HAL scritti per Android 8 e versioni successive sono con binder.
- Client HAL
- Il processo che accede al servizio HAL.
- Interfaccia HAL
- L'interfaccia comune utilizzata sia dal client HAL sia dal servizio per comunicare.
- Servizio HAL
Il codice specifico dell'hardware, ad esempio il codice che comunica con la fotocamera del tuo dispositivo specifico. Devi implementare tutti gli HAL richiesti elencati nella matrice di compatibilità per la release di cui vuoi scegliere come target la partizione del fornitore. Per ulteriori informazioni sulle matrici di compatibilità, consulta Matrici di compatibilità.
Puoi anche creare una nuova interfaccia HAL o estendere l'interfaccia di un HAL per supportare le funzionalità uniche dell'hardware.
- Hardware Interface Definition Language (HIDL)
Un linguaggio utilizzato per definire le interfacce in modo indipendente dal linguaggio di programmazione utilizzato. HIDL consente la comunicazione tra i client HAL e i servizi HAL.
- HAL dello stesso processo (SP)
Un insieme limitato di HAL con wrapper. L'appartenenza all'insieme è controllata da Google. Gli HAL SP includono:
- HAL del mapper C stabile 5
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (fornito dal sistema Android, sempre con wrapper)
- android.hardware.renderscript@1.0
- HAL con wrapper
Un servizio HAL creato prima di Android 8, ma con wrapper AIDL o HIDL per funzionare con Android 8 e versioni successive.
Passaggi successivi
- Per scoprire come implementare un servizio HAL, consulta AIDL per gli HAL.
- Per scoprire come creare o estendere un HAL esistente, consulta le Interfacce estese associate.