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

แอปทีวีที่เล่นเนื้อหารายการทีวีสดจำเป็นสำหรับอุปกรณ์ Android TV บางประเภท เช่น แผงควบคุมทีวีและ STB ของผู้ให้บริการ ซอร์สโค้ด สำหรับแอปอ้างอิงมีอยู่ใน Android Open Source Project

หน้านี้สรุปวิธีการสร้างและปรับแต่งแอปทีวีระบบตาม Live TV สำหรับอุปกรณ์โทรทัศน์ Android ของคุณ

การพึ่งพาอาศัยกัน

แอพ Live TV เป็นส่วนประกอบของ TV Input Framework (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

รับแหล่งที่มา

ในการเริ่มต้น ให้เลือกเวอร์ชัน Live TV จาก 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

สร้าง

หากต้องการสร้างโค้ด Live TV ให้รัน:

. 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 บนอุปกรณ์ของคุณแล้ว ให้ทดสอบว่ามีการผสานรวมอย่างถูกต้องโดยใช้การทดสอบต่อไปนี้ นอกเหนือจาก ชุดทดสอบความเข้ากันได้ และ การทดสอบ CTS Verifier สำหรับแอป 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'