Un Hardware Abstraction Layer (HAL) è un tipo di livello di astrazione con un'interfaccia standard da implementare per i fornitori di hardware. Un HAL consente ai fornitori di hardware di implementare funzionalità di livello inferiore specifiche del dispositivo senza influire sul codice o modificarlo nei livelli 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 in uso. AIDL consente la comunicazione tra i client HAL e i servizi HAL.
- HAL vincolato
- Un HAL che comunica con altri processi tramite chiamate di comunicazione tra processi (IPC) del binder. Gli HAL con binder vengono eseguiti in un processo separato dal client che li utilizza. Gli HAL con binding vengono registrati in un gestore dei servizi in modo che i client possano accedere alle relative funzionalità. Gli HAL scritti per Android 8 e versioni successive sono in formato binder .
- Client HAL
- Il processo che accede al servizio HAL.
- Interfaccia HAL
- L'interfaccia comune utilizzata sia dal client sia dal servizio HAL per comunicare.
- Servizio HAL
Il codice specifico per l'hardware, ad esempio quello che rimanda alla fotocamera del tuo dispositivo specifico. Devi implementare tutti gli HAL richiesti elencati nella tabella di compatibilità per la release che scegli come target nella 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à specifiche del tuo hardware.
- HIDL (Hardware Interface Definition Language)
Un linguaggio utilizzato per definire le interfacce in modo indipendente dal linguaggio di programmazione in uso. HIDL consente la comunicazione tra i client HAL e i servizi HAL.
- HAL dello stesso processo (SP)
Un insieme limitato di HAL con wrapping. L'appartenenza al set è controllata da Google. Gli HAL SP includono:
- HAL di mapper C stabile 5
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (fornito dal sistema Android, sempre con wrapping)
- android.hardware.renderscript@1.0
- HAL con wrapping
Un servizio HAL creato prima di Android 8, ma inserito in un 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 Interfacce estese collegate.