VHAL 支持 Java 和原生客户端。Car Service 是 VHAL 的唯一 Java 客户端。对于典型的汽车应用,请使用 Car API(例如,CarPropertyManager
)访问 VHAL 属性,而不是直接与 VHAL 通信。实际上,SELinux 会阻止这样做。如需了解详情,请参阅 软件包索引中的 Car API 文档。
对于原生客户端,从 Android 13 开始,请使用 libvhalclient
,而不是直接连接 VHAL。这是一个客户端库,它为 AIDL 和 HIDL VHAL 实现公开了一个通用接口 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