Introdução a apps para TV

Os apps para TV têm a mesma estrutura dos apps para smartphones e tablets. Essa semelhança significa que você pode modificar os apps existentes para execução também em dispositivos de TV ou criar novos com base no que já sabe sobre a criação de apps para Android.

Importante: seu app precisa atender a requisitos específicos para se qualificar como um app para Android TV no Google Play. Para mais informações, consulte os requisitos listados em Qualidade do app para TV.

Esta lição descreve como preparar o ambiente de desenvolvimento para a criação de apps para TV e as alterações mínimas necessárias para permitir que um app seja executado em dispositivos de TV.

Também é necessário ler Projetar para TV e Criar layouts para TV. Além disso, teste a amostra da Biblioteca de suporte Leanback do Android TV.

Determinar a compatibilidade com formatos de mídia

Consulte a documentação a seguir para ter informações sobre codecs, protocolos e formatos compatíveis com o Android TV.

Configurar um projeto para TV

Esta seção discute como modificar um app Android existente para execução em dispositivos de TV ou como criar um app novo. Se você já tem um app Android, o acréscimo de compatibilidade com o Android TV permite que você crie uma interface do usuário para TV aproveitando a arquitetura do seu app.

Estes são os principais componentes que precisam ser usados para criar um app que seja executado em dispositivos de TV:

  • Atividades para TV (obrigatório): no manifesto do aplicativo, declare uma atividade prevista para execução em dispositivos de TV.
  • Bibliotecas de suporte para TV (opcional): existem diversas bibliotecas de suporte disponíveis para dispositivos de TV que oferecem widgets para a criação de interfaces do usuário.

Pré-requisitos

Antes de começar a construir apps para TV, é preciso:

Declarar uma atividade para TV

Um aplicativo previsto para execução em dispositivos de TV precisa declarar uma atividade para tela de início para TV no manifesto. Para fazer isso, ele usará um filtro de intent CATEGORY_LEANBACK_LAUNCHER. Esse filtro identifica seu app como ativado para TV e permite que o Google Play o identifique como um app para TV. Quando um usuário selecionar seu app na tela de início da TV, esse intent identificará a atividade a ser iniciada.

O snippet de código a seguir mostra como incluir esse filtro de intent no manifesto:

    <application
      android:banner="@drawable/banner" >
      ...
      <activity
        android:name="com.example.android.MainActivity"
        android:label="@string/app_name" >

        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity
        android:name="com.example.android.TvActivity"
        android:label="@string/app_name"
        android:theme="@style/Theme.Leanback">

        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>

      </activity>
    </application>
    

A segunda entrada no manifesto de atividades deste exemplo especifica a atividade a ser iniciada em um dispositivo de TV.

Cuidado: se você não incluir o filtro de intent CATEGORY_LEANBACK_LAUNCHER no seu app, ele não ficará visível para outros usuários que estiverem executando o Google Play em dispositivos de TV. Além disso, se o app não tiver esse filtro quando você usar ferramentas de desenvolvedor para carregá-lo em um dispositivo de TV, ele não aparecerá na interface do usuário da TV.

Se estiver modificando um app existente para uso na TV, ele não precisará usar o mesmo layout de atividade que usa em smartphones e tablets. A interface do usuário do app para TV (ou a parte para TV do app existente) precisa oferecer uma interface mais simples para navegação fácil usando um controle remoto no sofá. Para orientações sobre como projetar um app para TV, consulte o guia Projetar para TV. Para mais informações sobre os requisitos mínimos de implementação para layouts de interface em TVs, consulte Construção de layouts para TV.

Declarar compatibilidade com Leanback

Declare que seu app usa a interface de usuário Leanback exigida pelo Android TV. Se também estiver desenvolvendo um app que funciona em dispositivos móveis (smartphones, wearables, tablets etc.), defina o valor do atributo required como false. Se você definir o valor do atributo required como true, o app somente será executado em dispositivos que usem a interface do usuário do Leanback.

    <manifest>
        <uses-feature android:name="android.software.leanback"
            android:required="false" />
        ...
    </manifest>
    

Não é necessário declarar a tela de toque

Aplicativos destinados à execução em dispositivos de TV não dependem de telas de toque para entradas. Para deixar isso claro, o manifesto do seu app para TV precisa declarar que o recurso android.hardware.touchscreen não é necessário. Essa configuração identifica o app como capaz de funcionar em um dispositivo de TV e é necessária para que ele seja considerado um app para TV no Google Play. O exemplo de código a seguir mostra como incluir essa declaração no manifesto:

    <manifest>
        <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
        ...
    </manifest>
    

Cuidado: é preciso declarar que uma tela de toque não é necessária no manifesto do seu app, como mostrado nesse código de exemplo, ou o app não aparecerá no Google Play em dispositivos de TV.

Se um aplicativo incluir um filtro de intent de tela de início do Leanback, ele precisa oferecer uma imagem de banner de tela inicial para cada localização. O banner é o ponto de inicialização do app que aparece na tela inicial nas linhas de apps e jogos. Para adicionar o banner ao app, descreva o banner no manifesto desta forma:

    <application
        ...
        android:banner="@drawable/banner" >

        ...
    </application>
    

Use o atributo android:banner com a tag <application> para fornecer um banner padrão para todas as atividades do aplicativo ou a tag <activity> para uma atividade específica.

O banner precisa ser um recurso xhdpi com tamanho de 320 x 180 px. O texto precisa ser incluído na imagem. Se seu app estiver disponível em mais de um idioma, você precisará fornecer versões diferentes do banner com texto para cada idioma.

Alterar a cor da tela de início

Quando um app para TV é inicializado, o sistema exibe uma animação parecida com um círculo preenchido se expandindo. Para personalizar a cor dessa animação, configure o atributo android:colorPrimary do seu app ou atividade para TV como uma cor específica. Você também precisa definir dois outros atributos de transição como true, conforme mostrado no snippet de um arquivo XML de recursos de tema a seguir:

    <resources>
        <style ... >
          <item name="android:colorPrimary">@color/primary</item>
          <item name="android:windowAllowReturnTransitionOverlap">true</item>
          <item name="android:windowAllowEnterTransitionOverlap">true</item>
        </style>
    </resources>
    

Para mais informações sobre temas e estilos, consulte Estilos e temas.

Adicionar bibliotecas de suporte para TV

O Android SDK inclui bibliotecas de suporte para uso com apps para TV. Essas bibliotecas oferecem APIs e widgets de interface do usuário para dispositivos de TV. As bibliotecas, localizadas no diretório <sdk>/extras/android/support/, são:

  • Biblioteca v17 leanback: oferece widgets de interface do usuário para apps de TV, principalmente para apps que reproduzem mídia.
  • Biblioteca v7 recyclerview: oferece classes para gerenciar a exibição de listas longas para usar a memória de forma mais eficiente. Diversas classes da biblioteca v17 leanback dependem das classes desta biblioteca.
  • Biblioteca v7 cardview: oferece widgets de interface do usuário para exibição de cards informativos, como imagens e descrições de itens de mídia.

Observação: não é obrigatório usar essas bibliotecas de suporte no seu app para TV. No entanto, é recomendado usá-las, principalmente em apps que oferecem uma interface para navegação em catálogos de mídia.

Se decidir usar a biblioteca v17 leanback no seu app, observe que ela é dependente da biblioteca de suporte v4. Assim, os apps que usam a biblioteca de suporte leanback precisam incluir as seguintes bibliotecas de suporte:

  • Biblioteca de suporte v4
  • Biblioteca de suporte v7 recyclerview
  • Biblioteca de suporte v17 leanback

A biblioteca v17 leanback contém recursos que exigem determinadas etapas para incluí-la em projetos de apps. Para instruções sobre como importar uma biblioteca de suporte com recursos, consulte Configuração da Biblioteca de Suporte.

Criar apps para TV

Depois de completar as etapas descritas acima, é hora de começar a criar apps para a tela grande. Confira estes tópicos adicionais para ajudar a criar o aplicativo para TV:

  • Criar apps de reprodução para TV: as TVs são criadas para entreter, e o Android oferece ferramentas e widgets de interface do usuário para a criação de apps para TV que reproduzam vídeos e música e permitam ao usuário navegar pelo conteúdo desejado.
  • Ajudar os usuários a encontrar o conteúdo na TV: com todas as opções de conteúdo ao alcance dos usuários, ajudar a encontrar conteúdo de que eles gostem é quase tão importante quanto oferecer o conteúdo. Este treinamento discute como destacar o conteúdo em dispositivos de TV.
  • Criar jogos para TV: dispositivos de TV são uma plataforma incrível para jogos. Consulte este tópico para ter informações sobre como criar incríveis experiências de jogos para TV.
  • Criar canais de TV: apresente seu conteúdo de vídeo de maneira linear, no estilo de uma transmissão de TV, com canais e programas que seus usuários podem acessar por meio do guia de programas da mesma forma que os canais nos botões para cima/baixo.

Executar apps para TV

A execução do app é parte importante do processo de desenvolvimento. Você pode executar seu app em dispositivos de TV compatíveis com a depuração USB ou usar dispositivos de TV virtual.

Executar em um dispositivo real

Configure a TV da seguinte maneira:

  1. Use um cabo USB para conectar seu dispositivo de TV a sua máquina de desenvolvimento. Se necessário, consulte a documentação fornecida pelo fabricante.
  2. No dispositivo de TV, navegue até Configurações.
  3. Na linha Dispositivo, selecione Sobre.
  4. Navegue até Criar e selecione Criar várias vezes até receber a mensagem "Agora você é um desenvolvedor!"
  5. Volte para Configurações. Na linha Preferências, selecione Opções do desenvolvedor.
  6. Selecione Depuração > Depuração USB e selecione Ativado.
  7. Volte para a tela inicial da TV.

Para testar seu aplicativo no dispositivo de TV:

  1. No Android Studio, selecione seu projeto e clique em Run na barra de ferramentas.
  2. Na janela Select Deployment Target, selecione o dispositivo e clique em OK.

Executar em um dispositivo virtual

O AVD Manager do Android SDK oferece definições de dispositivo que permitem criar dispositivos de TV virtuais para executar e testar seus aplicativos.

Para criar um dispositivo de TV virtual:

  1. Inicie o AVD Manager. Para mais informações, consulte a ajuda do AVD Manager.
  2. Na caixa de diálogo do AVD Manager, clique na guia Device Definitions.
  3. Selecione uma das definições de dispositivo do Android TV e clique em Create AVD.
  4. Selecione as opções do emulador e clique em OK para criar o AVD.

    Observação: para melhor desempenho do emulador de dispositivo de TV, use o emulador x86 e ative a opção Use Host GPU. Use também a aceleração virtual, se disponível. Para mais informações sobre a aceleração de hardware do emulador, consulte Configurar aceleração de hardware.

Para testar o aplicativo no dispositivo de TV virtual:

  1. No Android Studio, selecione seu projeto e clique em Run na barra de ferramentas.
  2. Na janela Select Deployment Target, selecione o dispositivo de TV virtual e clique em OK.

Para mais informações sobre como usar emuladores, consulte Uso do emulador. Para mais informações sobre a implantação de apps do Android Studio em dispositivos virtuais, consulte Depuração com o Android Studio.