Application TV de référence

Certaines classes d'Android TV doivent disposer d'une appli TV permettant de lire des contenus télévisés en direct tels que les téléviseurs à l'écran et les décodeurs d'opérateur. Le code source pour une application de référence est disponible dans le projet Android Open Source.

Cette page résume comment créer et personnaliser une application TV système basée sur sur la télévision en direct sur votre téléviseur Android.

Dépendances

L'application Live TV est un composant du TIF (TV Input Framework). et ne peut pas être utilisé indépendamment des autres composants TIF. Les différentes branches de l'application ont différentes dépendances aux niveaux d'API Android:

Branch Niveau d'API cible Niveau d'API minimal
main 24 (Android 7.0) 23
android-live-tv 23 (Android 6.0) 21
android-live-tv-l-mr1 22 (Android 5.1) 21

Obtenir la source

Pour commencer, sélectionnez une version de Live TV à partir de Git. Les instructions suivantes concernent de la télévision en direct. Pour utiliser une version antérieure, passez à l'une des branches Git répertoriés dans le tableau précédent.

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

Créer

Pour compiler le code de Live TV, exécutez la commande suivante:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Push

Utilisez le code suivant pour déployer Live TV sur votre appareil de test:

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

Si vous souhaitez que l'appli Live TV dispose d'autorisations système, utilisez le code suivant pour la déployer /system/priv-app la première fois que vous l'installez:

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

Test

Une fois la télévision en direct installée sur votre appareil, vérifiez qu'elle est correctement intégrée à l'aide des éléments suivants : en plus de la suite de tests de compatibilité et les tests CTS Verifier pour l'application TV. Vous devez disposer d'un appareil ou d'un émulateur connecté pour exécuter tous les types de tests.

Tests unitaires

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'

Tests fonctionnels

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'

Tests d'à-coups

Les tests d'à-coups recherchent les pertes de frames et les retards d'affichage.

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'