将 VHAL 与 Native Client 搭配使用

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