Цель данного документа — описать, как разработчики сторонних приложений могут добавлять прямые ссылки в медиаприложения AAOS. Прямые ссылки в медиафайлах позволяют открывать медиаприложения AAOS с помощью прямых ссылок так же, как и на мобильном устройстве.
Поддерживаемые версии
Чтобы получить последнюю поддерживаемую версию, см. последние артефакты сборки .
-
CarMediaApp.apk -
TestMediaApp.apk
Как это работает
При открытии прямой ссылки в AAOS запускается медиаприложение, обрабатывающее данную схему. Затем медиаприложение декодирует URL-адрес, создает намерение Media с информацией из этой ссылки и использует это намерение для открытия медиаэкрана.
Реализация для поддержки новых намерений и новых дополнительных функций:
Предоставляет обновленный формат намерений, которые могут обрабатываться медиаконтентом, для сторонних разработчиков, чтобы они могли отправлять необходимую информацию через намерение медиаконтенту.
Обрабатывает намерения сторонних приложений, содержащие определенный медиафайл или поисковый запрос, и затем открывает страницу с запрошенной информацией в разделе «Медиа».
Разработчики сторонних компаний несут ответственность за обновление своего приложения таким образом, чтобы его можно было вызывать с помощью интентов веб-URI и отправлять необходимую информацию медиаконтенту через интент.
Требования к сторонним приложениям
В качестве примера приводится компонент TmaTrampolineActivity из приложения TestMediaApp .
Шаг 1
Разработчикам необходимо иметь активность, аналогичную TmaTrampolineActivity в TestMediaApp . Для создания глубоких ссылок этой активности требуется фильтр намерений в манифесте. Этот фильтр намерений должен включать все обрабатываемые 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
В этом действии приложение «Медиа» извлекает информацию из ссылки и создает намерение для взаимодействия с медиафайлом.
Компонент Media поддерживает две функции. Первая функция — открытие медиафайла с помощью определенного медиафайла, а вторая — отображение результатов поискового запроса. Идентификатор медиафайла или строка поискового запроса должны быть включены в дополнительный параметр Intent.
Информация о намерениях
Для использования этой функции разработчикам необходимо установить последнюю версию Media, поддерживающую действие Intent, ACTION_MEDIA_TEMPLATE_V2 . Действие Intent, а также следующие дополнительные параметры Intent, включены в класс MediaIntentExtras.java . Эти дополнительные параметры можно добавить к Intent.
| Дополнительное имя | Ценить | Описание |
|---|---|---|
| EXTRA_KEY_MEDIA_COMPONENT | Строка для имени компонента | Ключ используется в качестве строкового дополнительного поля с ACTION_MEDIA_TEMPLATE_V2 для указания MediaBrowserService, на котором пользователь хочет запустить воспроизведение мультимедиа. Если он не указан, открывается активный источник мультимедиа. |
| EXTRA_KEY_MEDIA_ID | Идентификатор медиафайла | Ключ, используемый в качестве строкового дополнительного поля с ACTION_MEDIA_TEMPLATE_V2, указывает медиафайл, который должен отображаться в окне просмотра . Должен совпадать с идентификаторами, используемыми в API MediaBrowserServiceCompat. |
| EXTRA_KEY_SEARCH_QUERY | Поисковый запрос | Ключ используется в качестве строкового дополнительного поля с ACTION_MEDIA_TEMPLATE_V2 для указания поискового запроса, который следует отправить либо в текущий MediaBrowserService, либо в тот, который указан с помощью EXTRA_KEY_MEDIA_COMPONENT. |
| EXTRA_KEY_SEARCH_ACTION | Целое число:
| Ключ используется в качестве дополнительного целочисленного поля с параметром ACTION_MEDIA_TEMPLATE_V2 для указания действия, которое медиафайл должен выполнить после загрузки поискового запроса. Значение может быть одним из EXTRA_VALUE_NO_SEARCH_ACTION или EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. Этот дополнительный параметр следует использовать только с EXTRA_KEY_SEARCH_QUERY. Если этот дополнительный параметр не указан, то после загрузки результатов поиска никаких дальнейших действий не предпринимается. |
Особые случаи
Если к намерению добавлено несколько дополнительных параметров одновременно, например, EXTRA_KEY_MEDIA_ID и EXTRA_KEY_SEARCH_QUERY , текущая реализация сначала обрабатывает идентификатор медиафайла, и только когда идентификатор медиафайла пуст, выполняется поисковый запрос.
Тест
После завершения интеграции стороннего медиаприложения используйте команду adb для отправки прямой ссылки. Медиафайл откроется с нужной информацией. Например, для TestMediaApp используется следующая команда:
adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"