A partir do nível 3 da API Car App, é possível usar as APIs da biblioteca Car App para acessar propriedades e sensores do veículo.
Requisitos
Para usar as APIs com o Android Auto, comece adicionando uma dependência em
androidx.car.app:app-projected ao arquivo build.gradle do módulo do Android
Auto. Para o Android Automotive OS, adicione uma dependência em
androidx.car.app:app-automotive ao arquivo build.gradle do módulo do Android
Automotive OS.
Além disso, no arquivo AndroidManifest.xml, é necessário declarar as
permissões relevantes para solicitar os dados do carro que você quer usar. O usuário também precisa conceder essas permissões a você. É possível usar o mesmo código no Android
Auto e no Android Automotive OS, em vez de criar fluxos dependentes da plataforma.
No entanto, as permissões necessárias são diferentes.
CarInfo
Esta tabela descreve as propriedades fornecidas nas APIs CarInfo e as permissões que você precisa solicitar para usá-las.
| Métodos | Propriedades | Permissões: Android Auto |
Permissões: AAOS |
API Car App |
|---|---|---|---|---|
fetchModel |
Marca, modelo e ano | android.car.permission.CAR_INFO |
3 | |
fetchEnergyProfile |
Tipos de conector de VE, tipos de combustível | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_INFO |
3 |
fetchExteriorDimensions
Dados disponíveis apenas em alguns veículos AAOS com a API 30 ou mais recente. |
Dimensões externas | N/A | android.car.permission.CAR_INFO |
7 |
| Estado e tipo do cartão de pedágio | 3 | |||
| Nível de bateria, nível de combustível, nível de combustível baixo, autonomia restante | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| Velocidade bruta, velocidade mostrada (exibida no painel do carro) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| Distância do odômetro | com.google.android.gms.permission.CAR_MILEAGE |
Os dados não estão disponíveis para apps do Android Automotive OS instalados no Google Play. | 3 |
Por exemplo, para receber o intervalo restante, crie uma instância de um objeto
CarInfo e crie e registre um OnCarDataAvailableListener:
val carInfo = carContext.getCarService(CarHardwareManager::class.java).carInfo val listener = OnCarDataAvailableListener<EnergyLevel> { data -> if (data.rangeRemainingMeters.status == CarValue.STATUS_SUCCESS) { val rangeRemaining = data.rangeRemainingMeters.value } else { // Handle error } } carInfo.addEnergyLevelListener(carContext.mainExecutor, listener) // ... // Unregister the listener when you no longer need updates carInfo.removeEnergyLevelListener(listener)
Não presuma que os dados do carro estão disponíveis o tempo todo. Se você receber um erro, verifique o status do valor solicitado para entender melhor por que os dados não puderam ser recuperados. Para saber mais sobre a definição da classe CarInfo, consulte a documentação de referência.
CarSensors
A classe CarSensors dá acesso aos dados de acelerômetro, giroscópio, bússola e localização do veículo. A disponibilidade desses valores pode depender do OEM. O formato dos dados do acelerômetro, giroscópio e bússola é o mesmo que você receberia da API SensorManager.
Por exemplo, para verificar a direção do veículo:
val carSensors = carContext.getCarService(CarHardwareManager::class.java).carSensors val listener = OnCarDataAvailableListener<Compass> { data -> if (data.orientations.status == CarValue.STATUS_SUCCESS) { val orientation = data.orientations.value } else { // Data not available, handle error } } carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, carContext.mainExecutor, listener) // ... // Unregister the listener when you no longer need updates carSensors.removeCompassListener(listener)
Para acessar dados de localização do carro, também é necessário declarar e solicitar a permissão
android.permission.ACCESS_FINE_LOCATION.
Teste
Para simular dados do sensor ao testar no Android Auto, consulte as seções Sensores e Configuração de sensores do guia da unidade principal do computador. Para simular dados de sensores ao testar no Android Automotive OS, consulte Emular estado do hardware no guia do emulador do Android Automotive OS.