参考电视应用程序

某些类别的 Android TV 设备(例如平板电视和运营商机顶盒)需要播放直播电视内容的电视应用程序。 Android 开源项目中提供了参考应用程序的源代码

本页总结了如何为 Android 电视设备构建和自定义基于 Live TV 的系统电视应用程序。

依赖关系

Live TV 应用程序是TV 输入框架 (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

获取源码

首先,从 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

建造

要构建直播电视代码,请运行:

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

使用以下代码将直播电视推送到您的测试设备:

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 验证程序测试之外,还可以使用以下测试来测试其是否已正确集成。您必须连接设备或模拟器才能运行所有测试类型。

单元测试

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'