À 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 |
| État de la carte de péage, type de carte de péage | 3 | |||
| Niveau de batterie, niveau de carburant, niveau de carburant faible, autonomie 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 | |
| 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_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| 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.