تطبيق مرجعي للتلفزيون

مطلوب تطبيق تلفزيون يقوم بتشغيل محتوى البث التلفزيوني المباشر لبعض فئات أجهزة Android TV ، مثل Panel TVs و Operator STBs. يتم توفير تطبيق تلفزيون مرجعي ( Live TV ) جنبًا إلى جنب مع نظام Android الأساسي ، والذي يمكن تخصيصه أو توسيعه أو استبداله. الكود المصدري متاح في مشروع Android Open Source Project.

تلخص هذه المقالة كيفية إنشاء وتخصيص تطبيق تلفزيون للنظام استنادًا إلى Live TV لجهاز Android TV الخاص بك. (يمكنك تمديد تطبيق التلفزيون الخاص بك لتنفيذ الشركة المصنعة للجهاز أو الميزات الخاصة بالبلد ، ولكن هذا ليس في نطاق تطبيق TV المرجعي.)

التبعيات

يعد تطبيق التلفزيون أحد مكونات TV Input Framework (TIF) ولا يمكن استخدامه بشكل مستقل عن المكونات الأخرى. هذا يعني أن الأجهزة المزودة بـ TIF فقط هي التي ستتمكن من تشغيل تطبيق Live TV .

يعتمد تطبيق Live TV على واجهات برمجة تطبيقات Android. الفروع المختلفة لها تبعيات مختلفة على مستويات API:

الجدول 1. فروع البث التلفزيوني المباشر.

فرع الهدف مستوى API الحد الأدنى من مستوى API
رئيس 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 ، ولكن يمكنك بسهولة تحديد إصدار سابق عن طريق تغيير الفرع من رئيسي إلى آخر مدرج في الجدول أعلاه.

mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8 -c

يبني

لإنشاء كود البث التلفزيوني المباشر ، قم بتشغيل:

. 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 لتطبيق التلفزيون ، يمكنك استخدام هذه الاختبارات أدناه:

اختبارات الوحدة

توجد اختبارات للوحدة والوظائف لتطبيق 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 عن الإطارات الساقطة والتأخيرات في العرض.

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'