Aplicativo de TV de referência

Um aplicativo de TV que reproduza conteúdo de TV ao vivo é necessário para algumas classes de dispositivos Android TV, como Panel TVs e Operator STBs. Um aplicativo de TV de referência ( Live TV ) é fornecido juntamente com a plataforma Android, que pode ser personalizado, estendido ou substituído. O código-fonte está disponível no Android Open Source Project.

Este artigo resume como criar e personalizar um aplicativo de TV do sistema baseado em TV ao vivo para seu dispositivo de televisão Android. (Você pode estender seu aplicativo de TV para implementar recursos específicos do fabricante do dispositivo ou do país, mas isso não está no escopo do aplicativo de TV de referência.)

Dependências

O aplicativo de TV é um componente do TV Input Framework (TIF) e não pode ser usado independentemente dos outros componentes. Isso significa que apenas dispositivos com TIF poderão executar o aplicativo Live TV .

O aplicativo Live TV depende das APIs do Android. Diferentes ramificações têm diferentes dependências nos níveis de API:

Tabela 1. Agências de TV ao vivo.

Ramo Nível de API de destino Nível mínimo da API
mestre 24 (Android 7.0) 23
android-live-tv 23 (Android 6.0) 21
android-live-tv-l-mr1 22 (Android 5.1) 21

Obtenha a fonte

Para começar, selecione qual versão do Live TV você gostaria do Git. As instruções abaixo são para a versão atual do Live TV, mas você pode selecionar facilmente uma versão anterior alterando a ramificação de master para uma diferente listada na tabela acima.

mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8 -c

Construir

Para construir o código da TV ao vivo, execute:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Empurre

Para enviar TV ao vivo para seu dispositivo de teste:

adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk

Se o desenvolvedor quiser que o aplicativo LIVE TV tenha permissões do sistema, na primeira vez que for instalado, ele precisará ser enviado para /system/priv-app com:

adb push $OUT/system/priv-app/LiveTv/LiveTv.apk  /system/priv-app/LiveTv/

Teste

Uma vez que a TV ao vivo esteja no seu dispositivo, você deve testar se ela está devidamente integrada. Além de executar o conjunto de testes de compatibilidade e os testes do CTS Verifier para o aplicativo de TV, você pode usar estes testes abaixo:

Testes de unidade

Existem testes unitários e funcionais para o aplicativo Live TV. Você deve ter um dispositivo (ou emulador) conectado para executar os testes.

adb shell logcat -c
m LiveTv TVTestInput TVUnitTests -j20 &&\
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\
adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \
adb install -r -d $OUT/data/app/TVUnitTests/TVUnitTests.apk && \
adb shell pm clear com.android.providers.tv && \
adb shell pm clear com.google.android.tv && \
adb shell am instrument \
  -e testSetupMode unit \
  -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\
adb shell input keyevent KEYCODE_HOME &&\
adb shell am instrument \
  -w 'com.android.tv.tests/android.support.test.runner.AndroidJUnitRunner'

Testes funcionais

adb shell logcat -c
m LiveTv TVTestInput TVFuncTests -j20 &&\
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\
adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \
adb install -r -d $OUT/data/app/TVFuncTests/TVFuncTests.apk && \
adb shell pm clear com.android.providers.tv && \
adb shell pm clear com.google.android.tv && \
adb shell am instrument \
  -e testSetupMode func \
  -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\
adb shell input keyevent KEYCODE_HOME &&\
adb shell am instrument \
  -w 'com.android.tv.tests.ui/android.support.test.runner.AndroidJUnitRunner'

Testes de Jank

Os testes Jank procuram quadros perdidos e atrasos na renderização.

adb shell logcat -c
m LiveTv TVTestInput TVJankTests -j20 &&\
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\
adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk &&\
adb install -r -d $OUT/data/app/TVJankTests/TVJankTests.apk &&\
adb shell pm clear com.android.providers.tv &&\
adb shell pm clear com.google.android.tv &&\
echo "Creating a lot of channels and EPG data, this may take a while" &&\
adb shell am instrument \
  -e testSetupMode jank \
  -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\
adb shell input keyevent KEYCODE_HOME &&\
adb shell am instrument \
  -w 'com.android.tv.tests.jank/android.support.test.runner.AndroidJUnitRunner'