Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desenvolvendo Apps para Android TV

Desenvolvendo Apps para Android TV

Wagner Peireira Gomes

September 03, 2016
Tweet

More Decks by Wagner Peireira Gomes

Other Decks in Programming

Transcript

  1. Wagner Gomes Desenvolvedor Android na CI&T, Co-Organizador do Meetup Android

    Belo Horizonte, entusiasta de plataformas embarcadas com linux e android e praticante de automodelismo.
  2. Android TV - Entretenimento sob medida para você Filmes; Esporte

    ao vivo; Aplicativos de Streaming; Jogos Multiplayer;
  3. Como desenvolver para TV? Da mesma forma que para smartphones

    e tablets apenas com diferença de funcionalidades e uma tela bem maior; Será necessário o uso de bibliotecas exclusivas como Recomendations e a Leanback. Os requisitos mínimos são o SDK tools 24 e o Android 5.0 (API 21). Principalmente defina o tipo de aplicativo e implemente as funções adequadas para aquele nicho específico e elas são: Tv Playback, Jogos, Recomendações de conteúdo e Canais de TV.
  4. Biblioteca de Suporte Leanback; Fácil de usar e bastante versátil!!!

    https://developer.android.com/reference/android/support/v 17/leanback/package-summary.html
  5. Jogos Ainda em expansão, mas com grande potencial uma vez

    que teremos um jogo multi-dispositivos. Algo complicado neste cenário é o gerenciamento dos controles, já que smartphones e tablets usam o toque e pela TV deve-se usar um controle como esse da nvdia.
  6. Recomendações de Conteúdo Uma característica interessante é desenvolver aplicativos que

    exibam conteúdos logo na tela principal, sem a necessidade de abrir sua aplicação antes.
  7. Canais de TV Da mesma forma que o Youtube tem

    seus canais, não poderia ser diferente por aqui. Aplicativos que usam o conceito de canais devem exibir seus conteúdos de forma semelhante ao YouTube, Netflix e afins… Sem falar no conteúdo ao vivo.
  8. Canais de TV A aplicação implementa um serviço para o

    TV Input usando um TVContract que irá dizer quais os canais disponíveis na sua aplicação (sim pode ser mais de um), os programas dentro de cada canal e até mesmo informações sobre legenda e áudio alternativo. <service android:name="com.example.sampletvinput.SampleTvInput" android:label="@string/sample_tv_input_label" android:permission="android.permission.BIND_TV_INPUT"> <intent-filter> <action android:name="android.media.tv.TvInputService" /> </intent-filter> <meta-data android:name="android.media.tv.input" android:resource="@xml/sample_tv_input" /> </service> Manifest.xml
  9. Canais de TV <tv-input xmlns:android="http://schemas.android.com/apk/res/android" <!-- Required: activity for setting

    up the input --> android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" <!-- Optional: activity for controlling the settings --> android:settingsActivity="com.example.sampletvinput.SampleTvInputSettingsActivity" /> sample_tv_input.xml
  10. Canais de TV Os dados do seu canal são manipulados

    de uma forma padronizada dentro do layout da TV e necessitam ser atualizados usando o TvContract da seguinte forma: Número do canal (COLUMN_DISPLAY_NUMBER) Icone (android:icon manifest.xml) Descrição do programa (COLUMN_SHORT_DESCRIPTION) Título do programa (COLUMN_TITLE) Logo do Canal (TvContract.Channels.Logo) Use a cor #EEEEEE para não ficar estranho em volta Não incluir padding
  11. Canais de TV ContentValues values = new ContentValues(); values.put(Channels.COLUMN_DISPLAY_NUMBER, channel.mNumber);

    values.put(Channels.COLUMN_DISPLAY_NAME, channel.mName); values.put(Channels.COLUMN_ORIGINAL_NETWORK_ID, channel.mOriginalNetworkId); values.put(Channels.COLUMN_TRANSPORT_STREAM_ID, channel.mTransportStreamId); values.put(Channels.COLUMN_SERVICE_ID, channel.mServiceId); values.put(Channels.COLUMN_VIDEO_FORMAT, channel.mVideoFormat); Uri uri = context.getContentResolver().insert(TvContract.Channels.CONTENT_URI, values);
  12. TV Playback O mais utilizado, uma vez que as pessoas

    utilizam a TV para assistir conteúdo.
  13. Um pouco de código <activity android:name="com.sample.wapegomes.androidtv.ui.MainActivity" android:icon="@drawable/digital_day" android:label="@string/app_name" android:logo="@drawable/digital_day" android:screenOrientation="landscape"

    android:theme="@style/Theme.Leanback.Browse"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity>
  14. Dicas Não se esqueçam que a TV está sempre no

    modo paisagem, fica meio complicado girá-las, né? ViewPager são muito legais por causa da animação quando você desliza seu dedo na tela, mas como reproduzir isso em uma TV? Pense sempre nos componentes que irá utilizar lembrando sempre que estamos na TV.