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

จำเป็นต้องมีแอปพลิเคชันทีวีที่เล่นเนื้อหารายการทีวีถ่ายทอดสดสำหรับอุปกรณ์ Android TV บางประเภทเช่น Panel TV และ Operator STB แอปพลิเคชันทีวีอ้างอิง ( Live TV ) มีให้พร้อมกับแพลตฟอร์ม Android ซึ่งสามารถปรับแต่งขยายหรือเปลี่ยนได้ ซอร์สโค้ดมี อยู่ใน Android Open Source Project

บทความนี้สรุปวิธีสร้างและปรับแต่งแอปทีวีระบบโดยใช้ Live TV สำหรับอุปกรณ์โทรทัศน์ Android ของคุณ (คุณสามารถขยายแอปพลิเคชันทีวีของคุณเพื่อใช้งานผู้ผลิตอุปกรณ์หรือคุณสมบัติเฉพาะประเทศได้อย่างไรก็ตามสิ่งนี้ไม่อยู่ในขอบเขตของแอพ TV อ้างอิง)

การพึ่งพา

แอปพลิเคชัน TV เป็นส่วนประกอบของ TV Input Framework (TIF) และไม่สามารถใช้งานได้โดยอิสระจากส่วนประกอบอื่น ๆ ซึ่งหมายความว่าเฉพาะอุปกรณ์ที่มี TIF เท่านั้นที่สามารถเรียกใช้แอปพลิเคชัน Live TV

แอปพลิเคชัน Live TV ขึ้นอยู่กับ API ของ Android สาขาต่างๆมีการอ้างอิงที่แตกต่างกันในระดับ API:

ตารางที่ 1. สาขาทีวีถ่ายทอดสด

สาขา ระดับ API เป้าหมาย ระดับ API ขั้นต่ำ
ปรมาจารย์ 24 (Android 7.0) 23
android-live-tv 23 (แอนดรอยด์ 6.0) 21
android-live-tv-l-mr1.png 22 (แอนดรอยด์ 5.1) 21

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

ในการเริ่มต้นให้เลือกเวอร์ชันของ Live TV ที่คุณต้องการจาก Git คำแนะนำด้านล่างนี้ใช้สำหรับ Live TV เวอร์ชันปัจจุบัน แต่คุณสามารถเลือกเวอร์ชันก่อนหน้าได้อย่างง่ายดายโดยเปลี่ยนสาขาจากมาสเตอร์ไปเป็นสาขาอื่นที่แสดงในตารางด้านบน

mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b master
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 แล้วคุณสามารถใช้การทดสอบเหล่านี้ด้านล่าง:

การทดสอบหน่วย

มีการทดสอบหน่วยและการทำงานสำหรับแอพ 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.google.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.google.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

การทดสอบ 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.google.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'