Personalizar o app de TV de referência

A TV ao vivo é um app de TV de referência projetado para dispositivos de televisão Android. No entanto, os fabricantes de dispositivos podem querer adicionar mais funções específicas do produto, que são não cobertos pela implementação padrão de TV ao vivo, como imagens ajuste, modo jogo ou modo 3D. Para oferecer suporte a essas funções específicas do dispositivo ou a TV ao vivo oferece suporte a estas personalizações:

  • Ativar o modo de time-shifting, que permite aos usuários pausar, avançar, e voltar. Configurar o modo de time-shifting para usar o armazenamento externo em vez do interno.
  • Adicionando opções à linha de opções de TV.
  • Adicionar uma linha personalizada e adicionar opções a ela.

Observação: Ao vivo Canais é a implementação do Google de TV ao vivo que pode ser usada no estado em que se encontra dispositivos com serviços do Google. Para personalizar os Canais ao vivo, substitua com.android.tv.* com com.google.android.tv.* nestas categorias instruções.

Personalizar TV ao vivo

Para personalizar a TV ao vivo, o dispositivo Android TV de destino precisa de um pacote de personalização. instalado, que precisa ser um app do sistema pré-criado com o com.android.tv.permission.CUSTOMIZE_TV_APP.

A TV ao vivo procura um pacote do sistema com essa permissão, verifica o recurso e detecta os Activities do pacote marcados com categorias específicas até a personalização de processos.

Importante: somente um pacote pode personalizar a TV ao vivo.

Configurar o modo de time-shifting

O time-shifting (trickplay) permite que dispositivos de televisão Android pausem, voltem e avançar a reprodução do canal. Na implementação de TV ao vivo, time-shifting pode ser usado na interface de controles do Google Play. O time-shifting está ativado por padrão em TV ao vivo, mas pode ser desativada. O time-shifting também pode ser configurado para usar apenas no armazenamento externo.

Para configurar o time-shifting, adicione o recurso de string trickplay_mode e defina o valor como uma destas opções:

  • enabled: ativar o time-shifting. Esse é o valor padrão quando nenhuma opção é dada.
  • disabled: desativa o time-shifting.
  • use_external_storage_only: configurar o time-shifting para usar armazenamento externo.
<string name="trickplay_mode">use_external_storage_only</string>
A interface de controles de reprodução é ativada após
pressionando o botão direcional central.

Figura 1. A interface de controles de reprodução é ativada depois que o botão Botão direcional central.

Personalizar opções da TV

Os fabricantes de dispositivos podem adicionar opções personalizadas para configurações de TV ao vivo às configurações Menu de opções da TV, como adicionar um atalho para as configurações de Imagem de som.

Para indicar uma opção personalizada, declare um filtro de intent que filtre a categoria. com.android.tv.category.OPTIONS_ROW em uma atividade. O recurso personalizado é implementado pelo fabricante do dispositivo na atividade. A atividade será iniciado se a opção for clicada. O título e o ícone da atividade são usados para a opção. As opções de TV personalizadas precisam corresponder à interface atual para oferecer o a melhor experiência do usuário.

Observação: cada atividade só pode processar uma opção. porque a TV ao vivo não consegue diferenciar filtros de intent em uma atividade com o mesmo devido à limitação do Android. Consulte Lidar com várias opções em uma atividade para uma solução alternativa.

Os fabricantes de dispositivos também podem colocar uma opção personalizada antes ou depois dos dispositivos definindo android:priority em AndroidManifest.xml. Uma opção com um valor de prioridade definido menor que 100 é exibida antes das itens, e um valor maior que 100 aparece depois. Várias opções personalizadas (tanto antes ou depois das opções existentes) são classificadas por prioridade em ordem crescente ordem. Se as opções tiverem a mesma prioridade, a ordem entre elas será indefinida.

Neste exemplo, a opção aparece primeiro na linha de opções de TV e PictureSettingsActivity será iniciado se a opção for clicada.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

Exemplo de linha de opções de TV personalizadas

Figura 2. Exemplo de linha de opções de TV personalizadas (Brilho e Economia de energia).

Exemplos de opções de TV personalizadas.

Figura 3. Exemplos de opções de TV personalizadas.

Processar várias opções em uma atividade

Uma opção é mapeada para o filtro de intent de uma atividade e vice-versa. Como o Android não diferencie filtros de intent com as mesmas categorias e ações, uma a atividade processa apenas uma opção, mesmo que vários filtros de intent sejam declarados. nele. Para lidar com várias opções em uma atividade, use <activity-alias> em AndroidManifest.xml. Na atividade, use getIntent().getComponent() para identificar a opção clicada.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

Criar uma linha personalizada

Os fabricantes de dispositivos podem adicionar e personalizar uma linha acima da linha de opções de TV. Essa linha personalizada é opcional.

Título da linha

Defina uma string partner_row_title em res/values/strings.xml. O valor da string é usado para o URL o título da linha.

<string name="partner_row_title">Partner Row</string>

Opções de personalização

Para adicionar opções personalizadas à linha personalizada, siga o processo de adição de opções. para o menu de opções da TV, mas altere o nome da categoria para com.android.tv.category.PARTNER_ROW.

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

Exemplo de linha personalizada opcional.

Figura 4. Exemplo de linha personalizada opcional.

Caixa de diálogo de amostra da opção personalizada.

Figura 5. Caixa de diálogo de amostra da opção personalizada.