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

يلزم وجود تطبيق تلفزيوني يقوم بتشغيل محتوى البث التلفزيوني المباشر لبعض فئات أجهزة Android TV، مثل أجهزة التلفاز اللوحية وأجهزة STB للمشغل. الكود المصدري لتطبيق مرجعي متاح في مشروع Android مفتوح المصدر.

تلخص هذه الصفحة كيفية إنشاء تطبيق تلفزيوني للنظام وتخصيصه استنادًا إلى البث التلفزيوني المباشر لجهاز التلفزيون الذي يعمل بنظام Android.

التبعيات

يعد تطبيق Live TV أحد مكونات TV Input Framework (TIF) ولا يمكن استخدامه بشكل مستقل عن مكونات TIF الأخرى. الفروع المختلفة للتطبيق لها تبعيات مختلفة على مستويات Android API:

فرع مستوى واجهة برمجة التطبيقات المستهدف الحد الأدنى لمستوى API
main 24 (أندرويد 7.0) 23
android-live-tv 23 (أندرويد 6.0) 21
android-live-tv-l-mr1 22 (أندرويد 5.1) 21

احصل على المصدر

للبدء، حدد إصدار البث التلفزيوني المباشر من 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

يبني

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

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

يدفع

استخدم الكود التالي لدفع البث التلفزيوني المباشر إلى جهاز الاختبار الخاص بك:

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 لتطبيق التلفزيون. يجب أن يكون لديك جهاز أو محاكي متصل لتشغيل كافة أنواع الاختبارات.

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

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'