App TV di riferimento

Un'app TV che riproduca contenuti TV in diretta è obbligatoria per alcune classi di dispositivi Android TV, come le TV con pannello e le TV set-top box dell'operatore. Il codice sorgente per un'app di riferimento è disponibile nell'Android Open Source Project.

Questa pagina riassume come creare e personalizzare un'app TV di sistema basata su Live TV per il tuo dispositivo TV Android.

Dipendenze

L'app TV in diretta è un componente del TV Input Framework (TIF) e non può essere utilizzata indipendentemente dagli altri componenti del TIF. I diversi rami dell'app hanno dipendenze diverse dai livelli API di 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 TV in diretta da Git. Le seguenti istruzioni si riferiscono alla versione corrente della TV in diretta. Per utilizzare una versione precedente, passa a uno dei branch di Git elencati 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 generare il codice per la TV in diretta, esegui:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Push

Utilizza il seguente codice per inviare 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 TV in diretta abbia le autorizzazioni di sistema, utilizza il seguente codice per inviarla a /system/priv-app la prima volta che la installi:

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

Test

Dopo aver installato la TV in diretta sul dispositivo, verifica che sia integrata correttamente utilizzando i seguenti test, oltre al Compatibility Test Suite e ai test CTS Verifier per l'app TV. Per eseguire tutti i tipi di test, devi avere un dispositivo o un emulatore connesso.

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 di jank

I test di judder rilevano frame persi e 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'