部分 Android TV 裝置類別 (例如面板電視和營運商 STB) 需要可播放電視直播內容的電視應用程式。您可以在 Android 開放原始碼計畫中取得參考應用程式的原始碼。
本頁面將概略說明如何為 Android 電視裝置建構及自訂以直播電視為基礎的系統電視應用程式。
依附元件
直播電視應用程式是 TV Input Framework (TIF) 的元件,無法獨立於其他 TIF 元件使用。應用程式的不同分支對 Android API 級別有不同的依附元件:
Branch | 目標 API 級別 | 最低 API 級別 |
---|---|---|
main |
24 (Android 7.0) | 23 |
android-live-tv |
23 (Android 6.0) | 21 |
android-live-tv-l-mr1 |
22 (Android 5.1) | 21 |
取得來源
首先,請從 Git 中選取直播電視版本。以下操作說明適用於目前的電視直播版本。如要使用舊版,請切換至上表所列的任一 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 後,除了使用相容性測試套件和 TV 應用程式的 CTS 驗證工具測試,還請使用下列測試,確認 Live 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'
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'