API Car Hardware

À partir du niveau d'API 3 de l'API Car App, vous pouvez utiliser les API de la bibliothèque Car App 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 à 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 nécessaires pour demander les données de voiture que vous souhaitez utiliser. L'utilisateur doit également vous accorder ces autorisations accordées. 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 nécessaires diffèrent.

CarInfo

Ce tableau décrit les propriétés fournies dans les CarInfo API 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 de VE, 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 une 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 d'affichage (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 Données non disponibles pour les applications Android Automotive OS installées à partir de Google Play. 3

Par exemple, pour obtenir l'autonomie 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 une erreur, vérifiez l'état de la valeur que vous avez demandée pour mieux comprendre pourquoi les données demandé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 aux données de l'accéléromètre, du gyroscope, de la boussole et de la position 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 le même que celui que vous obtiendriez à partir de l'SensorManager API.

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 Unité centrale pour ordinateur. Pour simuler des données de capteurs lors des tests sur Android Automotive OS, consultez la section Émuler l'état du matériel dans le guide Émulateur Android Automotive OS.