Proposez votre application sur les véhicules équipés d'Android Auto ou d'Android Automotive OS. Optez pour une architecture d'application qui fonctionne dans les deux cas afin que chaque utilisateur puisse profiter de votre application.
Qu'est-ce qu'Android for Cars ?
Une application multimédia pour les voitures peut permettre aux utilisateurs de connecter facilement leur vie numérique à leur voiture. En étendant les mêmes applications pour téléphone aux automobiles, vous créez une meilleure expérience utilisateur. Pour ce faire, vous pouvez intégrer Android Auto ou Android Automotive OS.
Les applis Android pour les voitures doivent avant tout éviter toute distraction du conducteur. Vous pouvez limiter les distractions en suivant les bonnes pratiques, par exemple en utilisant des commandes vocales et une conception graphique très pratique. De cette façon, votre application multimédia peut afficher uniquement des informations pertinentes pour le conducteur au moment opportun, et utiliser des modèles prévisibles pour les tâches courantes.
Android Auto
Android Auto offre une expérience d'application automobile optimisée aux utilisateurs disposant d'un téléphone Android avec l'application Android Auto et d'un véhicule ou système stéréo compatible. Les utilisateurs peuvent utiliser votre application directement sur l'écran de leur voiture en connectant leur téléphone. Pour permettre à Android Auto de se connecter à votre application de téléphone, créez les services utilisés par Android Auto pour présenter une interface optimisée au conducteur.
Android Automotive OS
Android Automotive OS est un système d'infoloisirs basé sur Android et intégré aux véhicules. Ce système est un appareil Android autonome, optimisé pour la conduite. Avec Android Automotive OS, les utilisateurs installent votre application directement sur la voiture au lieu de leur téléphone.
Catégories d'applications compatibles
Les applications multimédias permettent aux utilisateurs de parcourir et d'écouter de la musique, la radio, des livres audio et d'autres contenus audio dans la voiture. Pour en savoir plus, consultez Créer des applications de lecture audio pour les voitures. Pour en savoir plus, consultez Créer des applications multimédias pour voitures.
Les applications multimédias sont conçues à l'aide de MediaLibraryService
et MediaSession
.
Sur Android Automotive OS, vous pouvez également créer des écrans de connexion et de paramétrage (à utiliser lorsque la voiture est à l'arrêt) à l'aide de Views ou de Compose.
Les applications vidéo permettent aux utilisateurs de regarder des vidéos en streaming lorsque la voiture est à l'arrêt. Leur principale fonction consiste à diffuser des vidéos en streaming. Ces applications sont conçues à l'aide de Views ou Compose. Pour en savoir plus, consultez Créer des applications de lecture vidéo pour Android Automotive OS. Pour en savoir plus, consultez Créer des applications vidéo pour Android Automotive OS.
Créer des applications de lecture audio pour voitures
Ce guide suppose que vous disposez déjà d'une application de lecture multimédia de base. Si ce n'est pas le cas, accédez à Créer une application de lecteur multimédia de base pour commencer.
Ce guide vous explique ce que vous devez faire et vous fournit des liens vers d'autres ressources contenant des conseils spécifiques.
Composants de lecture
Media3 propose plusieurs composants clés pour les cas d'utilisation de la lecture. Les classes qui composent ces composants vous sont familières si vous avez déjà travaillé avec les bibliothèques multimédias Android précédentes.
Le schéma suivant montre comment ces composants s'agencent dans une application typique.
Pour en savoir plus, consultez Composants de lecture.
Implémenter un MediaLibraryService
et un MediaLibrarySession
Un MediaLibraryService
fournit une API standardisée pour diffuser votre bibliothèque multimédia et y autoriser l'accès.
Cette opération est nécessaire lorsque vous ajoutez la prise en charge d'Android Auto ou d'Android Automotive OS à votre application multimédia, car ces plates-formes fournissent leur propre UI sécurisée pour les conducteurs pour votre bibliothèque multimédia. Pour en savoir plus sur l'implémentation et l'utilisation d'un MediaLibraryService
, consultez Diffuser du contenu avec MediaLibraryService.
Pour les commandes de lecture, utilisez une session multimédia. L'API MediaSession
offre un moyen universel d'interagir avec un lecteur audio ou vidéo. La bibliothèque Jetpack Media3 inclut MediaLibrarySession
, qui étend MediaSession
pour ajouter des API de navigation dans le contenu.
La connexion d'une session multimédia à un lecteur permet à une application de faire de la publicité pour la lecture multimédia en externe et de recevoir des commandes de lecture provenant de sources externes telles qu'Android Auto, Android Automotive OS ou l'Assistant Google. Pour en savoir plus, consultez Contrôler et annoncer la lecture avec MediaSession et Utiliser une MediaLibrarySession.
Au minimum, votre session multimédia doit déclarer la compatibilité avec les commandes de lecteur suivantes :
Le guide Activer les commandes de lecture décrit les différentes façons de personnaliser les commandes de lecture dans les voitures.
Lorsque Android Auto ou Android Automotive OS se connectent à votre application, ils demandent une bibliothèque de contenu à afficher, ce qui déclenche la méthode de rappel onGetLibraryRoot()
. Vous pouvez rapidement renvoyer un élément multimédia racine pour autoriser l'accès à votre bibliothèque. La méthode de rappel onGetChildren()
est appelée lorsqu'Android Auto ou Android Automotive OS tentent de parcourir des niveaux plus profonds de votre bibliothèque de contenu.
Ces plates-formes appliquent des limites supplémentaires à la structure de votre bibliothèque de contenus. Pour savoir comment personnaliser l'affichage de votre bibliothèque de contenu, consultez le guide Créer votre service de navigateur multimédia.
Déclarer la prise en charge d'Android Auto
Utilisez l'entrée du fichier manifeste suivante pour déclarer que votre application est compatible avec Android Auto :
<application>
...
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Cette entrée du fichier manifeste fait référence à un fichier XML qui déclare les fonctionnalités automobiles compatibles avec votre application. Pour indiquer que vous disposez d'une application multimédia, ajoutez un fichier XML nommé automotive_app_desc.xml
au répertoire res/xml/
de votre projet. Ce fichier doit inclure le contenu suivant :
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Déclarer la prise en charge d'Android Automotive OS
Vous devez créer un module automobile, car toute la logique de votre application ne peut pas être partagée avec une application automobile. Certains composants d'Android Automotive OS, comme le fichier manifeste, ont des exigences spécifiques à la plate-forme. Créez un module capable de séparer le code de ces composants des autres codes de votre projet, comme celui utilisé pour votre application mobile.
Pour ajouter un module automobile à votre projet, procédez comme suit :
- Dans Android Studio, cliquez sur File > New > New Module (Fichier > Nouveau > Nouveau module).
- Sélectionnez Automotive Module (Module automobile), puis cliquez sur Next (Suivant).
- Indiquez un nom d'application/de bibliothèque dans Application/Library name. Il s'agit du nom que les utilisateurs voient pour votre application sur Android Automotive OS.
- Indiquez un nom de module dans Module name.
- Adaptez le nom du package dans Package name pour qu'il corresponde à votre application.
Sélectionnez API 28: Android 9.0 (Pie) pour Minimum SDK (SDK minimal), puis cliquez sur Next (Suivant).
Toutes les voitures compatibles avec Android Automotive OS s'exécutent sur Android 9 (niveau d'API 28) ou version ultérieure. La sélection de cette valeur cible donc toutes les voitures compatibles.
Sélectionnez No Activity (Aucune activité), puis cliquez sur Finish (Terminer).
Après avoir créé votre module sur Android Studio, ouvrez AndroidManifest.xml
dans votre nouveau module automobile :
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.media">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
</manifest>
L'élément application
contient des informations sur l'application standard, ainsi qu'un élément uses-feature
qui déclare la prise en charge d'Android Automotive OS. Notez qu'aucune activité n'a été déclarée dans le fichier manifeste.
Si vous implémentez des activités de paramétrage ou de connexion, ajoutez-les ici. Ces activités sont déclenchées par le système à l'aide d'intents explicites. Ce sont les seules que vous déclarez dans le fichier manifeste pour votre application Android Automotive OS.
Une fois les activités de paramétrage ou de connexion ajoutées, terminez votre fichier manifeste en définissant l'attribut android:appCategory="audio"
dans l'élément application
et en ajoutant les éléments uses-feature
suivants :
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.media"> <application android:allowBackup="true" android:appCategory="audio" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" /> <uses-feature android:name="android.hardware.type.automotive" android:required="true" /> <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" /> </manifest>
Si vous les définissez explicitement sur required="false"
, vous vous assurez que votre application n'entre pas en conflit avec les fonctionnalités matérielles disponibles sur les appareils Automotive OS.
Utilisez l'entrée de fichier manifeste suivante pour déclarer que votre application prend en charge Android Automotive OS :
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Cette entrée du fichier manifeste fait référence à un fichier XML qui déclare les fonctionnalités automobiles prises en charge par votre application.
Pour indiquer que vous disposez d'une application multimédia, ajoutez un fichier XML nommé automotive_app_desc.xml
au répertoire res/xml/
de votre projet. Incluez le contenu suivant dans ce fichier :
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtres d'intent
Android Automotive OS utilise des intents explicites pour déclencher des activités dans votre application multimédia. N'incluez aucune activité avec des filtres d'intent CATEGORY_LAUNCHER
ou ACTION_MAIN
dans le fichier manifeste.
Les activités telles que celle illustrée dans l'exemple suivant ciblent généralement un téléphone ou un autre appareil mobile. Déclarez ces activités dans le module qui compile l'application pour téléphone, et non dans celui qui compile votre application Android Automotive OS.
<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>
Étapes suivantes
Maintenant que vous disposez d'une application pour Android Auto et Android Automotive OS, vous pouvez prendre des mesures supplémentaires pour optimiser votre application afin qu'elle puisse être utilisée plus sûrement pendant la conduite. Pour obtenir d'autres recommandations permettant de garantir une expérience utilisateur sûre et pratique, consultez les guides techniques sur les actions vocales, les mesures de protection contre la distraction et la gestion des erreurs.
Créer des applications de lecture vidéo pour Android Automotive OS
Étant donné que les applications vidéo sont classées séparément des applications multimédias dans les voitures, vous devez connaître certaines exigences spécifiques aux applications vidéo, comme décrit dans Créer des applications à utiliser à l'arrêt pour les voitures et Créer des applications vidéo pour Android Automotive OS. Vous devez suivre les instructions ci-dessous.
Marquer votre application comme une application vidéo
Pour indiquer que votre application 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"/>