Справочное ТВ-приложение

Для некоторых классов устройств Android TV, таких как панельные телевизоры и операторские приставки, требуется ТВ-приложение, воспроизводящее телеконтент в прямом эфире. Исходный код эталонного приложения доступен в проекте Android с открытым исходным кодом.

На этой странице описано, как создать и настроить приложение системного телевидения на основе Live TV для вашего телевизионного устройства Android.

Зависимости

Приложение Live TV является компонентом TV Input Framework (TIF) и не может использоваться независимо от других компонентов TIF. Различные ветки приложения имеют разные зависимости от уровней Android API:

Ветвь Целевой уровень API Минимальный уровень API
main 24 (Андроид 7.0) 23
android-live-tv 23 (Андроид 6.0) 21
android-live-tv-l-mr1 22 (Андроид 5.1) 21

Получить исходный код

Чтобы начать, выберите версию Live TV из Git. Следующие инструкции относятся к текущей версии Live TV. Чтобы использовать более раннюю версию, переключитесь на одну из ветвей Git, перечисленных в предыдущей таблице.

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

Строить

Чтобы создать код Live TV, запустите:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

Толкать

Используйте следующий код, чтобы перенести Live TV на тестовое устройство:

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

Если вы хотите, чтобы приложение Live TV имело системные разрешения, используйте следующий код, чтобы отправить его в /system/priv-app при первой установке:

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

Тест

После установки Live TV на ваше устройство проверьте правильность его интеграции, используя следующие тесты в дополнение к набору тестов совместимости и тестам CTS Verifier для приложения TV. Для выполнения всех типов тестов необходимо подключить устройство или эмулятор.

Модульные тесты

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'

Функциональные тесты

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'

Джанк-тесты

Джанк-тесты ищут пропущенные кадры и задержки при рендеринге.

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'