Интегрируйте глубокие ссылки в медиа-приложения.

Цель данного документа — описать, как разработчики сторонних приложений могут добавлять прямые ссылки в медиаприложения 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

Целое число:

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
Ключ используется в качестве дополнительного целочисленного поля с параметром 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"