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

Целью этого документа является описание того, как разработчики сторонних приложений (3P) могут добавлять глубокие ссылки в медиаприложения AAOS. Глубокие ссылки на медиа позволяют открывать медиаприложения AAOS через глубокие ссылки так же, как на мобильном устройстве.

Поддерживаемые версии

Чтобы получить последнюю поддерживаемую версию, ознакомьтесь с последними артефактами сборки .

  • CarMediaApp.apk
  • TestMediaApp.apk

Как это работает

При открытии глубокой ссылки в AAOS открывается медиа-приложение, которое обрабатывает соответствующую схему. Затем медиа-приложение декодирует URL, создаёт медиа-намерение с информацией из этой ссылки и затем использует это намерение для открытия медиа-экрана.

Реализация поддержки новых намерений и новых дополнений:

  • Предоставляет обновленный формат намерений, который может быть обработан медиа-разработчиками для 3P-разработчиков, чтобы они могли отправлять необходимую информацию через намерение в медиа-ресурсы.

  • Обрабатывает намерения сторонних приложений, содержащих определенный элемент мультимедиа или поисковый запрос, а затем открывает страницу с запрошенной информацией в медиа.

Разработчики 3P несут ответственность за обновление своих приложений таким образом, чтобы их можно было вызывать с помощью намерений веб-URI и отправлять необходимую информацию в Media через намерение.

Требование к 3P-приложениям

В качестве примера приведен 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 извлекает информацию из ссылки и создает намерение для Media.

Медиа поддерживает две функции. Первая — открытие медиафайла с определённым медиафайлом, а вторая — отображение результатов поискового запроса. Идентификатор медиафайла или строка поискового запроса должны быть включены в дополнительный параметр намерения.

Информация о намерениях

Чтобы использовать эту функцию, разработчикам необходимо установить последнюю версию Media для поддержки действия Intent — ACTION_MEDIA_TEMPLATE_V2 . Действие Intent и следующие дополнительные элементы Intent включены в класс MediaIntentExtras.java . Эти дополнительные элементы можно добавить к Intent.

Дополнительное имя Ценить Описание
EXTRA_KEY_MEDIA_COMPONENT Строка для componentName Ключ используется как строковое дополнительное поле с 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: ДОПОЛНИТЕЛЬНАЯ_ЦЕННОСТЬ_ВОСПРОИЗВЕДИТЕ_ПЕРВЫЙ_ЭЛЕМЕНТ_ИЗ_ПОИСКА
Ключ используется как дополнительное поле int с ACTION_MEDIA_TEMPLATE_V2 для указания действия, которое Media должен выполнить после загрузки поискового запроса.

Значение может быть 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"