Utilizzare VHAL con il client nativo

VHAL supporta Java e client nativi. Il servizio auto è l'unico Client Java per VHAL. In genere, per le app per auto, utilizza le API Car (ad esempio, CarPropertyManager) per accedere alle proprietà VHAL anziché comunicare direttamente con il VHAL. Infatti, SELinux blocca questo comportamento. Per maggiori dettagli, consulta la documentazione dell'API Car nell'Indice dei pacchetti.

Per i client nativi, a partire da Android 13, utilizza libvhalclientinvece 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