ネイティブ クライアントで VHAL を使用する

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