À 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 pour demander les données de voiture que vous souhaitez utiliser. L'utilisateur doit également vous accorder ces autorisations. 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 |
| É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 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 |
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 :
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)
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 que vous avez 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 avec l'API SensorManager.
Par exemple, pour vérifier le cap du véhicule :
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)
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.