แอปทีวีที่เล่นเนื้อหาทีวีสดเป็นสิ่งจําเป็นสําหรับอุปกรณ์ Android TV บางประเภท เช่น ทีวีแผงแบน และ STB ของผู้ให้บริการ ซอร์สโค้ดของแอปอ้างอิงมีอยู่ในโปรเจ็กต์โอเพนซอร์ส Android
หน้านี้จะสรุปวิธีสร้างและปรับแต่งแอปทีวีของระบบที่อิงตามรายการทีวีสดสำหรับอุปกรณ์ทีวี Android
ทรัพยากร Dependency
แอปทีวีสดเป็นคอมโพเนนต์ของ TV Input Framework (TIF) และไม่สามารถใช้งานแยกจากคอมโพเนนต์ TIF อื่นๆ ได้ สาขาต่างๆ ของแอปมีทรัพยากร Dependency ที่แตกต่างกันสำหรับระดับ API ของ Android ดังนี้
สาขา | ระดับ 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
หากต้องการให้แอปทีวีสดมีสิทธิ์ระดับระบบ ให้ใช้โค้ดต่อไปนี้เพื่อส่งแอปไปยัง /system/priv-app
เมื่อติดตั้งเป็นครั้งแรก
adb push $OUT/system/priv-app/LiveTv/LiveTv.apk /system/priv-app/LiveTv/
ทดสอบ
หลังจากติดตั้งการถ่ายทอดสดบนอุปกรณ์แล้ว ให้ทดสอบว่าผสานรวมอย่างถูกต้องโดยใช้การทดสอบต่อไปนี้นอกเหนือจากชุดเครื่องมือทดสอบความเข้ากันได้และการทดสอบโปรแกรมตรวจสอบ CTS สําหรับแอปทีวี คุณต้องมีอุปกรณ์หรือโปรแกรมจําลองที่เชื่อมต่ออยู่จึงจะเรียกใช้การทดสอบทุกประเภทได้
การทดสอบ 1 หน่วย
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'