Les commandes vocales permettent aux conducteurs d'effectuer des tâches sans lâcher le volant ni quitter la route des yeux. Grâce aux actions dans les applications pour voitures, les conducteurs peuvent utiliser l'Assistant Google pour contrôler les applications Android sur leur système d'infoloisirs en disant, par exemple, "Hey Google, trouve-moi une place de parking dans la rue sur l'appli XXX".
Les actions dans les applications fonctionnent avec les applications de point d'intérêt (POI) pour voitures. Ce guide décrit les exigences et les limites spécifiques à l'intégration des actions dans une application POI.
Fonctionnement
Les actions dans les applications permettent d'intégrer l'Assistant à votre application. Les utilisateurs peuvent ainsi accéder aux fonctionnalités de votre application par commande vocale. Lorsqu'un utilisateur appelle une action dans une application, l'Assistant associe cette requête à un intent intégré déclaré dans la ressource shortcuts.xml
de votre application, puis lance votre application sur l'écran demandé.
Pour déclarer la compatibilité des intents intégrés dans votre application, utilisez les éléments Android capability
.
Lorsque vous importerez votre application via la Google Play Console, Google enregistrera les fonctionnalités déclarées dans votre application et les rendra accessibles aux utilisateurs depuis l'Assistant.
- Un utilisateur déclenche l'Assistant et demande une application spécifique via une commande vocale.
- L'Assistant associe cette requête à un modèle pré-entraîné (intent intégré) et extrait tous les paramètres pris en charge par cet intent.
- Dans cet exemple, l'Assistant associe la requête à l'intent intégré
GET_CHARGING_STATION
, extrait le paramètre de localisation "SFO" et convertit le lieu en coordonnées géographiques. - L'application est déclenchée via sa définition de traitement pour cet intent intégré.
- L'application gère le traitement et affiche les options de la borne de recharge dans le système d'infoloisirs du conducteur.
Limites
Les implémentations d'actions dans une application pour voitures présentent les limites suivantes :
Les actions dans l'application doivent être effectuées à l'aide de liens profonds Android. Pour en savoir plus sur les traitements des actions dans les applications, consultez la section Fournir des détails sur le traitement pour les intents intégrés.
Les implémentations pour voitures ne sont compatibles qu'avec les intents intégrés suivants :
- Stationnement :
GET_PARKING_FACILITY
- Recharge :
GET_CHARGING_STATION
- Stationnement :
Conditions requises
Pour permettre l'intégration d'actions dans une application pour voitures, procédez comme suit :
- Respectez les exigences générales concernant les actions dans les applications Android.
- Incluez la dépendance de la bibliothèque d'applications pour voitures. Pour en savoir plus, consultez la section Déclarer des dépendances.
Déterminer l'intent et le traitement
La première étape pour activer les commandes vocales afin de permettre des actions dans une application pour voitures consiste à déterminer les commandes vocales ou les intents utilisateur que votre application accepte. Vous devez ensuite définir un traitement pour chaque intent afin de spécifier comment votre application doit répondre à la requête.
Quels intents sont compatibles avec l'application pour voitures ?
Les actions dans l'application fournissent des modèles vocaux pré-entraînés, appelés intents intégrés, qui peuvent comprendre et interpréter les commandes vocales d'un utilisateur lorsqu'il dit "Hey Google". Pour répondre à des requêtes vocales, il vous suffit de déclarer à l'Assistant les intents intégrés pris en charge par votre application. Par exemple, si vous souhaitez que votre application puisse vous aider à trouver un parking, vous devez implémenter l'intent intégré
GET_PARKING_FACILITY
. Vous pouvez également implémenter l'intent intégréGET_CHARGING_STATION
pour aider les utilisateurs à trouver des bornes de recharge pour voitures électriques.Comment votre application doit-elle traiter chaque intent ?
Votre application traite la requête vocale en s'ouvrant sur l'écran approprié. Les actions dans l'application fournissent au traitement les paramètres extraits de la requête, ce qui vous permet d'adapter votre réponse aux besoins de l'utilisateur.
Intégrer des actions dans une application
Une fois que vous avez déterminé votre stratégie de traitement, procédez comme suit pour activer les commandes vocales dans votre application pour voitures :
Ouvrez votre activité principale
AndroidManifest.xml
et déclarez la prise en charge des raccourcis Android. Vous utiliserez des éléments de raccourcicapability
pour déclarer à l'Assistant les intents intégrés compatibles avec votre application. Pour en savoir plus, consultez la section Ajouter des fonctionnalités.<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
Ajoutez ensuite un élément
<intent-filter>
àAndroidManifest.xml
. Cette opération permettra à l'Assistant d'utiliser des liens profonds pour se connecter au contenu de votre application.Pour le traitement Android Auto, le
<intent-filter>
est identique à votre application mobile.Pour Android Automotive OS, la session
CarAppService
de votre application déclenchera l'Assistant. Pour autoriser une session à déclencher votre lien profond, spécifiez un<intent-filter>
dans l'élément<activity>
du fichierAndroidManifest.xml
.
<!-- AndroidManifest.xml --> <activity ... android:name="androidx.car.app.activity.CarAppActivity"> ... <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="YOUR_SCHEME" android:host="YOUR_HOST" /> </intent-filter> </activity>
Si vous n'avez pas encore de fichier
shortcuts.xml
dans le répertoireres/xml
de votre application, créez-en un. Pour découvrir comment les actions dans l'application utilisent les raccourcis Android, consultez la section Créer un fichier shortcuts.xml.Dans
shortcuts.xml
, implémentez uncapability
pour l'intent intégré de votre choix. Ensuite, ajoutez un<intent>
imbriqué pour définir le traitement de l'application.<!-- shortcuts.xml --> <?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <capability android:name="actions.intent.GET_PARKING_FACILITY"> <intent> <url-template android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}"> <!-- Facility name, e.g. "Googleplex" --> <parameter android:name="parkingFacility.name" android:key="name"/> <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" --> <parameter android:name="parkingFacility.address" android:key="address"/> <!-- Disambiguate the type of service, e.g. "valet" --> <parameter android:name="parkingFacility.disambiguatingDescription" android:key="disambiguatingDescription"/> <!-- Latitude, e.g. "37.3861" --> <parameter android:name="parkingFacility.geo.latitude" android:key="latitude"/> <!-- Longitude, e.g. "-122.084" --> <parameter android:name="parkingFacility.geo.longitude" android:key="longitude"/> </intent> </capability> </shortcuts>
Enfin, mettez à jour la logique
Session()
de votre application pour voitures pour gérer le traitement des actions entrantes dans votre application. Les exemples suivants illustrent la gestion des intents pourSession.onCreateScreen()
etSession.onNewIntent()
.onCreateScreen()
Kotlin
@Override fun onCreateScreen(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public Screen onCreateScreen(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
onNewIntent()
Kotlin
@Override fun onNewIntent(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public void onNewIntent(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Prévisualiser, tester et publier votre application
Les actions dans l'application vous permettent de prévisualiser et de tester votre application. Pour en savoir plus sur ces outils et sur la publication dans le Play Store de votre application pour voitures compatible avec les commandes vocales, consultez la présentation des actions dans les applications.