VHAL, Java ve yerel istemcileri destekler. Car Service, VHAL için tek Java istemcisidir. Araba uygulamaları için VHAL ile doğrudan iletişim kurmak yerine VHAL özelliklerine erişmek üzere Car API'lerini (ör. CarPropertyManager
) kullanın. SELinux, doğrudan erişimi engeller. Ayrıntılar için Paket Dizini'ndeki Car API belgelerine bakın.
Android 13'ten itibaren yerel istemciler için VHAL'ye doğrudan bağlanmak yerine libvhalclient
kullanın. Bu, AIDL ve HIDL VHAL uygulamaları için tek bir ortak arayüz sunan bir istemci kitaplığıdır.
IVhalClient.h
Aşağıdaki örnekte, VHAL yerel istemcisinin nasıl oluşturulacağı ve Araç Şasi Numarası (VIN) almak için nasıl kullanılacağı gösterilmektedir:
#include <IVhalClient.h> #include <VehicleHalTypes.h> #include <VehicleUtils.h> using ::aidl::android::hardware::automotive::vehicle::VehicleProperty; using ::android::frameworks::automotive::vhal::IVhalClient; using ::android::hardware::automotive::vehicle::toInt; int main(int argc, char** argv) { auto vhalClient = IVhalClient::tryCreate(); if (vhalClient == nullptr) { // handle error. return -1; } auto result = vhalClient->getValueSync( *vhalClient->createHalPropValue(toInt(VehicleProperty::INFO_VIN))); // Use result return 0; }
SELinux politikasını, yerel istemcinizin VHAL'ye erişmesine izin verecek şekilde yapılandırmanız gerekir. Örneğin:
# Define my domain type my_native_daemon, domain; # Define the exec file type. type my_native_daemon_exec, exec_type, file_type, system_file_type; # Initialize domain. init_daemon_domain(my_native_daemon) # Allow using hwbinder for HIDL VHAL, not required if AIDL is used. hwbinder_use(my_native_daemon) # Allow using binder for AIDL VHAL binder_use(my_native_daemon) # Allow my_native_daemon to be a VHAL client. hal_client_domain(my_native_daemon, hal_vehicle)