แอปทีวีอ้างอิง

แอปทีวีที่เล่นเนื้อหาทีวีสดเป็นสิ่งจําเป็นสําหรับอุปกรณ์ 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'