Referencyjna aplikacja telewizyjna

Aplikacja telewizyjna, która odtwarza treści telewizyjne na żywo, jest wymagana w przypadku niektórych klas urządzeń z systemem Android TV, takich jak telewizory panelowe i dekodery STB operatorów. Wraz z platformą Android dostarczana jest referencyjna aplikacja telewizyjna ( telewizja na żywo ), którą można dostosować, rozszerzyć lub wymienić. Kod źródłowy jest dostępny w projekcie Android Open Source.

W tym artykule podsumowano, jak zbudować i dostosować systemową aplikację telewizyjną opartą na telewizji na żywo dla urządzenia telewizyjnego z systemem Android. (Możesz rozszerzyć swoją aplikację telewizyjną, aby zaimplementować funkcje producenta urządzenia lub specyficzne dla kraju, jednak nie wchodzi to w zakres referencyjnej aplikacji TV).

Zależności

Aplikacja TV jest składnikiem platformy TV Input Framework (TIF) i nie może być używana niezależnie od innych komponentów. Oznacza to, że tylko urządzenia z TIF będą mogły uruchomić aplikację Live TV .

Aplikacja Live TV jest zależna od interfejsów API systemu Android. Różne gałęzie mają różne zależności na poziomach API:

Tabela 1. Oddziały telewizji na żywo.

Gałąź Docelowy poziom interfejsu API Minimalny poziom API
mistrz 24 (Android 7.0) 23
telewizja na żywo z systemem Android 23 (Android 6.0) 21
android-live-tv-l-mr1 22 (Android 5.1) 21

Zdobądź źródło

Aby rozpocząć, wybierz wersję Live TV, którą chcesz z Git. Poniższe instrukcje dotyczą bieżącej wersji Live TV, ale możesz łatwo wybrać wcześniejszą wersję, zmieniając gałąź z głównej na inną wymienioną w powyższej tabeli.

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

Budować

Aby zbudować kod telewizji na żywo, uruchom:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Pchać

Aby przesłać telewizję na żywo na urządzenie testowe:

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

Jeśli programista chce, aby aplikacja LIVE TV miała uprawnienia systemowe, przy pierwszej instalacji należy ją przekazać do / system / priv-app z:

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

Test

Gdy telewizja na żywo jest już na Twoim urządzeniu, powinieneś sprawdzić, czy jest prawidłowo zintegrowana. Oprócz uruchomienia zestawu testów zgodności i testów CTS Verifier dla aplikacji telewizyjnej możesz skorzystać z poniższych testów:

Testy jednostkowe

Istnieją testy jednostkowe i funkcjonalne aplikacji Live TV. Aby uruchomić testy, musisz mieć podłączone urządzenie (lub emulator).

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.google.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'

Testy funkcjonalne

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.google.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'

Jank Tests

Testy Jank wyszukują gubione klatki i opóźnienia w renderowaniu.

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.google.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'