App TV di riferimento

Per alcune classi di Android TV è necessaria un'app TV che riproduca contenuti TV in diretta come TV a schermo piatto e STB degli operatori. Il codice sorgente per un'app di riferimento è disponibile nell'Android Open Source Project.

Questa pagina riassume come creare e personalizzare un'app di sistema per TV basata su sulla TV in diretta sul tuo televisore Android.

Dipendenze

L'app Live TV è un componente del TV Input Framework (TIF) e non può essere utilizzato indipendentemente dagli altri componenti TIF. I vari rami dell'app hanno con dipendenze diverse dai livelli API Android:

Branch Livello API target Livello API minimo
main 24 (Android 7.0) 23
android-live-tv 23 (Android 6.0) 21
android-live-tv-l-mr1 22 (Android 5.1) 21

Recupera l'origine

Per iniziare, seleziona una versione di Live TV da Git. Le seguenti istruzioni sono per la versione attuale di TV in diretta. Per utilizzare una versione precedente, passa a uno dei rami Git elencate nella tabella precedente.

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

Crea

Per creare il codice per la TV in diretta, esegui:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Push

Usa il seguente codice per trasmettere la TV in diretta al tuo dispositivo di test:

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

Se vuoi che l'app Live TV disponga delle autorizzazioni di sistema, utilizza il codice seguente per eseguirne il push /system/priv-app la prima volta che lo installi:

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

Test

Dopo aver installato la TV in diretta sul tuo dispositivo, verifica che sia integrata correttamente utilizzando il seguente codice test di compatibilità e test di compatibilità con la suite di test di compatibilità e i test CTS Verifier per l'app TV. Per eseguire tutti i tipi di test è necessario che sia collegato un dispositivo o un emulatore.

Test delle unità

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'

Test funzionali

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'

Test Jank

I test di jank cercano i frame interrotti e i ritardi nel rendering.

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'