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

رمز Android TV HAL

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

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

عناصر

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

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

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

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

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

تدفق

إليك كيفية ممارسة الهندسة المعمارية:

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

الأذونات

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

مقدم التلفزيون

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

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

انظر الرسم البياني أدناه للحصول على عرض تفصيلي لموفر التلفزيون.

مزود تلفزيون أندرويد
الشكل 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 : مرئي لتطبيقات النظام فقط. منع مشاهدة القناة من خلال حسابات غير صالحة دون إدخال رمز PIN. COLUMN_LOCKED = 1 يعني أن القناة يجب أن تكون محمية بواسطة الرقابة الأبوية.

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

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

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

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

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

يوفر TV Input Manager واجهة برمجة تطبيقات نظام مركزي لإطار Android TV Input Framework الشامل. فهو يحكم التفاعل بين التطبيقات ومدخلات التلفزيون ويوفر وظائف الرقابة الأبوية. يجب إنشاء جلسات مدير إدخال التلفزيون بشكل فردي باستخدام مدخلات التلفزيون. يسمح مدير إدخال التلفزيون بالوصول إلى مدخلات التلفزيون المثبتة حتى تتمكن التطبيقات من:

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

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

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

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

مدخلات التلفاز

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

لا يمكن توفير بعض المدخلات، مثل إدخال HDMI أو إدخال الموالف المدمج، إلا من خلال الشركة المصنعة لأنها تتحدث مباشرة مع الأجهزة الأساسية. يمكن توفير الآخرين، مثل IPTV، وplace-shifting، وSTB الخارجي، من قبل جهات خارجية كملفات APK على متجر Google Play. بمجرد التنزيل والتثبيت، يمكن تحديد الإدخال الجديد داخل تطبيق TV.

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

مدخلات نظام أندرويد تي في
الشكل 3. إدخال نظام Android TV

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

مثال للموالف المدمج

مدخل موالف مدمج لتلفزيون Android
الشكل 4. إدخال موالف Android TV المدمج

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

مثال على إدخال الطرف الثالث

Android TV مدخلات طرف ثالث
الشكل 5. مدخلات الطرف الثالث على Android TV

في هذا المثال، يتم توفير إدخال STB TV الخارجي من قبل طرف ثالث. نظرًا لأن إدخال التلفزيون هذا لا يمكنه الوصول مباشرة إلى تغذية فيديو HDMI الواردة، فيجب المرور عبر مدير إدخال التلفزيون واستخدام إدخال HDMI TV المقدم من قبل الشركة المصنعة للجهاز.

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

مثال صورة داخل صورة (PIP).

الأحداث الرئيسية لتلفزيون Android
الشكل 6. الأحداث الرئيسية لتلفزيون Android

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

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

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

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

يعرض الرسم البياني التالي عرضًا أكثر تفصيلاً لكيفية توجيه KeyEvents عبر Android TIF.

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

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

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

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

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

ملاحظة : لا تتلقى مدخلات تلفزيون الطرف الثالث المفاتيح مطلقًا.

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

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

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

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

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

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

كحد أدنى، يحتاج تطبيق TV الخاص بالنظام إلى التعامل مع المهام التالية:

الإعداد والتكوين

  • الكشف التلقائي عن مدخلات التلفزيون
  • اسمح لمدخلات التلفزيون ببدء إعداد القناة
  • التحكم في إعدادات الوالدين
  • تحرير القنوات

المعاينة

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

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

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

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

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

يُسمح بالتمييز البصري بين القنوات المدمجة وقنوات الطرف الثالث، كما هو محدد في قسم تطبيق التلفزيون في Android CDD.

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

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

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

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

يوفر تطبيق Live TV المرجعي قائمة مصادر القناة للوصول إلى المدخلات.

اذهب للاعدادات
الشكل 8. انتقل إلى الإعدادات .

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

حدد المصدر الخاص بك من القائمة.
الشكل 10. حدد المصدر الخاص بك من القائمة.

أضف القنوات من المصدر الخاص بك
الشكل 11. أضف القنوات من المصدر الخاص بك.

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

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

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

راجع تعريف خدمة إدخال التلفزيون الخاصة بك لمعرفة توقعات المطورين في هذا المجال.

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

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

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

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

دليل البرامج الإلكتروني

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

يجب تقديم القنوات من مدخلات الطرف الثالث كجزء من تجربة البث التلفزيوني المباشر القياسية للجهاز (EPG). يمكن استخدام الفصل المرئي أو الفئات المنفصلة لقنوات الطرف الثالث (راجع قسم تطبيق التلفزيون في Android CDD) - والأمر الأساسي هو أن المستخدمين قادرون على العثور على القنوات التي قاموا بتثبيتها.

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

تغيير الوقت

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

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

ضوابط التشغيل
الشكل 15. ضوابط التشغيل

مسجل فيديو رقمي

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

يتيح ذلك لمصنعي الأجهزة توصيل أنظمة DVR الفرعية الخاصة بهم بـ TIF وتقليل جهد التكامل الذي يتطلبه تمكين وظيفة DVR أو دمجها على جهاز تلفزيون بشكل كبير. كما أنه يمكّن الجهات الخارجية من توفير أنظمة DVR لما بعد البيع والتي يمكن توصيلها بجهاز Android TV.

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

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

راجع الرسم البياني التالي للحصول على عرض حول تنفيذ DVR المحتمل في Android TV.

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

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

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

موارد مفيدة

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

مراقبة اهلية

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

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

الرقابة الأبوية إلزامية، وتغطيها CTS Verifier.

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

مزود التلفزيون

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

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

يقوم مدير إدخال التلفزيون بتخزين كل TvContentRating المحظور ويستجيب لـ isRatingBlocked() لإبلاغ ما إذا كان يجب حظر المحتوى ذو التصنيف المحدد.

مدخلات التلفاز

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

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

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

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

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

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

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

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

اتش دي ام اي-سي اي سي

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

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

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

تكامل CEC على Android TV
الشكل 17. تكامل CEC على Android TV

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

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

تطبيق البث

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

  • MHEG: المكدس الأصلي
  • السوفت وير: المكدس الأصلي
  • HbbTV: حل HbbTV من برنامج Vewd

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

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

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

بالنسبة للبحث الصوتي/التوصية الصوتية، قد يدعم تطبيق البث البحث داخل التطبيق للبحث الصوتي.