メディアアプリへのディープリンクの統合

このドキュメントでは、サードパーティ(3P)製アプリのデベロッパーが AAOS のメディアアプリにディープリンクを追加する方法について説明します。メディアのディープリンクを利用して、モバイル デバイスでの操作と同じようにディープリンクから AAOS のメディアアプリを開くことができます。

サポートされているバージョン

サポートされている最新バージョンについては、最新のビルド アーティファクトをご覧ください。

  • CarMediaApp.apk
  • TestMediaApp.apk

仕組み

AAOS でディープリンクを開くと、特定のスキームを処理するメディアアプリが開きます。メディアアプリは URL をデコードし、そのリンクの情報でメディアのインテントを作成した後、そのインテントを使用してメディア画面を開きます。

新しいインテントと新しいエクストラをサポートする実装は次のとおりです。

  • メディアで処理できるメディアの更新された形式をサードパーティのデベロッパーに提供し、インテントを介して必要な情報をメディアに送信できるようにする。

  • 特定のメディア アイテムや検索クエリを含むサードパーティ製アプリのインテントを処理し、リクエストされた情報を含むページをメディアで開く。

ウェブ URI インテントによってアプリを起動し、インテントを介して必要な情報をメディアに送信できるようアプリを更新するのは、サードパーティのデベロッパーの責任です。

サードパーティ製アプリの要件

TestMediaApp アプリの TmaTrampolineActivity の例を以下に示します。

ステップ 1

デベロッパーは TestMediaAppTmaTrampolineActivity のようなアクティビティを設定する必要があります。ディープリンクを行うには、マニフェストでこのアクティビティにインテント フィルタが必要です。受信リンク用のインテント フィルタを追加するに記載されているように、このインテント フィルタに、処理すべき URL をすべて含めます。

どのプラットフォームでもディープリンクが動作するよう、インテント フィルタにはスマートフォン バージョンのアプリが使用するスキームとホストを含めることをおすすめします。

<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>

ステップ 2

このアクティビティで、メディアアプリはリンクから情報を取得し、メディアへのインテントを作成します。

このメディアアプリは 2 つの関数をサポートします。1 つ目は、特定のメディア アイテム ID のメディア アイテムを開く関数、2 つ目は、検索クエリの結果を表示する関数です。メディア アイテム ID や検索クエリ文字列をインテント エクストラに含める必要があります。

インテント情報

この機能を使用するには、デベロッパーは、インテント アクション ACTION_MEDIA_TEMPLATE_V2 をサポートする最新バージョンのメディアをインストールする必要があります。インテント アクションと以下に説明するインテント エクストラは、MediaIntentExtras.java クラスに含まれています。インテントに追加できるエクストラは次のとおりです。

エクストラの名前 説明
EXTRA_KEY_MEDIA_COMPONENT componentName の文字列 ACTION_MEDIA_TEMPLATE_V2 で、ユーザーが開始を希望するメディアの MediaBrowserService を指定する string 型のエクストラ フィールドとして使用するキー。指定されなかった場合は、アクティブなメディアソースが開きます。
EXTRA_KEY_MEDIA_ID メディア ID ACTION_MEDIA_TEMPLATE_V2 で、Browse ビューに表示するメディア アイテムを指定する string 型のエクストラ フィールドとして使用するキー。MediaBrowserServiceCompat API で使用される ID と一致する必要があります。
EXTRA_KEY_SEARCH_QUERY 検索クエリ ACTION_MEDIA_TEMPLATE_V2 で、現在の MediaBrowserService または EXTRA_KEY_MEDIA_COMPONENT で指定されたサービスのいずれかに送信する検索クエリを指定する string 型のエクストラ フィールドとして使用するキー。
EXTRA_KEY_SEARCH_ACTION

整数;

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
ACTION_MEDIA_TEMPLATE_V2 で、検索クエリの読み込み後に実行するメディアのアクションを指定する int 型のエクストラ フィールドとして使用するキー。

値は EXTRA_VALUE_NO_SEARCH_ACTION または EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH のいずれかです。EXTRA_KEY_SEARCH_QUERY ではこのエクストラのみを使用します。

このエクストラが指定されなかった場合、検索結果の読み込み後にアクションは実行されません。

特別な場合

このインテントに EXTRA_KEY_MEDIA_IDEXTRA_KEY_SEARCH_QUERY の両方が含まれるように、インテントに複数のエクストラを一緒に追加した場合、現在の実装では、最初にメディア ID が処理され、メディア ID が空の場合に限り、メディアは検索クエリを実行します。

テスト

サードパーティ製アプリの統合が完了したら、adb コマンドを使用してディープリンクを送信します。メディアが開いて、目的の情報が表示されます。たとえば、TestMediaApp でこのコマンドを実行すると、次のようになります。

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