Integrar links diretos a apps de mídia

Este documento tem como objetivo descrever como os desenvolvedores de apps de terceiros (3P) podem adicionar links direcionados a apps de mídia do AAOS. Os links diretos de mídia permitem abrir apps de mídia do AAOS da mesma forma que em um dispositivo móvel.

Versões compatíveis

Para conferir a versão mais recente com suporte, consulte os Artefatos de build mais recentes.

  • CarMediaApp.apk
  • TestMediaApp.apk

Como funciona

Quando um link direto é aberto no AAOS, ele abre o app de mídia que processa o esquema específico. O app de mídia decodifica o URL, criando uma intent de mídia com as informações desse link e usando essa intent para abrir a tela de mídia.

A implementação para oferecer suporte a novas intents e extras:

  • Fornece um formato atualizado das intents que podem ser processadas pela mídia para desenvolvedores terceirizados, para que eles possam enviar as informações necessárias pela intent.

  • Processa as intents de apps de terceiros que contêm um item de mídia específico ou uma consulta de pesquisa e, em seguida, abre uma página com as informações solicitadas em "Mídia".

Os desenvolvedores de terceiros são responsáveis por atualizar o app para que ele possa ser invocado pelas intents do URI da Web e enviar as informações necessárias para a mídia por uma intent.

Requisitos para apps de terceiros

O TmaTrampolineActivity no app TestMediaApp é fornecido como exemplo.

Etapa 1

Os desenvolvedores precisam ter uma atividade semelhante a TmaTrampolineActivity em TestMediaApp. Para criar um link direto, essa atividade precisa de um filtro de intent no manifesto. Esse filtro de intent precisa incluir todos os URLs a serem processados, conforme descrito em Adicionar filtros de intent para links recebidos.

Sugerimos que o filtro de intent inclua os esquemas e hosts usados pela versão do app para celular para garantir que os links diretos funcionem em todas as plataformas.

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

Etapa 2

Nesta atividade, o app de mídia extrai as informações do link e cria uma intent para a mídia.

A mídia oferece suporte a duas funções. A primeira função é abrir um item de mídia com um item de mídia específico, e a segunda é mostrar os resultados de uma consulta de pesquisa. O ID do item de mídia ou a string de consulta de pesquisa precisa ser incluída no extra da intent.

Informações da intent

Para usar esse recurso, os desenvolvedores precisam instalar a versão mais recente da mídia para oferecer suporte à ação de intent, ACTION_MEDIA_TEMPLATE_V2. A ação da intent e os extras de intent a seguir são incluídos na classe MediaIntentExtras.java. Esses extras podem ser adicionados à intent.

Nome extra Valor Descrição
EXTRA_KEY_MEDIA_COMPONENT String para componentName Chave usada como um campo extra de string com ACTION_MEDIA_TEMPLATE_V2 para especificar o MediaBrowserService em que o usuário quer iniciar a mídia. Quando não for especificado, a origem de mídia ativa será aberta.
EXTRA_KEY_MEDIA_ID ID da mídia Chave usada como um campo extra de string com ACTION_MEDIA_TEMPLATE_V2 especifica o item de mídia que precisa ser mostrado na visualização Procurar. Precisa corresponder aos IDs usados na API MediaBrowserServiceCompat.
EXTRA_KEY_SEARCH_QUERY Consulta de pesquisa Chave usada como um campo extra de string com ACTION_MEDIA_TEMPLATE_V2 para especificar a consulta de pesquisa a ser enviada ao MediaBrowserService atual ou ao especificado com EXTRA_KEY_MEDIA_COMPONENT
EXTRA_KEY_SEARCH_ACTION

Inteiro:

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
Chave usada como um campo extra int com ACTION_MEDIA_TEMPLATE_V2 para especificar a ação que a mídia vai realizar depois que a consulta de pesquisa for carregada.

O valor é EXTRA_VALUE_NO_SEARCH_ACTION ou EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. Esse extra só pode ser usado com EXTRA_KEY_SEARCH_QUERY.

Se esse extra não for especificado, nenhuma outra ação será tomada depois que os resultados da pesquisa forem carregados.

Casos especiais

Se vários extras forem adicionados à intent, como EXTRA_KEY_MEDIA_ID e EXTRA_KEY_SEARCH_QUERY incluídos nela, a implementação atual vai processar o ID da mídia primeiro. Somente quando o ID da mídia estiver vazio, a mídia vai executar a consulta de pesquisa.

Teste

Depois que a integração do app de mídia de terceiros for concluída, use um comando adb para enviar um link direto. A mídia é aberta com as informações desejadas. Por exemplo, este comando para TestMediaApp:

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