إطار عمل إدخال التلفزيون

رمز Android TV HAL

يعمل "إطار عمل إدخال Android TV" (TIF) على تبسيط عملية إرسال المحتوى المباشر إلى Android TV. يوفّر Android TIF واجهة برمجة تطبيقات قياسية تتيح للشركات المصنّعة إنشاء وحدات إدخال للتحكّم في Android TV، كما تتيح البحث عن المحتوى المباشر على التلفزيون وتقديم اقتراحات من خلال البيانات الوصفية التي تنشرها وحدة إدخال التلفزيون.

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

المكوّنات

يتضمّن تنفيذ إطار عمل إدخال Android TV "مدير إدخال التلفزيون". يعمل TIF مع تطبيق التلفزيون، وهو تطبيق نظام لا يمكن استبداله بتطبيق تابع لجهة خارجية، للوصول إلى القنوات المدمجة وقنوات IP. يتواصل "تطبيق البث التلفزيوني" مع وحدات "إدخال التلفزيون" التي توفّرها الشركة المصنّعة للجهاز أو أي أطراف أخرى من خلال "مدير إدخال التلفزيون".

يتألف "إطار عمل إدخال محتوى التلفزيون" مما يلي:

  • مزوّد خدمة التلفزيون (com.android.providers.tv.TvProvider): قاعدة بيانات للقنوات والبرامج والأذونات المرتبطة بها
  • تطبيق البث التلفزيوني (com.android.tv.TvActivity): التطبيق الذي يعالج تفاعل المستخدمين
  • "مدير إدخالات التلفزيون" (android.media.tv.TvInputManager): يسمح لإدخالات التلفزيون بالتواصل مع تطبيق التلفزيون
  • إدخال التلفزيون: تطبيق يمثّل أجهزة الاستقبال وفتحات الإدخال الفعلية أو الافتراضية
  • HAL لإدخال التلفزيون (وحدة tv_input): تعريف للأجهزة يسمح لمدخلات التلفزيون للنظام بالوصول إلى الأجهزة الخاصة بالتلفزيون عند تنفيذها
  • أدوات رقابة الأهل: التكنولوجيا التي تتيح حظر القنوات والبرامج
  • ‫HDMI-CEC: التكنولوجيا التي تتيح التحكّم عن بُعد في الأجهزة المختلفة عبر HDMI
  • إطار عمل الموالف: إطار عمل لإدخالات التلفزيون المُدمَج
  • MediaCas: إطار عمل للوصول المشروط
  • أداة إدارة موارد أداة الاستقبال: خدمة لإدارة موارد الأجهزة لإدخال التلفزيون، وMediaCas، وإدخال أداة الاستقبال المدمجة

وسنتناول هذه المكوّنات بالتفصيل أدناه. اطّلِع على الرسم البياني التالي للحصول على عرض تفصيلي لبنية Android TV Input Framework.

نظرة عامة على بنية Android TIF
الشكل 1. بنية إطار عمل إدخال Android TV (TIF)

تدفق

في ما يلي كيفية تنفيذ هذه البنية:

  1. يظهر للمستخدم تطبيق البث التلفزيوني ويتفاعل معه، وهو تطبيق نظام لا يمكن استبداله بتطبيق تابع لجهة خارجية.
  2. يعرض تطبيق البث التلفزيوني محتوى الصوت والفيديو من إدخال التلفزيون.
  3. لا يمكن لتطبيق البث التلفزيوني التحدث مباشرةً مع إدخالات التلفزيون. يحدِّد "مدير إدخالات التلفزيون" حالة إدخالات التلفزيون لتطبيق التلفزيون. اطّلِع على مدير إدخالات التلفزيون أدناه للحصول على مزيد من التفاصيل حول هذه القيود.

الأذونات

  • signatureOrSystem تقتصر مصادر الإدخال التلفزيوني وتطبيق البث التلفزيوني فقط على إمكانية الوصول الكامل إلى قاعدة بيانات "مقدّمي خدمات البث التلفزيوني" ويمكنهم تلقّي "الأحداث الرئيسية".
  • يمكن فقط لإدخالات التلفزيون في النظام الوصول إلى HAL لإدخال التلفزيون من خلال خدمة "مدير إدخال التلفزيون". يتم الوصول إلى إدخالات التلفزيون واحدًا لواحد عبر جلسات "مدير إدخال التلفزيون".
  • يمكن لمدخلات التلفزيون التابعة لجهات خارجية الوصول إلى قاعدة بيانات مقدّم خدمات التلفزيون مقيّدًا بالحزمة، ولا يمكنها القراءة/الكتابة إلا في صفوف الحزمة المطابقة.
  • يمكن لمداخل التلفزيون التابعة لجهات خارجية عرض محتوى خاص بها أو محتوى من مداخل التلفزيون المخصصة لنقل الإشارات الخاصة بجهة تصنيع الجهاز، مثل HDMI1. لا يمكنها عرض المحتوى من مصادر غير متوافقة مع ميزة "النقل المباشر"، مثل مُعدِّل قنوات IPTV أو مُعدِّل قنوات مدمج.
  • TV_INPUT_HARDWARE إذن لتطبيق إدخال التلفزيون المزوّد بأجهزة، يُرسِل إشارة إلى خدمة "إدارة إدخالات التلفزيون" لإعلام خدمة "إدخال التلفزيون" عند بدء التشغيل للاتصال بخدمة "إدارة إدخالات التلفزيون" وإضافة مصادر إدخال التلفزيون. يتيح هذا الإذن لتطبيق إدخال التلفزيون المزوّد بأجهزة إمكانية استخدام عدّة إدخالات تلفزيونية لكل خدمة إدخال تلفزيوني، بالإضافة إلى إمكانية إضافة إدخالات تلفزيونية متوافقة وإزالتها بشكل ديناميكي.

مقدّم خدمات البث التلفزيوني

تخزِّن قاعدة بيانات مزوّد خدمة التلفزيون القنوات والبرامج من مصادر بيانات التلفزيون. وينشر مزود خدمة التلفزيون أيضًا الأذونات المرتبطة ويديرها حتى تتمكن أجهزة الإدخال التلفزيوني من الاطّلاع على السجلات الخاصة بها فقط. مثلاً، يمكن لمدخل تلفزيون معيّن الاطّلاع فقط على القنوات والبرامج التي وفّرها، ولا يُسمح له بالوصول إلى أي قنوات وبرامج أخرى لإدخالات التلفزيون.

يربط مقدّم المحتوى التلفزيوني "نوع البث" بـ "النوع الأساسي" داخليًا. إنّ إدخالات المحتوى التلفزيوني هي المسؤولة عن تعبئة حقل "نوع البث" بالقيمة الواردة في معيار البث الأساسي، وسيتم تلقائيًا تعبئة حقل "النوع الأساسي" بالنوع الصحيح المرتبط منandroid.provider.TvContract.Genres. على سبيل المثال، مع بث محتوى تلفزيوني باستخدام معيار ATSC A/65 العادي وبرنامج يتضمّن النوع 0x25 (أي "رياضة")، سيعبئ مدخل التلفزيون حقل "نوع البث" باستخدام السلسلة "رياضة" وسيعبئ مقدّم المحتوى التلفزيوني حقل "النوع الأساسي" باستخدام القيمة المُحدَّدة android.provider.TvContract.Genres.SPORTS.

اطّلِع على المخطّط البياني أدناه للحصول على عرض تفصيلي لمزوّد خدمة التلفزيون.

مقدّم خدمة Android TV
الشكل 2. مقدّم خدمة Android TV

لا يمكن للتطبيقات في قسم النظام المميّز إلا قراءة قاعدة بيانات مقدّم خدمات التلفزيون بالكامل.

لا تخزِّن مدخلات التلفزيون التي تتيح نقل البيانات مباشرةً القنوات والبرامج.

بالإضافة إلى الحقول العادية للقنوات والبرامج، توفّر قاعدة بيانات مقدِّمي خدمات التلفزيون أيضًا حقلاً من نوع BLOB، COLUMN_INTERNAL_PROVIDER_DATA، في كل جدول قد تستخدمه إدخالات التلفزيون لتخزين البيانات العشوائية. يمكن أن تتضمّن بيانات BLOB معلومات مخصّصة، مثل معدّل تكرار المُعدّل المرتبط، وقد يتم تقديمها في وحدة تخزين مؤقت للبروتوكول أو نموذج آخر. يتوفّر حقل قابل للبحث لإخفاء قنوات معيّنة في نتائج البحث (مثلاً لتلبية متطلبات حماية المحتوى الخاصة بكل بلد).

أمثلة على حقول قاعدة البيانات

يتيح "مقدِّم خدمة البث التلفزيوني" البيانات المنظَّمة في جداول القنوات (android.provider.TvContract.Channels) والبرامج (android.provider.TvContract.Programs). تتم تعبئة هذه الجداول واستخدامها من خلال مصادر بيانات التلفزيون وتطبيقات النظام مثل تطبيق التلفزيون. تتضمّن هذه الجداول أربعة أنواع من الحقول:

  • العرض: تحتوي حقول العرض على معلومات قد تريد التطبيقات إظهارها للمستخدم، مثل اسم القناة (COLUMN_DISPLAY_NAME) أو رقمها (COLUMN_DISPLAY_NUMBER) أو عنوان البرنامج الذي يتم عرضه.
  • البيانات الوصفية: تتوفّر ثلاثة حقول لتحديد المحتوى، وفقًا للمعايير ذات الصلة، مثل معرّف بث النقل للقناة (COLUMN_TRANSPORT_STREAM_ID) ومعرّف الشبكة الأصلي (COLUMN_ORIGINAL_NETWORK_ID) ومعرّف الخدمة (COLUMN_SERVICE_ID).
  • البيانات الداخلية: الحقول المخصّصة للاستخدام المخصّص لمدخلات التلفزيون.
    بعض الحقول، مثل COLUMN_INTERNAL_PROVIDER_DATA، هي حقول BLOB قابلة للتخصيص يمكن فيها لوحدة إدخال التلفزيون تخزين بيانات وصفية عشوائية عن قناتها أو برنامجها.
  • الإبلاغ: تشير حقول الإبلاغ إلى ما إذا كان يجب منع الوصول إلى القناة من خلال البحث أو التصفّح أو المشاهدة. لا يمكن ضبط هذا الإعداد إلا على مستوى القناة. تلتزم جميع البرامج بالإعدادات المحدّدة على القناة.
    • COLUMN_SEARCHABLE: قد يكون حظر البحث من بعض القنوات مطلوبًا في مناطق معيّنة. COLUMN_SEARCHABLE = 0 يعني ذلك أنّه يجب عدم عرض القناة في نتائج البحث.
    • COLUMN_BROWSABLE: تظهر لتطبيقات النظام فقط. حظر التطبيقات من تصفُّح القناة يشير الرمز COLUMN_BROWSABLE = 0 إلى أنّه يجب عدم تضمين القناة في قائمة القنوات.
    • COLUMN_LOCKED: تظهر لتطبيقات النظام فقط. حظر مشاهدة القناة من خلال الحسابات غير الصالحة بدون إدخال رمز التعريف الشخصي COLUMN_LOCKED = 1 يعني أنّ القناة يجب أن تكون محمية بأدوات رقابة الأهل.

للحصول على قائمة أكثر شمولاً بالحقول، يُرجى الاطّلاع على android/frameworks/base/media/java/android/media/tv/TvContract.java.

الأذونات والتحكّم في الوصول

تكون جميع الحقول مرئية لأي مستخدم لديه إذن الوصول إلى الصف المقابل. لا يمكن للمستخدمين الوصول مباشرةً إلى أيّ حقول، بل يمكنهم الاطّلاع فقط على ما يعرضه تطبيق التلفزيون أو تطبيقات النظام أو مصادر إدخال التلفزيون.

  • يحتوي كل صف على PACKAGE_NAME، وهي الحزمة (التطبيق) التي تملك هذا الصف، ويتم التحقّق منها في "طلب البحث" و"الإدراج" و"التحديث" من خلال TvProvider.java. لا يمكن لمدخل التلفزيون الوصول إلا إلى المعلومات التي كتبها، ويتم حظره من الوصول إلى المعلومات التي تقدّمها مداخل التلفزيون الأخرى.
  • أذونات القراءة والكتابة من خلال ملف AndroidManifest.xml (تتطلّب موافقة المستخدم) لتحديد القنوات المتاحة
  • بإمكان تطبيقات signatureOrSystem فقط الحصول على إذن ACCESS_ALL_EPG_DATA للوصول إلى قاعدة البيانات بأكملها.

مدير مصادر إدخال التلفزيون

يقدّم "مدير إدخالات التلفزيون" واجهة برمجة تطبيقات مركزية للنظام في إطار عمل إدخالات Android TV بشكل عام. وتتوسط هذه الخدمة التفاعل بين التطبيقات ومدخلات التلفزيون، وتوفر وظائف رقابة الأهل. يجب أن يتم إنشاء جلسات "أداة إدارة إدخالات التلفزيون" بشكلٍ فردي مع إدخالات التلفزيون. يتيح "مدير إدخالات التلفزيون" الوصول إلى إدخالات التلفزيون المثبَّتة حتى تتمكّن التطبيقات من إجراء ما يلي:

  • إدراج مدخلات التلفزيون والتحقّق من حالتها
  • إنشاء جلسات وإدارة المستمعين

بالنسبة إلى الجلسات، قد يضبط "تطبيق البث التلفزيوني" على معرّفات الموارد المنتظمة (URI) التي تمت إضافتها فقط إلى قاعدة بيانات "مقدِّم خدمة البث التلفزيوني"، باستثناء إدخالات البث التلفزيوني التي يمكن ضبطها باستخدام TvContract.buildChannelUriForPassthroughInput(). قد يتم أيضًا ضبط مستوى الصوت في مصدر إدخال التلفزيون. إنّ إدخالات أجهزة التلفزيون التي تقدّمها الشركة المصنّعة للجهاز (تطبيقات التوقيع) أو التطبيقات الأخرى المثبَّتة في قسم النظام ووقّعت عليها ستتمكن من الوصول إلى قاعدة بيانات "مقدِّم خدمة التلفزيون" بأكملها. ويمكن استخدام هذا الإذن لإنشاء تطبيقات لتصفّحها والبحث في جميع القنوات والبرامج التلفزيونية المتاحة.

يمكن للتطبيق إنشاء TvInputCallback وتسجيله مع android.media.tv.TvInputManager ليتم استدعاؤه عند تغيُّر حالة مدخل التلفزيون أو عند إضافة مدخل تلفزيون أو إزالته. على سبيل المثال، يمكن أن يتفاعل تطبيق تلفزيون عندما يكون مدخل التلفزيون غير متصل من خلال عرضه على أنه غير متصل ومنع تحديده.

يُنشئ "مدير إدخالات التلفزيون" واجهة برمجة تطبيقات تجريدية للتواصل بين تطبيق التلفزيون وإدخالات التلفزيون. تتيح الواجهة العادية لكل من "مدير إدخالات التلفزيون" و"إدخال التلفزيون" لعدة شركات تصنيع الأجهزة إنشاء تطبيقات خاصة بها للتلفزيون، كما تساعد جميع إدخالات التلفزيون التابعة لجهات خارجية على العمل مع جميع تطبيقات التلفزيون.

مصادر إدخال التلفزيون

إنّ تطبيقات "إدخالات التلفزيون" هي تطبيقات Android من حيث أنّها تتضمّن ملف AndroidManifest.xml وتكون مثبّتة (من خلال Play أو مثبّتة مسبقًا أو تم تثبيتها من مصدر غير معروف). يتيح Android TV استخدام تطبيقات النظام المثبَّتة مسبقًا والتطبيقات الموقَّعة من الشركة المصنِّعة للجهاز و مدخلات التلفزيون التابعة لجهات خارجية.

لا يمكن توفير بعض مصادر الإدخال، مثل إدخال HDMI أو إدخال الموالف المدمج، إلا من خلال الشركة المصنعة أثناء التحدث مباشرةً مع الجهاز الأساسي. أما التطبيقات الأخرى، مثل IPTV وخدمات بث المحتوى في أماكن مختلفة وأجهزة فك تشفير البث الخارجية، فيمكن أن تقدّمها جهات خارجية على شكل حِزم APK على "متجر Google Play". بعد تنزيل التطبيق وتثبيته، يمكن اختيار مصدر الإدخال الجديد ضمن تطبيق البث التلفزيوني.

مثال على إدخال العبور

إدخال نظام Android TV
الشكل 3. إدخال نظام Android TV

في هذا المثال، يكون مدخل التلفزيون الذي تقدّمه الشركة المصنّعة للجهاز موثوقًا فيه ويملك إذن الوصول الكامل إلى موفّر المحتوى التلفزيوني. وبما أنّه جهاز إدخال تلفزيوني للبث المباشر، لا يتم تسجيل أي قنوات أو برامج لدى مقدّم خدمة التلفزيون. للحصول على معرّف الموارد المنتظم المستخدَم للإشارة إلى إدخال البيانات المُرسَلة، استخدِم android.media.tv.TvContract طريقة الأداة buildChannelUriForPassthroughInput(String inputId). يتواصل تطبيق البث التلفزيوني مع "مدير إدخال التلفزيون" للوصول إلى إدخال تلفزيون HDMI.

مثال على جهاز ضبط القنوات المدمج

إدخال أداة الاستقبال المضمّنة في Android TV
الشكل 4. إدخال مُعدِّل الترميز المضمّن في Android TV

في هذا المثال، يكون جهاز Tuner TV Input المدمج الذي يقدّمه مصنع الجهاز موثوقًا به ولديه إذن وصول كامل إلى موفّر المحتوى التلفزيوني.

مثال على إدخال تابع لجهة خارجية

إدخال البيانات من خلال جهة خارجية على Android TV
الشكل 5. إدخال بيانات تابعة لجهة خارجية على Android TV

في هذا المثال، يتم توفير مدخل التلفزيون الخارجي من وحدة التحكّم في حدود الجلسة (STB) من قِبل جهة خارجية. بما أنّه لا يمكن لمصدر إدخال التلفزيون هذا الوصول مباشرةً إلى خلاصة الفيديو عبر HDMI، يجب أن يمرّ أولاً بواسطة "مدير مصادر إدخال التلفزيون" وأن يستخدم مصدر إدخال HDMI للتلفزيون الذي يوفّره سازنده الجهاز.

من خلال "مدير مصادر إدخال التلفزيون"، يمكن لمصدر إدخال التلفزيون الخارجي (STB) التواصل مع مصدر إدخال HDMI للتلفزيون وطلب عرض الفيديو على HDMI1. وبالتالي، يمكن لمصدر إدخال التلفزيون في وحدة التحكّم في حدود الجلسة التحكّم في التلفزيون بينما يعرض مصدر إدخال HDMI للتلفزيون الذي تقدّمه الشركة المصنّعة الفيديو.

مثال على ميزة "صورة داخل صورة"

الأحداث الرئيسية في Android TV
الشكل 6. أحداث مفتاح Android TV

يوضّح المخطّط البياني أعلاه كيفية نقل الأزرار على جهاز التحكّم عن بُعد إلى مصدر إدخال محدد في التلفزيون لعرض ميزة "نافذة ضمن النافذة". يتم تفسير عمليات الضغط على الأزرار من خلال برنامج تشغيل الجهاز الذي يوفّره المصنّع، ويؤدي ذلك إلى تحويل رموز مسح الأجهزة إلى رموز مفاتيح Android ونقلها إلى مسار الإدخال العادي في Android. يعمل الزرّان InputReader وInputDispatcher كKeyEvents. وتؤدي هذه الإجراءات بدورها إلى بدء أحداث في تطبيق التلفزيون إذا كان في المقدّمة.

إنّ مدخلات التلفزيون في النظام فقط هي المؤهّلة لتلقّي InputEvents، وذلك فقط إذا كانت تملك إذن النظام RECEIVE_INPUT_EVENT. تتحمّل واجهة إدخال التلفزيون مسؤولية تحديد أحداث الإدخال التي يجب استخدامها، ويجب أن تسمح لتطبيق التلفزيون بالتعامل مع المفاتيح التي لا يحتاج إلى استخدامها.

يتحمّل تطبيق التلفزيون مسؤولية معرفة مصدر إدخال التلفزيون النشط في النظام، أي الذي اختاره المستخدم، وإزالة الغموض عن KeyEvents وتوجيهه إلى جلسة "مدير إدخال التلفزيون" الصحيحة، مع استدعاء dispatchInputEvent() لنقل الحدث إلى مصدر إدخال التلفزيون المرتبط.

مثال على إدخال MHEG-5

يوضِّح المخطّط التالي عرضًا أكثر تفصيلاً حول كيفية توجيه KeyEvents من خلال TIF في Android.

مثال على الزر الأحمر في Android TV
الشكل 7. مثال على الزر الأحمر في Android TV

يعرض هذا النموذج مسار تطبيق الزر الأحمر، وهو شائع في أوروبا للسماح للمستخدمين بالوصول إلى التطبيقات التفاعلية على أجهزة التلفزيون. يمكن إرسال تطبيق عبر مجرى النقل هذا. عند النقر على الزر، يسمح للمستخدمين بالتفاعل مع تطبيقات البث هذه. على سبيل المثال، يمكنك استخدام تطبيقات البث هذه للوصول إلى صفحات الويب ذات الصلة أو النتائج الرياضية.

اطّلِع على قسم تطبيق البث للتعرّف على كيفية تفاعل تطبيقات البث مع تطبيق التلفزيون.

في هذا المثال:

  1. يكون تطبيق التلفزيون في المقدّمة ويتلقّى جميع المفاتيح.
  2. يتم تمرير KeyEvents (مثل الزر الأحمر) إلى التلفزيون النشط يتم إدخاله على النحو التالي: InputEvents.
  3. يتم دمج ميزة "إدخال التلفزيون" في النظام مع حِزمة MHEG-5، ولديها إذن النظام RECEIVE_INPUT_EVENT.
  4. عند تلقّي رمز مفتاح التفعيل (مثل الزر الأحمر)، يتم تفعيل تطبيق البث من خلال مصدر إدخال التلفزيون.
  5. يستهلك الإدخال في التلفزيون KeyEvents على أنّه InputEvents ويكون تطبيق البث هو محور التركيز ويتعامل مع InputEvents إلى أن يتم إغلاقه.

ملاحظة: لا تتلقّى مدخلات التلفزيون التابعة لجهات خارجية مفاتيح أبدًا.

طبقة HAL لإدخال التلفزيون

يساعد واجهة برمجة التطبيقات لأجهزة إدخال التلفزيون في تطوير أجهزة إدخال التلفزيون للوصول إلى الأجهزة المخصّصة للتلفزيون. كما هو الحال مع واجهات HAL الأخرى في Android، يتوفّر واجهة HAL لأجهزة إدخال التلفزيون (tv_input) في شجرة مصادر AOSP، ويعمل المورّد على تطوير عملية تنفيذها.

ملاحظة: اعتبارًا من Android 14، يتم تحديد واجهة HAL لإدخال التلفزيون باستخدام AIDL.

تطبيق بث تلفزيوني

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

يمكن للشركات المصنّعة للأجهزة توسيع نطاق "تطبيقات التلفزيون" الخاصة بها من أجل استخدام الميزات الخاصة بالشركة المصنّعة للأجهزة أو الميزات الخاصة بكل بلد، إلا أنّ ذلك لا يدخل في نطاق "TIF" أو "تطبيق البث التلفزيوني المرجعي".

كحد أدنى، يجب أن يتولّى نظام "تطبيق البث التلفزيوني" المهام التالية:

الإعداد والضبط

  • رصد إدخالات التلفزيون تلقائيًا
  • السماح لمدخلات التلفزيون ببدء إعداد القناة
  • التحكّم في إعدادات رقابة الأهل
  • تعديل القنوات

العرض

  • الوصول إلى جميع القنوات التلفزيونية والتنقّل بينها
  • الوصول إلى شريط معلومات البرنامج التلفزيوني
  • عرض بيانات دليل البرامج الإلكتروني (EPG)
  • إتاحة مقاطع صوتية وترجمات متعدّدة
  • تقديم طلب التحقّق من رقم التعريف الشخصي لأدوات رقابة الأهل
  • السماح بتراكب واجهة مستخدم إدخال التلفزيون لمعيار التلفزيون (HbbTV وما إلى ذلك)
  • تعبئة نتائج البحث عن القنوات والبرامج التلفزيونية
  • عرض بطاقات ربط التطبيقات
  • واجهات برمجة التطبيقات المتوافقة مع ميزة "تقديم/ترجيع الفيديو"
  • التعامل مع وظائف DVR وتوفير واجهات برمجة التطبيقات لتسجيل المحتوى على التلفزيون

وستزداد مجموعة الميزات هذه لتتوافق مع إصدارات Android الجديدة التي حيث يتم توسيع واجهات برمجة تطبيقات TIF للنظام الأساسي. يوفر CTS Verifier تغطية اختبار التوافق.

إتاحة استخدام أجهزة إدخال التلفزيون التابعة لجهات خارجية

يوفّر Android TV واجهات برمجة تطبيقات للمطوّرين لأجهزة التلفزيون التابعة لجهات خارجية، ما يتيح للتطبيقات المثبَّتة عرض قنوات برامج في تجربة البث التلفزيوني المباشر. لضمان تنفيذ تطبيق Android TV المتوافق، يتحمّل التطبيق بعض المسؤوليات بشأن عرض إدخالات القنوات التلفزيونية التابعة لجهات خارجية للمستخدم. يوفّر تطبيق Live TV المرجعي طريقة تنفيذ متوافقة. في حال استبدال تطبيق YouTube TV بالنظام، على الشركات المصنّعة للأجهزة التأكّد من أنّ التطبيقات الخاصة بها توفّر توافقًا مشابهًا، وذلك لتلبية توقعات المطوّرين على جميع أجهزة Android TV.

يجب أن يعرض تطبيق التلفزيون في النظام مدخلات تابعة لجهات خارجية إلى جانب خدمة البث التلفزيوني المباشر التلقائية للجهاز. تهدف واجهات برمجة التطبيقات المخصّصة للمطوّرين إلى تمكين المستخدمين من العثور على القنوات (بعد تثبيتها) ضمن تجربة المشاهدة العادية على التلفزيون.

يُسمح بالتمييز المرئي بين القنوات المضمّنة والقنوات التابعة لجهات خارجية، كما هو محدّد في قسم "تطبيقات التلفزيون" من "ملحقات تطوير البرامج لنظام التشغيل Android".

توضّح الأقسام التالية كيف يستوفي تطبيق Live TV متطلبات CDD.

إعداد قناة جديدة

تبدأ إضافة إدخالات/قنوات جديدة تابعة لجهات خارجية ببحث المستخدم عن إدخال تلفزيون وتثبيته من أحد متاجر التطبيقات، مثل Google Play.

تضيف بعض مصادر بيانات التلفزيون التابعة لجهات خارجية القنوات تلقائيًا إلى قاعدة بيانات TvProvider. ومع ذلك، ستقدّم معظم التطبيقات نشاط إعداد لتمكين المستخدم من إعداد قنواته وتقديم تفاصيل تسجيل الدخول وغيرها من الإجراءات. يجب أن يضمن تطبيق التلفزيون المضمّن في النظام أنّه يمكن للمستخدم تفعيل نشاط الإعداد هذا، ولهذا السبب يتطلب CDD أن تكون مدخلات الجهات الخارجية هي الحد الأدنى من إجراءات التنقّل بعيدًا عن تطبيق التلفزيون الرئيسي.

يقدّم تطبيق البث التلفزيوني المباشر المرجعي قائمة "مصادر القنوات" للوصول إلى المدخلات.

الانتقال إلى الإعدادات
الشكل 8. انتقِل إلى الإعدادات.

انتقِل إلى "مصدر القناة" في "الإعدادات".
الشكل 9. انتقِل إلى مصادر القنوات في "الإعدادات".

اختَر مصدرك من القائمة.
الشكل 10. اختَر مصدرك من القائمة.

إضافة قنوات من مصدرك
الشكل 11. أضِف قنوات من المصدر الذي تريده.

إضافةً إلى ذلك، يتم عرض بطاقة إشعار في أعلى قائمة تطبيق البث التلفزيوني بعد تثبيت إدخال تلفزيون جديد، وذلك لنقل المستخدم مباشرةً إلى عملية الإعداد:

إشعار يُظهر توفّر مصادر قنوات جديدة
الشكل 12. إشعار يُظهر مصادر جديدة للقنوات متاحة

إذا اتّخذ المستخدم إجراءً من خلال الإشعار، يمكنه اختيار إعداد المصادر كما هو موضّح في الشكل 10.

اطّلِع على تحديد خدمة إدخال التلفزيون لمعرفة توقعات المطوّرين في هذا المجال.

تخصيص قائمة القنوات

قد توفّر الشركات المصنّعة للأجهزة واجهة مستخدم لإخفاء قنوات معيّنة والسماح للمستخدمين بإدارة إعدادات EPG الخاصة بهم. يتوفّر هذا الخيار في ميزة "البث التلفزيوني المباشر".

افتح قائمة القنوات في "الإعدادات".
الشكل 13: افتح قائمة القنوات في الإعدادات.

تخصيص قائمة القنوات
الشكل 14. تخصيص قائمة القنوات

وضع EPG

يجب أن يثق مطوّرو برامج الإدخال التابعون لجهات خارجية بأنّه يمكن للمستخدمين الانتقال بسهولة إلى قنواتهم أثناء الاستخدام العام على جميع أجهزة Android TV المتوافقة.

يجب عرض القنوات من مصادر تابعة لجهات خارجية كجزء من دليل البرامج الإلكتروني لتجربة البث التلفزيوني المباشر العادي على الجهاز. يمكن استخدام فئات منفصلة أو فصل مرئي للقنوات التابعة لجهات خارجية (راجِع قسم "تطبيقات التلفزيون" في "ملحق تطوير البرامج (CDD) لنظام التشغيل Android"). والمهم هو أن يتمكّن المستخدمون من العثور على القنوات التي ثبَّتوها.

على المصنّعين تنفيذ تطبيق التلفزيون لتضمين نتائج البحث لطلبات البحث المُرسَلة على مستوى العالم من أجل ضمان تقديم أفضل تجربة للمستخدم. يوفّر البث التلفزيوني المباشر طريقة تنفيذ (يمكنك الاطّلاع على نتائج من مصادر إدخال تابعة لجهات خارجية (مطلوبة للتأكّد من توافق النظام الأساسي) بالإضافة إلى مصادر إدخال مضمّنة.

تغيير الوقت

بالنسبة إلى الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث، يجب أن يكون تطبيق التلفزيون متوافقًا مع واجهة برمجة التطبيقات time shifting API في إطار عمل Android. بالإضافة إلى ذلك، على الشركات المصنّعة استخدام عناصر تحكّم في التشغيل في تطبيق التلفزيون، تسمح للمستخدمين بإيقاف التشغيل مؤقتًا واستئنافه وترجيعه وتقديمه سريعًا.

بالنسبة إلى مصادر إدخال التلفزيون التي تتيح تغيير السرعة الزمنية، يجب أن يعرض تطبيق التلفزيون عناصر التحكّم في التشغيل.

عناصر التحكّم في التشغيل
الشكل 15. عناصر التحكّم في التشغيل

فيديو مسجَّل

بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 7.0 والإصدارات الأحدث، يجب أن يتوافق تطبيق البث التلفزيوني مع واجهات برمجة تطبيقات تسجيل التلفزيون الخاصة بإطار عمل Android لإتاحة البرامج المسجّلة وإدراجها وتشغيلها.

يتيح ذلك لصنّاع الأجهزة توصيل الأنظمة الفرعية لتسجيل الفيديو الرقمي (DVR) بواجهة TIF، وبالتالي تقليل الجهد المبذول لدمج وظائف تسجيل الفيديو الرقمي (DVR) أو تفعيلها على جهاز التلفزيون. ويتيح أيضًا للجهات الخارجية توفير أنظمة تسجيل الفيديو الرقمي (DVR) التي يمكن تركيبها بعد الشراء ويمكن توصيلها بجهاز Android TV.

بالإضافة إلى تسجيل المحتوى المباشر، يعالج تطبيق YouTube TV أيضًا تعارض الموارد. على سبيل المثال، إذا كان الجهاز مزوّدًا بمعدّلَي تحويل تردد، يمكنه تسجيل برنامجَين في الوقت نفسه. إذا طلب المستخدم تسجيل ثلاثة برامج، على تطبيق التلفزيون التعامل مع التعارض، ويجب أن يعرض إشعارًا أو يطلب من المستخدم تحديد الأولوية لهذه الطلبات.

يمكن أيضًا لتطبيقات التلفزيون تنفيذ منطق أكثر تعقيدًا، مثل سؤال المستخدم عما إذا كان يريد تسجيل كل الحلقات القادمة من سلسلة عند طلب تسجيل حلقة واحدة.

اطّلِع على الرسم البياني التالي للحصول على نظرة على طريقة تنفيذ ميزة "تسجيل الفيديوهات الرقمية" المحتملة في Android TV.

تسجيل الفيديو الرقمي في Android TV
الشكل 16. تسجيل الفيديو الرقمي في Android TV

  1. تُعلم خدمة إدخال التلفزيون تطبيق التلفزيون بعدد أجهزة الاستقبال المتاحة لكي تتمكّن من معالجة أي تعارض محتمل في الموارد.
  2. يتلقّى تطبيق التلفزيون طلبًا من المستخدم لتسجيل برنامج تلفزيوني.
  3. يخزِّن تطبيق البث التلفزيوني الجدول الزمني للتسجيل في قاعدة بياناته الداخلية.
  4. عندما يحين وقت التسجيل، يُرسِل تطبيق YouTube TV طلبًا لضبط القناة المرتبطة بالتسجيل.
  5. تتلقّى خدمة إدخال التلفزيون هذا الطلب، وتردّ بالإشارة إلى ما إذا كانت هناك موارد مناسبة أم لا، وتضبط القناة.
  6. بعد ذلك، يرسل تطبيق التلفزيون طلبًا لبدء التسجيل إلى مدير إدخال التلفزيون.
  7. تتلقّى خدمة إدخال التلفزيون هذا الطلب وتبدأ التسجيل.
  8. تخزِّن خدمة إدخال التلفزيون بيانات الفيديو الفعلية في مساحة التخزين الخاصة بها، والتي يمكن أن تكون مساحة تخزين خارجية أو مساحة تخزين في السحابة الإلكترونية.
  9. عندما يحين وقت إنهاء التسجيل، يُرسِل تطبيق التلفزيون طلب إيقاف التسجيل إلى "مدير إدخالات التلفزيون".
  10. بعد أن تتلقّى خدمة إدخال التلفزيون الطلب، تتوقف عن التسجيل و تضيف البيانات الوصفية المرتبطة به إلى مقدّم خدمة التلفزيون حتى يتمكّن تطبيق التلفزيون من عرض التسجيل للمستخدمين عند الطلب.

لمزيد من المعلومات عن تنفيذ ميزات التسجيل في خدمة "إدخال التلفزيون"، راجع مقالة تسجيل التلفزيون هذه.

مراجع مفيدة

  • يُعدّ Android CDD وواجهات برمجة التطبيقات الموثّقة الخاصة بالمطوّرين هما المرجعان الرئيسيان.
  • تطبّق أداة CTS Verifier واجهات برمجة التطبيقات كجزء من برنامج اختبار التوافق. قد يكون إجراء هذا الفحص على تطبيق Live TV طريقة مفيدة للاطّلاع على دليل البرامج الإلكتروني وميزة البحث وأدوات رقابة الأهل وغيرها من المتطلبات في سياق الإدخالات التابعة لجهات خارجية.
  • يُرجى الاطّلاع على تحديد خدمة إدخال التلفزيون لمعرفة توقعات المطوّرين في هذا المجال.

أدوات رقابة الأهل

تتيح أدوات رقابة الأهل للمستخدم حظر القنوات والبرامج غير المرغوب فيها، ولكن يمكنه تجاوز الحظر من خلال إدخال رمز رقم التعريف الشخصي.

تتم مشاركة مسؤولية وظائف أدوات رقابة الأهل بين تطبيق التلفزيون، وخدمة "مدير إدخالات التلفزيون"، وموفّر خدمة التلفزيون، و"إدخال التلفزيون".

تكون أدوات رقابة الأهل إلزامية، وهي مشمولة في أداة CTS Verifier.

حدّد عدد من البلدان أنظمة تقييم يمكن أن تستخدمها أجهزة الإدخال التلفزيوني عبر TVContentRating API. بالإضافة إلى ذلك، يمكن لأجهزة إدخال التلفزيون تسجيل أنظمة تقييم مخصّصة كما هو موضّح في اختبار أداة التحقّق من CTS الذي يقدّم تقييمًا "زائفًا". في البلدان التي يتوفّر فيها نظام تقييم عادي، ننصح مصنعي الأجهزة بدمج أدوات رقابة الأهل في إطار عمل إدخال التلفزيون مع أي آليات أخرى قد يضيفونها.

موفر خدمة التلفزيون

يتضمّن كل صف قناة حقل COLUMN_LOCKED يُستخدم لتأمين قنوات معيّنة ومنع عرضها بدون إدخال رمز رقم التعريف الشخصي. يُستخدَم حقل البرنامج COLUMN_CONTENT_RATING للعرض فقط ولا يُستخدَم لفرض رقابة الأهل.

مدير مصادر إدخال التلفزيون

يخزِّن "مدير إدخالات التلفزيون" كل TvContentRating محظور ويتلقّى isRatingBlocked() للإشارة إلى ما إذا كان يجب حظر المحتوى الذي يحمل isRatingBlocked() محدّدًا.

إدخال التلفزيون

يتحقّق مدخل التلفزيون مما إذا كان يجب حظر المحتوى الحالي من خلال الاتصال بالرقم isRatingBlocked() في "مدير مدخل التلفزيون" عند تغيُّر تقييم المحتوى المعروض (عند تغيير البرنامج أو القناة)، أو عند تغيُّر إعدادات أدوات رقابة الأهل (في ACTION_BLOCKED_RATINGS_CHANGED و ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED). وإذا كان يجب حظر المحتوى، يتم إيقاف الصوت والفيديو في مدخل التلفزيون، ويُرسَل إشعار إلى تطبيق التلفزيون بأنّه تم حظر المحتوى الحالي من خلال الاتصال بالرقم notifyContentBlocked(TvContentRating). إذا كان يجب عدم حظر المحتوى، سيتم تفعيل الصوت والفيديو في إدخال التلفزيون لإعلام تطبيق التلفزيون بأنّ المحتوى الحالي مسموح به من خلال الاتصال بالرقم notifyContentAllowed().

تطبيق بث تلفزيوني

للالتزام بوجوه برمجة التطبيقات لأدوات الرقابة الأبوية، وبالتالي إنشاء منصة متوافقة، يجب أن يوفّر تطبيق النظام التلفزيوني طريقة للمستخدمين لإدارة أدوات الرقابة الأبوية، بما في ذلك أي تقييمات مخصّصة سجّلتها تطبيقات معيّنة.

يعرض "تطبيق البث التلفزيوني" واجهة المستخدم التي تتضمّن رمز رقم التعريف الشخصي عندما يتم إشعاره من خلال إدخال تلفزيون بأنّ المحتوى الحالي محظور أو عندما يحاول المستخدم عرض قناة محظورة.

لا يخزِّن تطبيق التلفزيون إعدادات أدوات رقابة الأهل مباشرةً. عندما يغيّر المستخدم إعدادات أدوات رقابة الأهل، يخزّن "مدير إدخالات التلفزيون" كل TvContentRating محظور، ويخزّن مقدّم خدمة التلفزيون كل قناة محظورة.

يجب أن يعلن تطبيق التلفزيون عن الإذن android.permission.MODIFY_PARENTAL_CONTROLS لتغيير إعدادات أدوات رقابة الأهل.

ننصح الشركات المصنّعة للأجهزة باتّباع ما يلي:

  • يمكنك إجراء اختبار أدوات رقابة الأهل لأداة CTS Verifier مقابل تطبيق Live TV المرجعي للحصول على شرح حول متطلبات التوافق.
  • استخدِم تطبيق Live TV كمرجع لتطبيق التلفزيون الخاص بهم: يُرجى الاطّلاع على ContentRatingsManager و RatingSystemsFragment، وطريقة معالجة التقييمات المخصّصة.

HDMI-CEC

تسمح ميزة HDMI-CEC لجهاز واحد بالتحكّم في جهاز آخر، ما يتيح استخدام جهاز تحكّم عن بُعد واحد للقيام بالتحكم في أجهزة متعددة في نظام المسرح المنزلي. يستخدم Android TV هذا البروتوكول ل تسريع عملية الإعداد والسماح بالتحكّم عن بُعد في مصادر إدخال التلفزيون المختلفة من خلال تطبيق TV المركزي. على سبيل المثال، يمكنه تبديل مصادر الإدخال وتشغيل الأجهزة أو إيقافها وغير ذلك.

يستخدم إطار TIF في Android ميزة HDMI-CEC باعتبارها خدمة التحكم في HDMI حتى لا تحتاج الشركات المصنّعة للأجهزة سوى إلى تطوير برامج تشغيل منخفضة المستوى تتفاعل مع طبقة تجريد الأجهزة (HAL) لـ Android TV الخفيف، وتتخطى منطق الأعمال الأكثر تعقيدًا. من خلال توفير طريقة تنفيذ قياسية، يسعى Android إلى الحدّ من مشاكل التوافق من خلال تقليل عمليات التنفيذ المجزّأة ودعم الميزات بشكل انتقائي. تستخدِم خدمة التحكّم في HDMI خدمات Android الحالية، بما في ذلك الإدخال والطاقة.

ويعني هذا أنّه يجب إعادة تصميم تطبيقات HDMI-CEC الحالية للتفاعل مع إطار TIF في Android. ننصحك بأن تحتوي منصة الأجهزة على معالج دقيق لتلقّي طلبات تشغيل CEC وطلبات أخرى.

دمج واجهة CEC على Android TV
الشكل 17. دمج واجهة CEC على Android TV

  1. تتلقّى حافلة CEC أمرًا من المصدر النشط حاليًا للتبديل إلى مصدر مختلف.
  2. يمرّر برنامج التشغيل الأمر إلى طبقة تجريد الأجهزة (HAL) لـ HDMI-CEC.
  3. يُرسِل HAL إشعارًا إلى جميع ActiveSourceChangeListeners.
  4. يتم إشعار خدمة التحكّم في HDMI بتغيير المصدر من خلال ActiveSourceChangeListener.
  5. تنشئ خدمة "مدير إدخالات التلفزيون" نية لتطبيق التلفزيون من أجل تبديل المصدر.
  6. بعد ذلك، ينشئ تطبيق التلفزيون جلسة "مدير إدخالات التلفزيون" لإدخال التلفزيون الذي يتم التبديل إليه، ويُجري طلبًا إلى setMain في تلك الجلسة.
  7. تُرسِل جلسة "مدير إدخالات التلفزيون" هذه المعلومات إلى إدخال التلفزيون عبر HDMI.
  8. يطلب إدخال التلفزيون عبر HDMI ضبط مساحة عرض الشريط الجانبي.
  9. تنشئ "خدمة إدارة إدخال التلفزيون" أمر تحكُّم في التوجيه مقابلًا مرة أخرى في "خدمة التحكم في HDMI" عند تعيين السطح.

إرشادات دمج التلفزيون

تطبيق البث

وبما أنّ كلّ بلد له متطلبات خاصة بالبث (MHEG وTeletext وHbbTV وغيرها)، يُتوقّع من الشركات المصنّعة تقديم حلولها الخاصة لتطبيق البث، على سبيل المثال:

  • MHEG: الحزمة الأصلية
  • نصوص المعلومات: الحزمة الأصلية
  • ‫HbbTV: حلّ HbbTV من Vewd Software

في إصدار Android L، يتوقع فريق Android TV أن يستخدم المصنّعون مُدمِجو الأنظمة أو حلول Android لحِزم البرامج التلفزيونية الإقليمية، أو ينقلوا السطح إلى حِزم برامج التلفزيون، أو ينقلوا الرمز المفتاح اللازم للتفاعل مع الحِزم القديمة.

في ما يلي كيفية تفاعل تطبيق البث مع تطبيق التلفزيون:

  1. تطبيق التلفزيون هو التطبيق الذي يتم التركيز عليه، ويتلقّى جميع المفاتيح.
  2. يُرسِل تطبيق التلفزيون مفاتيح (مثل الزر الأحمر) إلى جهاز إدخال التلفزيون.
  3. يتم دمج جهاز إدخال التلفزيون داخليًا مع حِزمة البرامج القديمة للتلفزيون.
  4. عند تلقّي رمز مفتاح تفعيل (مثل الزر الأحمر)، ينشط جهاز إدخال التلفزيون تطبيقات البث.
  5. يجذب تطبيق البث التلفزيوني الانتباه في تطبيق التلفزيون ويعالج إجراءات المستخدم.

بالنسبة إلى البحث الصوتي/الاقتراحات، قد يتيح تطبيق البث البحث داخل التطبيق للبحث الصوتي.