Implémenter des mesures de protection contre la distraction
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Lorsque le conducteur utilise Android Auto, son téléphone est connecté aux haut-parleurs de la voiture. Vous devez donc prendre des précautions supplémentaires pour éviter toute distraction.
Lorsque vous développez des applications multimédias Android Auto, implémentez des mesures de protection spécifiques pour minimiser la distraction du conducteur. Ces mesures de protection incluent :
empêcher votre application de lire automatiquement du contenu audio via les haut-parleurs de la voiture, même pour les alarmes programmées par l'utilisateur ;
Gérer la façon dont Android Auto affiche les notifications lorsque votre application bascule entre la musique et les annonces.
Pour ce faire, utilisez l'API CarConnection
afin de détecter si un téléphone est projeté sur un écran de voiture. Si c'est le cas, désactivez les alarmes ou fournissez une UI sur le téléphone pour les gérer.
Pour les annonces, définissez la clé de métadonnées METADATA_KEY_IS_ADVERTISEMENT
afin de supprimer les notifications distrayantes.
Supprimer les alarmes dans le véhicule
Les applications multimédias Android Auto ne doivent pas démarrer la lecture audio via les haut-parleurs de la voiture, sauf si l'utilisateur lance la lecture en appuyant, par exemple, sur un bouton Lecture.
Cela vaut également pour une alarme programmée par l'utilisateur depuis l'application multimédia.
Pour satisfaire à cette exigence, votre application peut utiliser CarConnection
comme signal avant de lire du contenu audio. Votre application peut vérifier si le téléphone projette du contenu sur l'écran d'une voiture. Observez le LiveData
pour le type de connexion.
Vérifiez que la valeur est égale à CONNECTION_TYPE_PROJECTION
.
Si une projection de contenu est en cours, l'application multimédia compatible avec les alarmes doit effectuer l'une des opérations suivantes :
Par défaut, Android Auto affiche une notification lorsque les métadonnées multimédias changent au cours d'une session de lecture audio. Lorsqu'une application multimédia passe de la lecture de musique à la diffusion d'une publicité, l'affichage d'une notification risque de distraire l'utilisateur. Pour empêcher Android Auto d'afficher une notification, définissez la clé des métadonnées multimédias METADATA_KEY_IS_ADVERTISEMENT
sur METADATA_VALUE_ATTRIBUTE_PRESENT
:
Kotlin
import androidx.media.utils.MediaConstants
override fun onPlayFromMediaId(mediaId: String, extras: Bundle?) {
MediaMetadataCompat.Builder().apply {
if (isAd(mediaId)) {
putLong(
MediaConstants.METADATA_KEY_IS_ADVERTISEMENT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
}
// ...add any other properties you normally would.
mediaSession.setMetadata(build())
}
}
Java
import androidx.media.utils.MediaConstants;
@Override
public void onPlayFromMediaId(String mediaId, Bundle extras) {
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
if (isAd(mediaId)) {
builder.putLong(
MediaConstants.METADATA_KEY_IS_ADVERTISEMENT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT);
}
// ...add any other properties you normally would.
mediaSession.setMetadata(builder.build());
}
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/22 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/08/22 (UTC)."],[],[],null,["# Implement distraction safeguards\n\nBecause a user's phone is connected to a car's speakers when using Android\nAuto, you must take additional precautions to prevent driver distraction.\n\nWhen you develop Android Auto media apps, implement specific safeguards to\nminimize driver distraction. These safeguards include:\n\n- Preventing your app from automatically playing audio through car speakers,\n even for user-scheduled alarms.\n\n- Managing how Android Auto displays notifications when your app switches\n between music and ads.\n\nTo achieve this, use the `CarConnection` API to detect if a phone projects to a\ncar screen. If it does, disable alarms or provide an on-phone UI to manage them.\nFor ads, set the `METADATA_KEY_IS_ADVERTISEMENT` metadata key to suppress\ndistracting notifications.\n\nSuppress alarms in the car\n--------------------------\n\nAndroid Auto media apps must not start playing audio through the car speakers\nunless the user starts playback by, for example, pressing a **Play** button.\nEven a user-scheduled alarm from your media app must not start playing music\nthrough the car speakers.\n\nTo fulfill this requirement, your app can use [`CarConnection`](/reference/androidx/car/app/connection/CarConnection)\nas a signal before playing any audio. Your app can check if the phone is\nprojecting to a car screen. Observe the `LiveData` for the [connection type](/reference/androidx/car/app/connection/CarConnection#getType()).\nConfirm the value is equal to [`CONNECTION_TYPE_PROJECTION`](/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_PROJECTION()).\n\nIf the user's phone is projecting, media apps that support alarms must perform\none of these actions:\n\n- Disable the alarm.\n\n- Re-play the alarm [`STREAM_ALARM`](/reference/android/media/AudioManager#STREAM_ALARM) and provide a UI on the phone screen\n to disable the alarm.\n\nHandle media advertisements\n---------------------------\n\nBy default, Android Auto displays a notification when the media metadata changes\nduring an audio playback session. When a media app switches from playing music\nto running an advertisement, displaying a notification distracts the user. To\nprevent Android Auto from displaying a notification, set the media metadata key\n[`METADATA_KEY_IS_ADVERTISEMENT`](/reference/androidx/media/utils/MediaConstants#METADATA_KEY_IS_ADVERTISEMENT()) to [`METADATA_VALUE_ATTRIBUTE_PRESENT`](/reference/androidx/media/utils/MediaConstants#METADATA_VALUE_ATTRIBUTE_PRESENT()): \n\n### Kotlin\n\n import androidx.media.utils.MediaConstants\n\n override fun onPlayFromMediaId(mediaId: String, extras: Bundle?) {\n MediaMetadataCompat.Builder().apply {\n if (isAd(mediaId)) {\n putLong(\n MediaConstants.METADATA_KEY_IS_ADVERTISEMENT,\n MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)\n }\n // ...add any other properties you normally would.\n mediaSession.setMetadata(build())\n }\n }\n\n### Java\n\n import androidx.media.utils.MediaConstants;\n\n @Override\n public void onPlayFromMediaId(String mediaId, Bundle extras) {\n MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();\n if (isAd(mediaId)) {\n builder.putLong(\n MediaConstants.METADATA_KEY_IS_ADVERTISEMENT,\n MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT);\n }\n // ...add any other properties you normally would.\n mediaSession.setMetadata(builder.build());\n }"]]