VHAL obsługuje klientów Java i natywnych. Car Service jest jedynym klientem Java dla VHAL. W przypadku aplikacji typowo samochodowych użyj interfejsów API samochodu (na przykład CarPropertyManager
), aby uzyskać dostęp do właściwości VHAL zamiast bezpośrednio komunikować się z VHAL. W rzeczywistości SELinux to blokuje. Szczegółowe informacje można znaleźć w dokumentacji Car API w Indeksie pakietów .
W przypadku klientów natywnych, zaczynając od Androida 13, użyj libvhalclient
zamiast bezpośredniego łączenia się z VHAL. Jest to biblioteka kliencka udostępniająca jeden wspólny interfejs, IVhalClient.h
dla implementacji AIDL i HIDL VHAL. Poniższy przykład pokazuje, jak utworzyć natywnego klienta VHAL i użyć go do uzyskania numeru identyfikacyjnego pojazdu (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