VHAL supporta i client Java e nativi. Car Service è l'unico
client Java per VHAL. In genere, utilizza le API Car (ad esempio, CarPropertyManager
) per accedere alle proprietà VHAL anziché comunicare direttamente con il VHAL. Infatti, SELinux lo blocca. Per maggiori dettagli, consulta la documentazione dell'API Car nell'Indice dei pacchetti.
Per i client nativi, a partire da Android 13, utilizza
libvhalclient
invece di connetterti direttamente
con VHAL. Si tratta di una libreria client che espone un'interfaccia comune,IVhalClient.h
per le implementazioni VHAL di AIDL e HIDL. L'esempio seguente mostra come creare un client nativo VHAL e utilizzarlo per ottenere un numero di identificazione del veicolo (VIN):
using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
using ::android::frameworks::automotive::vhal::IVhalClient;
using ::android::hardware::automotive::vehicle::toInt;
auto vhalClient = IVhalClient::tryCreate();
if (vhalClient == nullptr) {
// handle error.
}
auto result = vhalClient->getValueSync(
*vhalClient->createHalPropValue(toInt(VehicleProperty::INFO_VIN)));
// Use result