App de TV de referencia

Algunas clases de Android TV requieren una app de TV que reproduzca contenido de TV en vivo como los paneles de TV y los STB del operador. El código fuente para una app de referencia está disponible en el Proyecto de código abierto de Android.

En esta página, se resume cómo crear y personalizar una app de TV del sistema basada en en TV en vivo en tu dispositivo Android TV.

Dependencias

La app de TV en vivo es un componente del framework de entrada de TV (TIF). y no se puede usar independientemente de los otros componentes del TIF. Las diferentes ramas de la app diferentes dependencias en los niveles de API de Android:

Branch Nivel de API objetivo Nivel mínimo de API
main 24 (Android 7.0) 23
android-live-tv 23 (Android 6.0) 21
android-live-tv-l-mr1 22 (Android 5.1) 21

Obtén la fuente

Para comenzar, selecciona una versión de TV en vivo desde Git. Las siguientes instrucciones son para versión de TV en vivo. Para usar una versión anterior, cambia a una de las ramas de Git en la tabla anterior.

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

Compilación

Para compilar el código de Live TV, ejecuta lo siguiente:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Enviar

Usa el siguiente código para enviar TV en vivo a tu dispositivo de prueba:

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

Si deseas que la app de Live TV tenga permisos del sistema, usa el siguiente código para enviarla a /system/priv-app la primera vez que lo instales:

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

Prueba

Después de instalar Live TV en tu dispositivo, prueba que se integre correctamente con los siguientes métodos: pruebas además del conjunto de pruebas de compatibilidad y las pruebas del verificador de CTS para la app para TV. Debes tener un dispositivo o un emulador conectado para ejecutar todos los tipos de pruebas.

Pruebas de unidades

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'

Pruebas funcionales

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'

Pruebas de bloqueos

Las pruebas de bloqueo buscan fotogramas descartados y retrasos en la renderización.

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'