API per l'hardware dell'auto

A partire dal livello API 3 di Car App, puoi utilizzare le API Car App Library per accedere a proprietà e sensori del veicolo.

Requisiti

Per utilizzare le API con Android Auto, inizia aggiungendo una dipendenza da androidx.car.app:app-projected al file build.gradle per il modulo Android Auto. Per Android Automotive OS, aggiungi una dipendenza da androidx.car.app:app-automotive al file build.gradle per il modulo Android Automotive OS.

Inoltre, nel file AndroidManifest.xml, devi dichiarare le autorizzazioni pertinenti per richiedere i dati dell'auto che vuoi utilizzare. L'utente deve anche concederti queste autorizzazioni. Puoi utilizzare lo stesso codice su Android Auto e Android Automotive OS, anziché creare flussi dipendenti dalla piattaforma. Tuttavia, le autorizzazioni richieste sono diverse.

CarInfo

Questa tabella descrive le proprietà fornite nelle API CarInfo e le autorizzazioni che devi richiedere per utilizzarle.

Metodi Proprietà Autorizzazioni:
Android Auto
Autorizzazioni:
AAOS
API Car App
fetchModel Marca, modello, anno android.car.permission.CAR_INFO 3
fetchEnergyProfile Tipi di connettori EV, tipi di carburante com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

Dati disponibili solo su alcuni veicoli AAOS con API 30 o versioni successive.

Dimensioni esterne N/D android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

Stato tessera pedaggi, tipo di tessera pedaggi 3

addEnergyLevelListener

removeEnergyLevelListener

Livello batteria, livello carburante, livello carburante basso, autonomia rimanente com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_ENERGY

android.car.permission.CAR_ENERGY_PORTS

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addSpeedListener

removeSpeedListener

Velocità grezza, velocità visualizzata (mostrata sul display del cruscotto dell'auto) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

Distanza odometro com.google.android.gms.permission.CAR_MILEAGE Dati non disponibili per le app Android Automotive OS installate da Google Play. 3

Ad esempio, per ottenere l'intervallo rimanente, crea un'istanza di un oggetto CarInfo, quindi crea e registra un 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)

Non dare per scontato che i dati dell'auto siano sempre disponibili. Se ricevi un errore, controlla lo stato del valore che hai richiesto per capire meglio perché i dati che hai richiesto non sono stati recuperati. Per saperne di più sulla definizione della classe CarInfo, consulta la documentazione di riferimento.

CarSensors

La classe CarSensors ti consente di accedere ai dati di accelerometro, giroscopio, bussola e posizione del veicolo. La disponibilità di questi valori potrebbe dipendere dall'OEM. Il formato dei dati di accelerometro, giroscopio e bussola è lo stesso che otterresti dall'API SensorManager.

Ad esempio, per controllare l'orientamento del veicolo:

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)

Per accedere ai dati sulla posizione dall'auto, devi anche dichiarare e richiedere l'autorizzazione android.permission.ACCESS_FINE_LOCATION.

Test

Per simulare i dati dei sensori durante i test su Android Auto, consulta le sezioni Sensori e Configurazione dei sensori della guida all'unità principale di test. Per simulare i dati dei sensori durante i test su Android Automotive OS, consulta la sezione Emulazione dello stato hardware nella guida all'emulatore Android Automotive OS.