Aplicativo de TV de referência

Um aplicativo de TV que reproduz conteúdo de TV ao vivo é necessário para algumas classes de dispositivos Android TV, como TVs de painel e STBs de operadoras. O código-fonte de um aplicativo de referência está disponível no Android Open Source Project.

Esta página resume como criar e personalizar um aplicativo de sistema de TV baseado em TV ao vivo para seu dispositivo de televisão Android.

Dependências

O aplicativo Live TV é um componente do TV Input Framework (TIF) e não pode ser usado independentemente dos outros componentes TIF. Diferentes ramificações do aplicativo têm diferentes dependências nos níveis da API do Android:

Filial Nível de API desejado Nível mínimo de API
main 24 (andróide 7.0) 23
android-live-tv 23 (andróide 6.0) 21
android-live-tv-l-mr1 22 (andróide 5.1) 21

Obtenha a fonte

Para começar, selecione uma versão de TV ao vivo no Git. As instruções a seguir são para a versão atual do Live TV. Para usar uma versão anterior, alterne para uma das ramificações do Git listadas na tabela anterior.

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

Construir

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

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Empurrar

Use o código a seguir para enviar TV ao vivo para seu dispositivo de teste:

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

Se você pretende que o aplicativo Live TV tenha permissões de sistema, use o seguinte código para enviá-lo para /system/priv-app na primeira vez que instalá-lo:

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

Teste

Depois que o Live TV for instalado em seu dispositivo, teste se ele está devidamente integrado usando os testes a seguir, além do conjunto de testes de compatibilidade e dos testes CTS Verifier para o aplicativo de TV. Você deve ter um dispositivo ou emulador conectado para executar todos os tipos de teste.

Testes unitários

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.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.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 instabilidade

Os testes de instabilidade 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.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'