Usar a VHAL com o cliente nativo

A VHAL oferece suporte a clientes Java e nativos. O serviço automóvel é o único Cliente Java para VHAL. Para apps geralmente para carros, use as APIs Car (por exemplo, CarPropertyManager) para acessar propriedades VHAL em vez de se comunicar diretamente com a VHAL. Na verdade, o SELinux bloqueia isso. Confira mais detalhes na documentação da API Car em Índice de pacotes.

Para clientes nativos, a partir do Android 13, use libvhalclient em vez de diretamente para se conectar com a VHAL. Essa é uma biblioteca de cliente que expõe uma interface comum, IVhalClient.h para implementações de AIDL e HIDL VHAL. O exemplo a seguir mostra como criar um cliente nativo VHAL e usá-lo para conseguir um número de identificação do veículo (VIN, na sigla em inglês):

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