VHAL 支持 Java 客户端和 Native Client。汽车服务是唯一适用于 VHAL 的 Java 客户端。对于典型的汽车应用,请使用 Car API(例如 CarPropertyManager
)访问 VHAL 属性,而不是直接与 VHAL 通信。实际上,SELinux 会阻止此类访问。如需了解详情,请参阅软件包索引中的 Car API 文档。
对于 Native Client,从 Android 13 开始,请使用 libvhalclient
,而不是直接连接 VHAL。这是一个客户端库,为 AIDL 和 HIDL VHAL 实现提供了一个通用接口 IVhalClient.h
。下面的示例展示了如何创建 VHAL Native Client 并使用它来获取车辆识别码 (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