VHAL では、Java とネイティブ クライアントをサポートしています。カーサービスは、VHAL の唯一の Java クライアントです。一般的な自動車アプリでは、Car API(CarPropertyManager
など)を使用して VHAL のプロパティにアクセスします。VHAL との直接通信は行いません。実際、SELinux にブロックされます。詳しくは、パッケージ インデックスの Car API ドキュメントをご覧ください。
Android 13 以降のネイティブ クライアントでは、VHAL と直接通信する代わりに libvhalclient
を使用します。これは、AIDL および HIDL VHAL 実装のための 1 つの共通インターフェース、IVhalClient.h
を公開するクライアント ライブラリです。次の例は、VHAL ネイティブ クライアントを作成し、それを使用して車両識別番号(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