2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
メディアアプリへのディープリンクの統合
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このドキュメントでは、サードパーティ製アプリのデベロッパーが AAOS のメディアアプリにディープリンクを追加する方法について説明します。メディアのディープリンクを利用すると、モバイル デバイスでの操作と同様にディープリンクから AAOS のメディアアプリを開くことができます。
サポート対象のバージョン
サポートされている最新バージョンについては、最新のビルド アーティファクトをご覧ください。
CarMediaApp.apk
TestMediaApp.apk
仕組み
AAOS でディープリンクを開くと、特定のスキームを処理するメディアアプリが開きます。メディアアプリは URL をデコードし、そのリンクの情報でメディアのインテントを作成した後、そのインテントを使用してメディア画面を開きます。
新しいインテントと新しいエクストラをサポートする実装は次のとおりです。
ウェブ URI インテントによってアプリを起動し、インテントを介して必要な情報をメディアに送信できるようアプリを更新するのは、サードパーティのデベロッパーの責任です。
サードパーティ製アプリの要件
TestMediaApp
アプリの TmaTrampolineActivity
の例を以下に示します。
ステップ 1
デベロッパーは TestMediaApp
に TmaTrampolineActivity
のようなアクティビティを設定する必要があります。ディープリンクを行うには、このアクティビティのインテント フィルタがマニフェストに必要です。受信リンク用のインテント フィルタを追加するに記載されているように、処理するすべての 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 つ目は、特定のメディア アイテムを含んだメディア アイテムを開く関数、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_ID
と EXTRA_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"
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Integrate deep links to Media apps\n\nThis document aims to describe how third party (3P) app developers can add deep\nlinks to AAOS media apps. Media deep links enable you to open AAOS Media apps\nthrough deep links in the same way as on a mobile device.\n\nSupported versions\n------------------\n\nTo get the latest supported version, see the latest\n[Build Artifacts](https://ci.android.com/builds/branches/aosp-ub-automotive-master/grid?legacy=1).\n\n- `CarMediaApp.apk`\n- `TestMediaApp.apk`\n\n### How it works\n\nWhen a deep link is opened on AAOS, it opens the media app that handles the\nparticular scheme. The media app then decodes the URL, creating a Media intent\nwith the information in that link and then using that intent to open the media\nscreen.\n\nThe implementation to support new intents and new extras:\n\n- Provides an updated format of the intents that can be handled by the Media\n to 3P developers so they can send necessary information through the intent\n to the Media.\n\n- Handles the intents from 3P apps that contain a specific media item or a\n search query and then open a page with the requested information in Media.\n\n3P developers are responsible for updating their app so that the app can be\ninvoked by the web URI intents and send the necessary information to the Media\nthrough an intent.\n\nRequirement for 3P apps\n-----------------------\n\nThe `TmaTrampolineActivity` in the `TestMediaApp` app is provided as an example.\n\n### Step 1\n\nDevelopers must have an activity similar to `TmaTrampolineActivity` in\n`TestMediaApp`. To deep link, this activity needs an intent filter in the\nmanifest. This intent filter should include all the URLs to be handled\nas described in [Add intent filters for incoming links](https://developer.android.com/training/app-links/deep-linking#adding-filters).\n\nWe suggest that the intent filter include the schemes and hosts that the\nphone version app uses to make sure the deep links work across platforms. \n\n \u003cactivity android:name=\".automotive.TmaTrampolineActivity\"\n android:exported=\"true\"\u003e\n \u003cintent-filter android:label=\"TmaTrampolineActivity_label\"\u003e\n \u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n \u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n \u003cdata android:scheme=\"app\"\n android:host=\"com.android.car.media.testmediaapp\"/\u003e\n \u003c/intent-filter\u003e\n \u003c/activity\u003e\n\n### Step 2\n\nIn this activity, the Media app retrieves the information from the link and\ncreates an intent to the Media.\n\nThe Media supports two functions. The first function is to open a\nmedia item with a specific media item and the second is to show the\nresults of a search query. The media item ID or the search query string must\nbe included in the intent extra.\n\n#### Intent information\n\nTo use this feature, developers must install the most recent version of the\nMedia to support the Intent action, `ACTION_MEDIA_TEMPLATE_V2`. The Intent\naction, and the following intent extras, are included in the\n`MediaIntentExtras.java` class. These extras can be added to the intent.\n\n| Extra name | Value | Description |\n|---------------------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| EXTRA_KEY_MEDIA_COMPONENT | String for componentName | Key used as a string extra field with ACTION_MEDIA_TEMPLATE_V2 to specify the MediaBrowserService on which the user wants to start the media. When unspecified, the active media source is opened. |\n| EXTRA_KEY_MEDIA_ID | Media ID | Key used as a string extra field with ACTION_MEDIA_TEMPLATE_V2 specify the media item that should be displayed in the **Browse** view. Must match the IDs used in the MediaBrowserServiceCompat API. |\n| EXTRA_KEY_SEARCH_QUERY | Search query | Key used as a string extra field with ACTION_MEDIA_TEMPLATE_V2 to specify the search query to send either to the current MediaBrowserService or the one specified with EXTRA_KEY_MEDIA_COMPONENT |\n| EXTRA_KEY_SEARCH_ACTION | Integer: - 0: EXTRA_VALUE_NO_SEARCH_ACTION - 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH | Key used as an int extra field with ACTION_MEDIA_TEMPLATE_V2 to specify the action for the Media to perform after the search query is loaded. The value is one of EXTRA_VALUE_NO_SEARCH_ACTION or EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. This extra should only be used with EXTRA_KEY_SEARCH_QUERY. If this extra is not specified, then no further action is taken after the search results are loaded. |\n\n#### Special cases\n\nIf several extras are added to the intent together, such as both\n`EXTRA_KEY_MEDIA_ID` and `EXTRA_KEY_SEARCH_QUERY` are included in this intent,\nthe current implementation handles the media ID first, and only when the media\nID is empty does the Media run the search query.\n\nTest\n----\n\nOnce integration of the 3P media app is complete, use an `adb` command to send\na deep link. Media opens up with the desired information. For example, this\ncommand for `TestMediaApp`: \n\n```\nadb shell am start -W -a android.intent.action.VIEW -d \"https://www.testmediaapp.com/path?search=normal\\&searchAction=1\"\n```"]]