Referenz-TV-App

Für einige Android TV-Geräte wie Panel-Fernseher und Set-Top-Boxen von Dienstanbietern ist eine TV-App erforderlich, mit der Live-TV-Inhalte wiedergegeben werden können. Der Quellcode für eine Referenz-App ist im Android Open Source Project verfügbar.

Auf dieser Seite wird beschrieben, wie Sie eine systemeigene TV-App auf der Grundlage von Live-TV für Ihr Android-Fernsehergerät erstellen und anpassen.

Abhängigkeiten

Die Live-TV-App ist eine Komponente des TV Input Framework (TIF) und kann nicht unabhängig von den anderen TIF-Komponenten verwendet werden. Die verschiedenen Versionen der App haben unterschiedliche Abhängigkeiten von Android-API-Ebenen:

Branch Ziel-API-Level Mindest-API-Level
main 24 (Android 7.0) 23
android-live-tv 23 (Android 6.0) 21
android-live-tv-l-mr1 22 (Android 5.1) 21

Quelle abrufen

Wählen Sie zuerst eine Live-TV-Version aus Git aus. Die folgende Anleitung gilt für die aktuelle Version von Live TV. Wenn Sie eine ältere Version verwenden möchten, wechseln Sie zu einem der in der vorherigen Tabelle aufgeführten Git-Branches.

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

Entwickeln

Führe zum Erstellen des Live-TV-Codes Folgendes aus:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Push

Verwende den folgenden Code, um Live-TV auf dein Testgerät zu streamen:

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

Wenn die Live-TV-App Systemberechtigungen haben soll, verwende den folgenden Code, um sie bei der Erstinstallation auf /system/priv-app zu pushen:

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

Test

Nachdem Live-TV auf Ihrem Gerät installiert ist, testen Sie zusätzlich zur Kompatibilitätstestsuite und den CTS-Verifier-Tests für die TV-App mit den folgenden Tests, ob die Funktion richtig eingebunden ist. Sie benötigen ein verbundenes Gerät oder einen Emulator, um alle Testtypen ausführen zu können.

Unit tests

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'

Funktionstests

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'

Rucktests

Bei den Ruckeltests wird nach fehlenden Frames und Verzögerungen beim Rendern gesucht.

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'