API Car Hardware

À partir du niveau d'API 3 de la bibliothèque d'applications Car, vous pouvez utiliser les API de la bibliothèque d'applications Car pour accéder aux propriétés et aux capteurs du véhicule.

Conditions requises

Pour utiliser les API avec Android Auto, commencez par ajouter une dépendance sur androidx.car.app:app-projected au fichier build.gradle de votre module Android Auto. Pour Android Automotive OS, ajoutez une dépendance à androidx.car.app:app-automotive au fichier build.gradle de votre module Android Automotive OS.

De plus, dans votre fichier AndroidManifest.xml, vous devez déclarer les autorisations pertinentes nécessaires pour demander les données du véhicule que vous souhaitez utiliser. Ces autorisations doivent également vous être accordées par l'utilisateur. Vous pouvez utiliser le même code sur Android Auto et Android Automotive OS, au lieu de créer des flux dépendants de la plate-forme. Toutefois, les autorisations requises diffèrent.

CarInfo

Ce tableau décrit les propriétés fournies dans les API CarInfo et les autorisations que vous devez demander pour les utiliser.

Méthodes Propriétés Autorisations :
Android Auto
Autorisations :
AAOS
API Car App
fetchModel Marque, modèle, année android.car.permission.CAR_INFO 3
fetchEnergyProfile Types de connecteurs pour véhicules électriques, types de carburant com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

Données disponibles uniquement sur certains véhicules AAOS exécutant l'API 30 ou version ultérieure.

Dimensions extérieures N/A android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

État de la carte de péage, type de carte de péage 3

addEnergyLevelListener

removeEnergyLevelListener

Niveau de batterie, niveau de carburant, niveau de carburant faible, autonomie restante 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

Vitesse brute, vitesse affichée (sur le tableau de bord de la voiture) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

Distance du compteur kilométrique com.google.android.gms.permission.CAR_MILEAGE Les données ne sont pas disponibles pour les applications Android Automotive OS installées depuis Google Play. 3

Par exemple, pour obtenir la plage restante, instanciez un objet CarInfo, puis créez et enregistrez un OnCarDataAvailableListener :

Kotlin

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)

Java

CarInfo carInfo = getCarContext().getCarService(CarHardwareManager.class).getCarInfo();

OnCarDataAvailableListener<EnergyLevel> listener = (data) -> {
  if(data.getRangeRemainingMeters().getStatus() == CarValue.STATUS_SUCCESS) {
    float rangeRemaining = data.getRangeRemainingMeters().getValue();
  } else {
    // Handle error
  }
};

carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), listener);

// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener);

Ne partez pas du principe que les données de la voiture sont disponibles à tout moment. Si vous recevez un message d'erreur, vérifiez l'état de la valeur que vous avez demandée pour mieux comprendre pourquoi les données n'ont pas pu être récupérées. Pour en savoir plus sur la définition de la classe CarInfo, consultez la documentation de référence.

CarSensors

La classe CarSensors vous donne accès à l'accéléromètre, au gyroscope, à la boussole et aux données de localisation du véhicule. La disponibilité de ces valeurs peut dépendre de l'OEM. Le format des données de l'accéléromètre, du gyroscope et de la boussole est identique à celui que vous obtiendriez avec l'API SensorManager.

Par exemple, pour vérifier le cap du véhicule :

Kotlin

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)

Java

CarSensors carSensors = getCarContext().getCarService(CarHardwareManager.class).getCarSensors();

OnCarDataAvailableListener<Compass> listener = (data) -> {
  if (data.getOrientations().getStatus() == CarValue.STATUS_SUCCESS) {
    List<Float> orientations = data.getOrientations().getValue();
  } else {
    // Data not available, handle error
  }
};

carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, getCarContext().getMainExecutor(),
    listener);

// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener);

Pour accéder aux données de localisation de la voiture, vous devez également déclarer et demander l'autorisation android.permission.ACCESS_FINE_LOCATION.

Test

Pour simuler des données de capteurs lors des tests sur Android Auto, consultez les sections Capteurs et Configuration des capteurs du guide de l'unité principale pour ordinateur. Pour simuler des données de capteur lors des tests sur Android Automotive OS, consultez Émuler l'état du matériel dans le guide de l'émulateur Android Automotive OS.