參考電視應用

某些類別的 Android TV 設備(例如平板電視和運營商機頂盒)需要播放直播電視內容的電視應用。 Android 開源項目中提供了參考應用程序的源代碼

本頁總結瞭如何為您的 Android 電視設備構建和自定義基於 Live TV 的系統電視應用程序。

依賴項

Live TV 應用程序是TV Input Framework (TIF)的一個組件,不能獨立於其他 TIF 組件使用。應用程序的不同分支對 Android API 級別有不同的依賴關係:

分支目標 API 級別最低 API 級別
master 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 master
repo sync -j8 -c

建造

要構建直播電視代碼,請運行:

. 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 後,除了適用於 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'

Jank 測試

卡頓測試尋找丟幀和渲染延遲。

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'