Integrar links diretos a apps de mídia

Este documento descreve como desenvolvedores de apps de terceiros (3P) podem adicionar links diretos a apps de mídia do AAOS. Com os links diretos de mídia, é possível 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 compatível, 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. Em seguida, 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 novos extras:

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

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

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

Requisito 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 que o app da versão para smartphone usa 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 recupera as informações do link e cria uma intent para a mídia.

A mídia é compatível com duas funções. A primeira função é abrir 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 do intent.

Informações de 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 estã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 especificado, a origem de mídia ativa é aberta.
EXTRA_KEY_MEDIA_ID ID da mídia Chave usada como um campo extra de string com ACTION_MEDIA_TEMPLATE_V2 para especificar o item de mídia que deve 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

Número inteiro:

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
Chave usada como um campo extra de número inteiro 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 é um de EXTRA_VALUE_NO_SEARCH_ACTION ou EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. Esse extra só deve 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 juntos, como EXTRA_KEY_MEDIA_ID e EXTRA_KEY_SEARCH_QUERY, a implementação atual 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"