Android Automotive OS permet aux utilisateurs d'exécuter votre application vidéo sur le système d'infoloisirs d'une voiture à l'arrêt.
Tester l'application sur un émulateur d'Android Automotive OS
Pour commencer à compiler votre application pour Android Automotive OS, testez d'abord votre application mobile existante sur un émulateur Android Automotive OS. Pour configurer un émulateur, suivez la procédure décrite dans Tester des applications Android pour voitures. Vous pouvez ensuite exécuter l'application en suivant les instructions de la section Exécuter votre application sur l'émulateur.
Lorsque vous exécutez votre application, soyez attentif aux problèmes de compatibilité suivants :
- Les écrans d'infoloisirs ont une orientation fixe. Pour respecter les consignes relatives à la qualité des applications pour voitures, les applications doivent être compatibles avec les orientations portrait et paysage.
- Les API disponibles sur d'autres appareils peuvent ne pas l'être sur Android Automotive OS. Par exemple, certaines API des services Google Play ne sont pas disponibles sur Android Automotive OS. Consultez la section Désactiver des fonctionnalités pour découvrir comment gérer ces problèmes.
Configurer les fichiers manifestes de votre application
Pour cibler Android Automotive OS, votre application doit comporter certaines entrées dans le fichier manifeste. Avec elles, les applications ciblant Android Automotive OS sont envoyées au Play Store via un type de version Automotive distinct. Elles seront soumises à un processus d'examen manuel afin de s'assurer qu'elles peuvent être utilisées de façon sécurisée dans une voiture. Pour en savoir plus, consultez Distribuer des applications Android pour voitures.
Fonctionnalités requises pour Android Automotive OS
Pour apparaître sur le Play Store destiné aux voitures, les applications vidéo conçues pour Android Automotive OS doivent inclure les éléments <uses-feature>
et <uses-library>
suivants dans le fichier AndroidManifest.xml
.
<manifest ...>
...
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
...
<application ...>
...
<uses-library
android:name="android-automotive-video"
android:required="true"/>
...
</application>
</manifest>
Les applications envoyées à des canaux non destinés aux voitures ne peuvent pas déclarer les éléments <uses-feature>
affichés dans l'exemple de code précédent, car elles ne peuvent pas dépendre de matériel spécifique aux voitures. Par conséquent, pour proposer la même application pour des appareils automobiles et non automobiles, vous devez générer au moins deux types d'applications : l'un pour les appareils automobiles et l'autre pour les appareils mobiles. Pour en savoir plus sur la création de ces types de produit, consultez les documents suivants :
Les deux types d'application peuvent partager le même nom de package, mais ils doivent utiliser des codes de version différents, car ils seront importés séparément dans le Play Store.
Au lieu d'utiliser des types distincts, vous pouvez utiliser des noms de package distincts pour les APK ou les app bundles pour mobiles et pour voitures. Pour comprendre les avantages et inconvénients propres à chaque approche, consultez les noms de packages dans le guide du développeur d'applications multimédias.
En plus des éléments présentés dans l'exemple de code précédent, les applications conçues pour Android Automotive OS doivent inclure les éléments <uses-feature>
suivants dans l'élément racine <manifest>
:
<uses-feature
android:name="android.hardware.wifi"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.landscape"
android:required="false"/>
Définir explicitement ces fonctionnalités comme non requises garantit que votre application n'entre pas en conflit avec les fonctionnalités matérielles disponibles sur les appareils Android Automotive OS.
Marquer votre application comme une application vidéo
Pour indiquer que votre application Android Auto est compatible avec les vidéos, ajoutez un fichier XML nommé automotive_app_desc.xml
au répertoire res/xml/
de votre projet.
Dans ce fichier, incluez le contenu suivant :
<automotiveApp>
<uses name="video"/>
</automotiveApp>
Ensuite, dans l'élément <application>
de votre fichier manifeste, ajoutez l'élément <meta-data>
suivant qui mentionne le fichier XML :
<meta-data
android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
Ne pas inclure les activités optimisées pour la distraction
Les applications vidéo sont conçues pour être utilisées uniquement à l'arrêt. Par conséquent, n'incluez pas l'élément <meta-data>
suivant dans un élément <activity>
:
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Sans ces métadonnées, le système d'exploitation bloque automatiquement les activités de votre application dès que le véhicule passe en mode Voiture afin d'éviter toute distraction pour le conducteur.
Il s'agit d'un rappel de cycle de vie onPause
, au cours duquel vous devez suspendre la lecture vidéo et audio à partir de votre application.
Optimiser votre application pour Android Automotive OS
Pour offrir à vos utilisateurs la meilleure expérience possible, vous devrez peut-être activer ou désactiver certaines fonctionnalités selon que votre application est exécutée sur une voiture ou non.
Désactiver des fonctionnalités
Si vous publiez une application mobile existante sur Android Automotive OS, certaines fonctionnalités peuvent ne pas être pertinentes ou disponibles. Par exemple, les voitures ne permettent généralement pas d'accéder aux appareils photos. De plus, seul un sous-ensemble de services Google Play est disponible sur Android Automotive OS. Pour en savoir plus, consultez Services Google Play pour voitures.
Vous pouvez utiliser l'API PackageManager.hasSystemFeature
pour détecter si l'application s'exécute sur Android Automotive OS en recherchant la fonctionnalité FEATURE_AUTOMOTIVE
. comme illustré dans l'exemple suivant :
Kotlin
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Java
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Si votre application comporte également un composant Android Auto, vous pouvez utiliser l'API CarConnection de la bibliothèque d'applications Android for Cars pour détecter si l'application s'exécute sur Android Automotive OS, sur Android Auto, ou si elle n'est pas connectée du tout à une voiture.
En ce qui concerne la fonctionnalité Picture-in-picture (PIP), suivez les bonnes pratiques pour vérifier si elle est disponible et si elle réagit de manière appropriée.
Gérer les situations hors connexion
Alors que les voitures sont de plus en plus connectées à Internet, de plus en plus d'applications peuvent fonctionner sans connexion Internet, comme dans les cas suivants :
- Les utilisateurs peuvent désactiver les données mobiles proposées dans le cadre d'un abonnement du constructeur automobile.
- L'accès aux données mobiles peut être limité dans certaines régions.
- Les voitures dotées de signaux Wi-Fi peuvent ne pas être à portée du signal Wi-Fi, ou un OEM peut désactiver le Wi-Fi au profit d'un réseau mobile.
Préparez-vous à gérer ces scénarios dans votre application en dégradant de manière élégante les fonctionnalités qui dépendent de l'accès à Internet, par exemple en proposant du contenu hors connexion. Pour en savoir plus, consultez les bonnes pratiques pour optimiser la mise en réseau.
Utiliser d'autres ressources
Pour vous aider à adapter votre application automobile, vous pouvez utiliser le qualificatif de ressource car
afin de fournir d'autres ressources lorsque vous l'exécutez sur un véhicule Android Automotive OS. Par exemple, si vous utilisez des ressources de dimension pour stocker des valeurs de marge intérieure, vous pouvez recourir à une valeur plus élevée pour l'ensemble de ressources car
afin d'augmenter la taille des zones cibles tactiles.
Tester des applications vidéo sur Android Automotive OS
En général, suivez les instructions disponibles dans la section Tester les applications Android pour les voitures. Seuls les émulateurs des SDK 30 et 32 disponibles via Android Studio incluent la bibliothèque android-automotive-video
. Vous devez donc les utiliser pour tester la version Automotive OS de votre application. Les émulateurs de SDK inférieurs n'ont pas cette bibliothèque. Par conséquent, les installations adb
des applications qui en ont besoin échoueront. La bibliothèque peut être incluse dans les véhicules de production à des niveaux d'OS inférieurs.
Questions fréquentes
Widevine DRM est-il compatible ?
Oui, Widevine DRM L3 est compatible avec Android Automotive OS.