À 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 |
| É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 :
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.