将 VHAL 与原生客户端结合使用

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