Intégrer des liens profonds vers des applications multimédias

Ce document explique comment les développeurs d'applications tierces peuvent ajouter des liens profonds aux applications multimédias AAOS. Les liens profonds multimédias vous permettent d'ouvrir des applications multimédias AAOS via des liens profonds, comme sur un appareil mobile.

Versions compatibles

Pour obtenir la dernière version compatible, consultez les derniers artefacts de compilation.

  • CarMediaApp.apk
  • TestMediaApp.apk

Fonctionnement

Lorsqu'un lien profond est ouvert sur AAOS, l'application multimédia qui gère le schéma particulier s'ouvre. L'application multimédia décode ensuite l'URL, crée un intent multimédia avec les informations de ce lien, puis utilise cet intent pour ouvrir l'écran multimédia.

Implémentation pour prendre en charge les nouveaux intents et les nouveaux extras:

  • Fournit aux développeurs tiers un format mis à jour des intents pouvant être gérés par le Media afin qu'ils puissent envoyer les informations nécessaires au Media via l'intent.

  • Gère les intents d'applications tierces contenant un élément multimédia spécifique ou une requête de recherche, puis ouvre une page contenant les informations demandées dans Media.

Les développeurs tiers sont chargés de mettre à jour leur application afin qu'elle puisse être appelée par les intents d'URI Web et d'envoyer les informations nécessaires à Media via un intent.

Exigences concernant les applications tierces

L'TmaTrampolineActivity de l'application TestMediaApp est fourni à titre d'exemple.

Étape 1

Les développeurs doivent disposer d'une activité semblable à TmaTrampolineActivity dans TestMediaApp. Pour créer un lien profond, cette activité nécessite un filtre d'intent dans le fichier manifeste. Ce filtre d'intent doit inclure toutes les URL à gérer, comme décrit dans la section Ajouter des filtres d'intent pour les liens entrants.

Nous vous suggérons d'inclure les schémas et les hôtes utilisés par l'application pour téléphone dans le filtre d'intent afin de vous assurer que les liens profonds fonctionnent sur toutes les plates-formes.

<activity android:name=".automotive.TmaTrampolineActivity"
                  android:exported="true">
            <intent-filter android:label="TmaTrampolineActivity_label">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="app"
                      android:host="com.android.car.media.testmediaapp"/>
            </intent-filter>
        </activity>

Étape 2

Dans cette activité, l'application Media récupère les informations à partir du lien et crée un intent vers les médias.

Le Media est compatible avec deux fonctions. La première fonction consiste à ouvrir un élément multimédia avec un élément multimédia spécifique, et la seconde à afficher les résultats d'une requête de recherche. L'ID de l'élément multimédia ou la chaîne de requête de recherche doivent être inclus dans l'extra d'intent.

Informations sur l'intent

Pour utiliser cette fonctionnalité, les développeurs doivent installer la dernière version de Media pour prendre en charge l'action d'intent ACTION_MEDIA_TEMPLATE_V2. L'action d'intent et les extras d'intent suivants sont inclus dans la classe MediaIntentExtras.java. Vous pouvez ajouter ces éléments à l'intent.

Nom supplémentaire Valeur Description
EXTRA_KEY_MEDIA_COMPONENT Chaîne pour componentName Clé utilisée comme champ supplémentaire de chaîne avec ACTION_MEDIA_TEMPLATE_V2 pour spécifier le MediaBrowserService sur lequel l'utilisateur souhaite démarrer le contenu multimédia. Lorsqu'elle n'est pas spécifiée, la source multimédia active est ouverte.
EXTRA_KEY_MEDIA_ID ID élément multimédia Clé utilisée comme champ supplémentaire de chaîne avec ACTION_MEDIA_TEMPLATE_V2 spécifie l'élément multimédia à afficher dans la vue Parcourir. Doit correspondre aux ID utilisés dans l'API MediaBrowserServiceCompat.
EXTRA_KEY_SEARCH_QUERY Requête de recherche Clé utilisée comme champ supplémentaire de chaîne avec ACTION_MEDIA_TEMPLATE_V2 pour spécifier la requête de recherche à envoyer au MediaBrowserService actuel ou à celui spécifié avec EXTRA_KEY_MEDIA_COMPONENT
EXTRA_KEY_SEARCH_ACTION

Entier:

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
Clé utilisée comme champ supplémentaire int avec ACTION_MEDIA_TEMPLATE_V2 pour spécifier l'action à effectuer par le contenu multimédia après le chargement de la requête de recherche.

La valeur peut être EXTRA_VALUE_NO_SEARCH_ACTION ou EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. Cet extra ne doit être utilisé qu'avec EXTRA_KEY_SEARCH_QUERY.

Si cet élément supplémentaire n'est pas spécifié, aucune autre action n'est effectuée une fois les résultats de recherche chargés.

Cas particuliers

Si plusieurs éléments supplémentaires sont ajoutés à l'intent ensemble, par exemple si EXTRA_KEY_MEDIA_ID et EXTRA_KEY_SEARCH_QUERY sont inclus dans cet intent, l'implémentation actuelle gère d'abord l'ID multimédia, et ce n'est que lorsque l'ID multimédia est vide que le média exécute la requête de recherche.

Test

Une fois l'intégration de l'application multimédia tierce terminée, utilisez une commande adb pour envoyer un lien profond. Le contenu multimédia s'ouvre avec les informations souhaitées. Par exemple, cette commande pour TestMediaApp:

adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"