چارچوب ورودی تلویزیون

نماد HAL Android TV

چارچوب ورودی Android TV (TIF) تحویل محتوای زنده به Android TV را ساده می کند. Android TIF یک API استاندارد برای تولیدکنندگان فراهم می‌کند تا ماژول‌های ورودی را برای کنترل Android TV ایجاد کنند و جستجوی زنده تلویزیون و توصیه‌ها را از طریق ابرداده منتشر شده توسط ورودی تلویزیون فعال می‌کند.

این چارچوب به دنبال اجرای استانداردهای تلویزیون یا الزامات منطقه ای نیست، اما تولید کنندگان دستگاه را آسان تر می کند تا استانداردهای پخش تلویزیون دیجیتال منطقه ای را بدون پیاده سازی مجدد برآورده کنند. مستندات این بخش ممکن است برای توسعه دهندگان برنامه های شخص ثالث که می خواهند ورودی های تلویزیون سفارشی ایجاد کنند نیز مفید باشد.

اجزاء

اجرای Android TV Input Framework شامل یک مدیر ورودی تلویزیون است. TIF با برنامه TV کار می کند، یک برنامه سیستمی که نمی توان آن را با یک برنامه شخص ثالث جایگزین کرد تا به کانال های تیونر داخلی و IP دسترسی پیدا کند. برنامه تلویزیون با ماژول‌های ورودی تلویزیون که توسط سازنده دستگاه یا سایر طرف‌ها از طریق مدیر ورودی تلویزیون ارائه شده است، ارتباط برقرار می‌کند.

چارچوب ورودی تلویزیون شامل موارد زیر است:

  • ارائه دهنده تلویزیون ( com.android.providers.tv.TvProvider ): پایگاه داده ای از کانال ها، برنامه ها و مجوزهای مرتبط
  • برنامه تلویزیون ( com.android.tv.TvActivity ): برنامه ای که تعامل کاربر را مدیریت می کند
  • مدیریت ورودی تلویزیون ( android.media.tv.TvInputManager ): به ورودی های تلویزیون اجازه می دهد تا با برنامه تلویزیون ارتباط برقرار کنند.
  • ورودی تلویزیون: برنامه ای که تیونرها و پورت های ورودی فیزیکی یا مجازی را نشان می دهد
  • HAL ورودی تلویزیون (ماژول tv_input ): یک تعریف سخت افزاری که به ورودی های تلویزیون سیستم اجازه می دهد در هنگام اجرا به سخت افزار خاص تلویزیون دسترسی داشته باشند.
  • کنترل والدین: فناوری برای مسدود کردن کانال‌ها و برنامه‌ها
  • HDMI-CEC: فناوری برای کنترل از راه دور دستگاه های مختلف از طریق HDMI
  • چارچوب تیونر: چارچوبی برای ورودی تلویزیون داخلی تیونر
  • MediaCas: چارچوبی برای دسترسی مشروط
  • Tuner Resource Manager: سرویسی برای مدیریت منابع سخت افزاری ورودی تلویزیون، MediaCas و ورودی تیونر داخلی

در زیر به جزئیات این اجزا پرداخته شده است. برای مشاهده جزئیات معماری چارچوب ورودی Android TV به نمودار زیر مراجعه کنید.

مروری بر معماری TIF اندروید
شکل 1. معماری چارچوب ورودی Android TV (TIF).

جریان

در اینجا نحوه اجرای معماری آمده است:

  1. کاربر برنامه TV را می بیند و با آن تعامل دارد، یک برنامه سیستمی که نمی تواند با یک برنامه شخص ثالث جایگزین شود.
  2. برنامه TV محتوای AV را از ورودی تلویزیون نمایش می دهد.
  3. برنامه تلویزیون نمی‌تواند مستقیماً با ورودی‌های تلویزیون صحبت کند. مدیر ورودی تلویزیون وضعیت ورودی های تلویزیون را برای برنامه تلویزیون شناسایی می کند. برای جزئیات بیشتر در مورد این محدودیت‌ها، به مدیر ورودی تلویزیون در زیر مراجعه کنید.

مجوزها

  • فقط ورودی‌های تلویزیون signatureOrSystem و برنامه تلویزیون دسترسی کامل به پایگاه داده ارائه‌دهنده تلویزیون دارند و می‌توانند رویدادهای کلیدی را دریافت کنند.
  • فقط ورودی های تلویزیون سیستم می توانند از طریق سرویس مدیریت ورودی تلویزیون به HAL ورودی تلویزیون دسترسی داشته باشند. ورودی های تلویزیون از طریق جلسات مدیریت ورودی تلویزیون یک به یک قابل دسترسی هستند.
  • ورودی‌های تلویزیون شخص ثالث به پایگاه داده ارائه‌دهنده تلویزیون دسترسی بسته‌شده دارند و فقط برای ردیف‌های بسته منطبق می‌توانند بخوانند/نوشتن کنند.
  • ورودی‌های تلویزیون شخص ثالث می‌توانند محتوا یا محتوای خود را از ورودی‌های تلویزیون عبوری سازنده دستگاه مانند HDMI1 نمایش دهند. آن‌ها نمی‌توانند محتوا را از ورودی‌های تلویزیون غیرقابل عبور، مانند تیونر داخلی یا IPTV، نمایش دهند.
  • مجوز TV_INPUT_HARDWARE برای برنامه ورودی تلویزیون سخت‌افزاری، به سرویس مدیریت ورودی تلویزیون سیگنال می‌دهد تا به سرویس ورودی تلویزیون در هنگام راه‌اندازی اطلاع دهد تا با سرویس مدیریت ورودی تلویزیون تماس بگیرد و ورودی‌های تلویزیون آن را اضافه کند. این مجوز به یک برنامه ورودی تلویزیون سخت افزاری اجازه می دهد از چندین ورودی تلویزیون در هر سرویس ورودی تلویزیون پشتیبانی کند و همچنین بتواند ورودی های تلویزیون پشتیبانی شده خود را به صورت پویا اضافه و حذف کند.

ارائه دهنده تلویزیون

پایگاه داده TV Provider کانال ها و برنامه ها را از ورودی های تلویزیون ذخیره می کند. ارائه‌دهنده تلویزیون همچنین مجوزهای مرتبط را منتشر و مدیریت می‌کند تا ورودی‌های تلویزیون فقط رکوردهای خودشان را ببینند. به عنوان مثال، یک ورودی تلویزیون خاص فقط می‌تواند کانال‌ها و برنامه‌هایی را که عرضه کرده است ببیند و دسترسی به کانال‌ها و برنامه‌های ورودی تلویزیون دیگر ممنوع است.

ارائه دهنده تلویزیون "ژانر پخش" را به "ژانر متعارف" به صورت داخلی نگاشت می کند. ورودی‌های تلویزیون مسئول پر کردن «ژانر پخش» با مقدار استاندارد پخش اصلی هستند و قسمت «ژانر متعارف» به طور خودکار با ژانر مرتبط صحیح از 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 است، بسته (برنامه) که صاحب آن ردیف است، که در Query، Insert، Update از طریق TvProvider.java بررسی شده است. یک ورودی تلویزیون ممکن است فقط به اطلاعاتی که نوشته است دسترسی داشته باشد و از اطلاعات ارائه شده توسط سایر ورودی های تلویزیون محصور شده است.
  • مجوزهای READ, WRITE از طریق AndroidManifest.xml (نیاز به رضایت کاربر) برای تعیین کانال های موجود.
  • فقط برنامه های signatureOrSystem می توانند مجوز ACCESS_ALL_EPG_DATA را برای دسترسی به کل پایگاه داده کسب کنند.

مدیر ورودی تلویزیون

مدیر ورودی تلویزیون یک API سیستم مرکزی را به چارچوب کلی ورودی تلویزیون Android ارائه می دهد. تعامل بین برنامه ها و ورودی های تلویزیون را داوری می کند و عملکرد کنترل والدین را فراهم می کند. جلسات مدیریت ورودی تلویزیون باید یک به یک با ورودی های تلویزیون ایجاد شود. مدیر ورودی تلویزیون اجازه دسترسی به ورودی های تلویزیون نصب شده را می دهد تا برنامه ها ممکن است:

  • ورودی های تلویزیون را فهرست کنید و وضعیت آنها را بررسی کنید
  • جلسات ایجاد کنید و شنوندگان را مدیریت کنید

برای جلسات، یک ورودی تلویزیون را می‌توان توسط برنامه تلویزیونی فقط به URIهایی که به پایگاه داده ارائه‌دهنده تلویزیون اضافه کرده است تنظیم کرد، به جز ورودی‌های تلویزیونی گذرا که می‌توانند با استفاده از TvContract.buildChannelUriForPassthroughInput() تنظیم شوند. یک ورودی تلویزیون نیز ممکن است دارای تنظیم صدا باشد. ورودی های تلویزیون ارائه شده و امضا شده توسط سازنده دستگاه (برنامه های امضا) یا سایر برنامه های نصب شده در پارتیشن سیستم به کل پایگاه داده ارائه دهنده تلویزیون دسترسی خواهند داشت. از این دسترسی می توان برای ساخت برنامه هایی برای مرور و جستجو در همه کانال ها و برنامه های تلویزیونی موجود استفاده کرد.

یک برنامه ممکن است یک TvInputCallback با android.media.tv.TvInputManager ایجاد و ثبت کند تا با تغییر وضعیت ورودی تلویزیون یا افزودن یا حذف ورودی تلویزیون دوباره فراخوانی شود. به عنوان مثال، یک برنامه تلویزیونی می‌تواند وقتی ورودی تلویزیون قطع می‌شود، با نمایش آن به عنوان قطع شده و جلوگیری از انتخاب آن واکنش نشان دهد.

مدیر ورودی تلویزیون ارتباط بین برنامه تلویزیون و ورودی های تلویزیون را خلاصه می کند. رابط استاندارد مدیریت ورودی تلویزیون و ورودی تلویزیون به چندین سازنده دستگاه اجازه می دهد تا برنامه های تلویزیونی خود را ایجاد کنند و در عین حال به همه ورودی های تلویزیون شخص ثالث کمک می کند تا روی همه برنامه های تلویزیون کار کنند.

ورودی های تلویزیون

ورودی‌های تلویزیون برنامه‌های Android هستند، به این معنا که دارای AndroidManifest.xml هستند و نصب می‌شوند (از طریق Play، از پیش نصب‌شده یا بارگذاری‌شده جانبی). Android TV از برنامه های از پیش نصب شده سیستم، برنامه های امضا شده توسط سازنده دستگاه و ورودی های تلویزیون شخص ثالث پشتیبانی می کند.

برخی از ورودی‌ها، مانند ورودی HDMI یا ورودی تیونر داخلی، فقط توسط سازنده قابل ارائه هستند زیرا مستقیماً با سخت‌افزار زیرین صحبت می‌کنند. موارد دیگر، مانند IPTV، جابجایی مکان، و STB خارجی، می توانند توسط اشخاص ثالث به عنوان APK در فروشگاه Google Play عرضه شوند. پس از دانلود و نصب، ورودی جدید را می توان در برنامه تلویزیون انتخاب کرد.

نمونه ورودی عبوری

ورودی سیستم Android TV
شکل 3. ورودی سیستم Android TV

در این مثال، ورودی تلویزیون ارائه شده توسط سازنده دستگاه قابل اعتماد است و دسترسی کامل به ارائه دهنده تلویزیون دارد. به عنوان یک ورودی تلویزیونی گذرا، هیچ کانال یا برنامه ای را در ارائه دهنده تلویزیون ثبت نمی کند. برای به دست آوردن URI مورد استفاده برای ارجاع به ورودی عبور، از روش ابزار ابزار android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) استفاده کنید. برنامه تلویزیون با مدیر ورودی تلویزیون ارتباط برقرار می کند تا به ورودی تلویزیون HDMI برسد.

نمونه تیونر داخلی

ورودی تیونر داخلی Android TV
شکل 4. ورودی تیونر داخلی Android TV

در این مثال، ورودی تلویزیون تیونر داخلی ارائه شده توسط سازنده دستگاه قابل اعتماد است و به ارائه دهنده تلویزیون دسترسی کامل دارد.

نمونه ورودی شخص ثالث

ورودی شخص ثالث Android TV
شکل 5. ورودی شخص ثالث Android TV

در این مثال، ورودی تلویزیون STB خارجی توسط شخص ثالث ارائه شده است. از آنجایی که ورودی تلویزیون نمی تواند مستقیماً به فید ویدیوی HDMI ورودی دسترسی پیدا کند، باید از طریق مدیر ورودی تلویزیون رفته و از ورودی تلویزیون HDMI ارائه شده توسط سازنده دستگاه استفاده کند.

از طریق مدیر ورودی تلویزیون، ورودی تلویزیون STB خارجی می تواند با ورودی تلویزیون HDMI صحبت کند و از آن بخواهد که ویدیو را در HDMI1 نشان دهد. بنابراین ورودی تلویزیون STB می تواند تلویزیون را کنترل کند در حالی که ورودی تلویزیون HDMI ارائه شده توسط سازنده فیلم را رندر می کند.

مثال تصویر در تصویر (PIP).

رویدادهای کلیدی Android TV
شکل 6. رویدادهای کلیدی Android TV

نمودار بالا نشان می دهد که چگونه دکمه های یک کنترل از راه دور برای نمایش تصویر در تصویر (PIP) به ورودی تلویزیون خاص منتقل می شوند. این فشارهای دکمه توسط درایور سخت‌افزار ارائه‌شده توسط سازنده دستگاه تفسیر می‌شوند و اسکن‌کدهای سخت‌افزاری را به کدهای کلید اندروید تبدیل می‌کنند و آنها را به عملکردهای InputReader و InputDispatcher به عنوان KeyEvents به خط لوله ورودی استاندارد Android منتقل می‌کنند. اینها به نوبه خود باعث ایجاد رویدادها در برنامه تلویزیونی می شوند اگر در فوکوس باشد.

فقط ورودی‌های تلویزیون سیستم واجد شرایط دریافت InputEvents هستند و فقط در صورتی که مجوز سیستم RECEIVE_INPUT_EVENT را داشته باشند. ورودی تلویزیون مسئول تعیین InputEvents برای مصرف است و باید به برنامه TV اجازه دهد تا کلیدهایی را که نیازی به مصرف ندارد کنترل کند.

برنامه TV مسئول دانستن اینکه کدام سیستم ورودی تلویزیون فعال است، یعنی توسط کاربر انتخاب شده است، و ابهام زدایی از KeyEvents ورودی و هدایت آنها به جلسه مدیریت ورودی تلویزیون صحیح، فراخوانی dispatchInputEvent() برای انتقال رویداد به ورودی تلویزیون مرتبط است.

نمونه ورودی MHEG-5

نمودار زیر نمای دقیق تری از نحوه مسیریابی KeyEvents از طریق TIF اندروید را نشان می دهد.

مثال دکمه قرمز Android TV
شکل 7. مثال دکمه قرمز تلویزیون Android

این جریان یک برنامه دکمه قرمز را به تصویر می‌کشد که در اروپا رایج است و به کاربران اجازه می‌دهد به برنامه‌های تعاملی روی تلویزیون خود دسترسی داشته باشند. یک برنامه را می توان از طریق این جریان حمل و نقل تحویل داد. هنگامی که دکمه کلیک می شود، به کاربران امکان می دهد با این برنامه های پخش ارتباط برقرار کنند. به عنوان مثال، ممکن است از این برنامه های پخش برای دسترسی به صفحات وب مرتبط یا امتیازات ورزشی استفاده کنید.

برای آشنایی با نحوه تعامل برنامه‌های پخش با برنامه تلویزیون، بخش برنامه پخش را ببینید.

در این مثال:

  1. برنامه تلویزیون در فوکوس است و همه کلیدها را دریافت می کند.
  2. KeyEvents (به عنوان مثال دکمه قرمز) به عنوان InputEvents.
  3. ورودی تلویزیون سیستم با پشته MHEG-5 ادغام می شود و دارای مجوز سیستم RECEIVE_INPUT_EVENT است.
  4. با دریافت کد کلید فعال سازی (به عنوان مثال دکمه قرمز)، ورودی تلویزیون برنامه پخش را فعال می کند.
  5. ورودی تلویزیون KeyEvents به‌عنوان InputEvents مصرف می‌کند و برنامه پخش تمرکز دارد و InputEvents تا زمانی که رد شود مدیریت می‌کند.

توجه : ورودی های تلویزیون شخص ثالث هرگز کلید را دریافت نمی کنند.

ورودی تلویزیون HAL

ورودی تلویزیون HAL به توسعه ورودی های تلویزیون برای دسترسی به سخت افزار خاص تلویزیون کمک می کند. همانند سایر HAL های اندروید، HAL ورودی تلویزیون ( tv_input ) در درخت منبع AOSP موجود است و فروشنده اجرای آن را توسعه می دهد.

توجه : با شروع اندروید 14، رابط ورودی تلویزیون HAL با استفاده از AIDL تعریف می‌شود.

برنامه تلویزیون

برنامه TV سیستم محتوای تلویزیون زنده را به کاربر ارائه می دهد. یک برنامه تلویزیونی مرجع (تلویزیون زنده) در کنار پلتفرم اندروید ارائه شده است که می‌تواند به‌صورت همان‌طور که هست، سفارشی‌سازی شده، توسعه‌یافته یا توسط سازندگان دستگاه جایگزین شود. کد منبع در پروژه متن باز اندروید موجود است و می توانید در مقاله برنامه Reference TV با آن شروع کنید.

سازندگان دستگاه ممکن است برنامه‌های تلویزیون خود را برای پیاده‌سازی ویژگی‌های سازنده دستگاه یا کشور توسعه دهند، اما این در محدوده TIF یا برنامه تلویزیون مرجع نیست.

حداقل، برنامه تلویزیون سیستم باید وظایف زیر را انجام دهد:

راه اندازی و پیکربندی

  • تشخیص خودکار ورودی های تلویزیون
  • اجازه دهید ورودی‌های تلویزیون راه‌اندازی کانال را آغاز کنند
  • تنظیمات والدین را کنترل کنید
  • ویرایش کانال ها

در حال مشاهده

  • به همه کانال های تلویزیونی دسترسی داشته باشید و پیمایش کنید
  • دسترسی به نوار اطلاعات برنامه تلویزیونی
  • نمایش داده های راهنمای برنامه نویسی الکترونیکی (EPG).
  • پشتیبانی از چندین آهنگ صوتی و زیرنویس
  • چالش پین کنترل والدین را ارائه کنید
  • اجازه روکش رابط کاربری ورودی تلویزیون برای استاندارد تلویزیون (HbbTV و غیره)
  • نتایج جستجو را برای کانال‌ها و برنامه‌های تلویزیونی پر کنید
  • نمایش کارت های پیوند برنامه
  • پشتیبانی از API های تغییر زمان
  • عملکرد DVR را مدیریت کنید و از APIهای ضبط تلویزیون پشتیبانی کنید

این مجموعه ویژگی مطابق با نسخه‌های جدید اندرویدی که پلتفرم APIهای TIF گسترش یافته است، افزایش می‌یابد. CTS Verifier پوشش تست سازگاری را فراهم می کند.

پشتیبانی از ورودی های تلویزیون شخص ثالث

Android TV API های توسعه دهنده را برای ورودی های تلویزیون شخص ثالث فراهم می کند و برنامه های نصب شده را قادر می سازد کانال های نرم افزاری را به تجربه تلویزیون زنده ارائه دهند. برای اطمینان از اجرای سازگار دستگاه Android، برنامه TV سیستم برخی از مسئولیت‌ها را در رابطه با قرار دادن ورودی‌ها و کانال‌های تلویزیون شخص ثالث برای کاربر دارد. برنامه تلویزیون زنده مرجع یک پیاده سازی سازگار را ارائه می دهد. در صورت جایگزینی برنامه تلویزیون سیستم، سازندگان دستگاه باید اطمینان حاصل کنند که برنامه های خودشان سازگاری مشابهی را ارائه می دهند تا انتظارات توسعه دهندگان را در همه دستگاه های Android TV برآورده کنند.

برنامه تلویزیون سیستم باید ورودی های شخص ثالث را در کنار سرویس تلویزیون زنده پیش فرض دستگاه قرار دهد. وعده API های توسعه دهنده این است که کاربران می توانند کانال ها را (پس از نصب) در تجربه تلویزیونی استاندارد خود پیدا کنند.

تمایز بصری بین کانال های داخلی و کانال های شخص ثالث مجاز است، همانطور که در بخش برنامه تلویزیونی CDD Android تعریف شده است.

بخش‌های زیر نشان می‌دهد که چگونه برنامه تلویزیون زنده الزامات CDD را برآورده می‌کند.

راه اندازی کانال جدید

افزودن ورودی‌ها/کانال‌های شخص ثالث جدید با یافتن و نصب ورودی تلویزیون از یک فروشگاه برنامه، مانند Google Play، توسط کاربر آغاز می‌شود.

برخی از ورودی های تلویزیون شخص ثالث به طور خودکار کانال ها را به پایگاه داده TvProvider اضافه می کنند. با این حال اکثر آنها یک فعالیت راه اندازی را ارائه می دهند تا کاربر را قادر سازد کانال های خود را راه اندازی کند، جزئیات ورود به سیستم و سایر اقدامات را ارائه دهد. برنامه تلویزیون سیستم باید اطمینان حاصل کند که کاربر می‌تواند این فعالیت راه‌اندازی را فعال کند، به همین دلیل است که CDD به ورودی‌های شخص ثالث نیاز دارد که حداقل اقدامات ناوبری را از برنامه تلویزیون اصلی دور کنند.

برنامه تلویزیون زنده مرجع منوی منابع کانال را برای دسترسی به ورودی ها فراهم می کند.

به تنظیمات بروید
شکل 8. به تنظیمات بروید.

در تنظیمات به منبع کانال بروید
شکل 9. در تنظیمات به منابع کانال بروید.

منبع خود را از لیست انتخاب کنید.
شکل 10. منبع خود را از لیست انتخاب کنید.

کانال ها را از منبع خود اضافه کنید
شکل 11. کانال ها را از منبع خود اضافه کنید.

علاوه بر این، پس از نصب TvInput جدید، یک کارت اعلان در بالای منوی برنامه تلویزیون نشان داده می‌شود تا کاربر را مستقیماً به تنظیمات هدایت کند:

اعلانی که نشان می دهد منابع کانال جدید در دسترس هستند.
شکل 12. اطلاعیه ای که نشان می دهد منابع کانال جدید در دسترس هستند.

اگر کاربر از طریق اعلان اقدام کند، می‌تواند منابع خود را همانطور که در شکل 10 مشاهده می‌شود تنظیم کند.

برای انتظارات توسعه دهندگان در این زمینه ، به Define Your TV Input Service مراجعه کنید.

لیست کانال را سفارشی کنید

سازندگان دستگاه ممکن است یک رابط کاربری برای مخفی کردن کانال‌های خاص ارائه دهند و کاربران را قادر به مدیریت EPG‌های خود کنند. تلویزیون زنده شامل این امکانات است.

لیست کانال را در تنظیمات باز کنید.
شکل 13. لیست کانال را در تنظیمات باز کنید.

لیست کانال خود را سفارشی کنید
شکل 14. لیست کانال خود را سفارشی کنید.

EPG

توسعه دهندگان ورودی شخص ثالث باید اطمینان داشته باشند که کاربران می توانند به راحتی در طول استفاده عمومی، در همه دستگاه های Android TV سازگار به کانال های خود پیمایش کنند.

کانال‌های ورودی‌های شخص ثالث باید به عنوان بخشی از EPG تجربه تلویزیون زنده استاندارد دستگاه ارائه شوند. می‌توان از جداسازی بصری یا دسته‌های جداگانه برای کانال‌های شخص ثالث استفاده کرد (به بخش برنامه تلویزیونی CDD Android مراجعه کنید) - نکته کلیدی این است که کاربران می‌توانند کانال‌هایی را که نصب کرده‌اند پیدا کنند.

تولیدکنندگان باید برنامه TV را برای گنجاندن نتایج جستجو برای درخواست‌های جستجوی جهانی اجرا کنند تا از بهترین تجربه کاربر اطمینان حاصل کنند. Live TV یک پیاده‌سازی را ارائه می‌کند (نگاه کنید به کدام یک از ورودی‌های شخص ثالث (که برای سازگاری با پلتفرم لازم است) و همچنین ورودی‌های داخلی ارائه می‌شود.

جابجایی زمان

برای دستگاه‌های اندروید 6.0 و بالاتر، برنامه تلویزیون باید از APIهای تغییر زمان چارچوب Android پشتیبانی کند. علاوه بر این، سازندگان باید کنترل‌های پخش را در برنامه تلویزیون پیاده‌سازی کنند، که به کاربران اجازه می‌دهد پخش را متوقف کنند، از سر بگیرند، به عقب برگردانند و سریع به جلو بروند.

برای ورودی‌های تلویزیونی که از تغییر زمان پشتیبانی می‌کنند، برنامه تلویزیون باید کنترل‌های پخش را نمایش دهد.

کنترل های پخش
شکل 15. کنترل های پخش

دستگاه DVR

برای دستگاه‌های Android 7.0 و بالاتر، برنامه TV باید از APIهای ضبط تلویزیون چارچوب Android پشتیبانی کند تا برنامه‌های ضبط شده را پشتیبانی، فهرست و پخش کند.

این به سازندگان دستگاه اجازه می‌دهد تا زیرسیستم‌های DVR خود را به TIF متصل کنند و تلاش یکپارچه‌سازی را که برای فعال کردن یا یکپارچه‌سازی عملکرد DVR در یک دستگاه تلویزیون لازم است، به‌طور چشمگیری کاهش دهند. همچنین به اشخاص ثالث امکان می‌دهد تا سیستم‌های DVR پس از فروش را که می‌توانند به دستگاه Android TV وصل شوند، ارائه دهند.

برنامه TV علاوه بر ضبط محتوای زنده، تضاد منابع را نیز مدیریت می کند. به عنوان مثال، اگر دستگاه دارای دو تیونر باشد، می تواند دو برنامه را همزمان ضبط کند. اگر کاربر بخواهد سه مورد را ضبط کند، برنامه تلویزیون باید تضاد را مدیریت کند و باید اعلانی را ارائه کند یا درخواست کند که کاربر اولویتی را برای این درخواست‌ها زمان‌بندی کند.

برنامه‌های تلویزیونی همچنین می‌توانند منطق پیچیده‌تری را پیاده‌سازی کنند، مانند اینکه از کاربر بپرسد که آیا می‌خواهد تمام قسمت‌های آینده یک سریال را در صورت درخواست ضبط یک قسمت ضبط کند یا خیر.

نمودار زیر را برای مشاهده اجرای احتمالی DVR در Android TV مشاهده کنید.

فیلمبرداری دیجیتال در Android TV
شکل 16. ضبط ویدئوی دیجیتال در Android TV

  1. سرویس ورودی تلویزیون به برنامه تلویزیون می‌گوید چه تعداد تیونر در دسترس است تا برنامه تلویزیون بتواند تضاد احتمالی منابع را مدیریت کند.
  2. برنامه تلویزیون درخواستی برای ضبط یک برنامه تلویزیونی توسط کاربر دریافت می کند.
  3. برنامه TV برنامه ضبط را در پایگاه داده داخلی خود ذخیره می کند.
  4. وقتی زمان ضبط فرا می رسد، برنامه تلویزیون درخواستی را برای تنظیم کانال مرتبط با ضبط ارسال می کند.
  5. سرویس ورودی تلویزیون این درخواست را دریافت می کند، با وجود یا نبودن منابع مناسب پاسخ می دهد و کانال را تنظیم می کند.
  6. سپس برنامه TV درخواستی را برای شروع ضبط به مدیر ورودی تلویزیون ارسال می کند.
  7. سرویس ورودی تلویزیون این درخواست را دریافت کرده و شروع به ضبط می کند.
  8. سرویس ورودی تلویزیون داده های واقعی ویدیو را در حافظه خود ذخیره می کند که می تواند حافظه خارجی یا فضای ذخیره سازی ابری باشد.
  9. وقتی زمان اتمام ضبط فرا می رسد، برنامه TV درخواست توقف ضبط را به مدیر ورودی تلویزیون ارسال می کند.
  10. هنگامی که سرویس ورودی تلویزیون درخواست را دریافت کرد، ضبط را متوقف می‌کند و متادیتای مرتبط خود را به ارائه‌دهنده تلویزیون اضافه می‌کند تا برنامه تلویزیون بتواند در صورت درخواست، ضبط را به کاربران نشان دهد.

برای اطلاعات بیشتر در مورد اجرای ویژگی‌های ضبط در سرویس ورودی تلویزیون، به این مقاله ضبط تلویزیون مراجعه کنید.

منابع مفید

  • CDD Android و APIهای توسعه‌دهنده مستند، مرجع قطعی هستند.
  • CTS Verifier APIها را به عنوان بخشی از برنامه تست سازگاری تمرین می کند. اجرای این برنامه در مقابل تلویزیون زنده ممکن است راهی مفید برای مشاهده EPG، جستجو، کنترل والدین و سایر الزامات در زمینه ورودی‌های شخص ثالث باشد.
  • برای انتظارات توسعه دهندگان در این زمینه ، به Define Your TV Input Service مراجعه کنید.

کنترل والدین

کنترل والدین به کاربر اجازه می دهد کانال ها و برنامه های ناخواسته را مسدود کند، اما با وارد کردن یک کد پین، بلوک را دور بزند.

مسئولیت عملکرد کنترل والدین بین برنامه تلویزیون، سرویس مدیریت ورودی تلویزیون، ارائه دهنده تلویزیون و ورودی تلویزیون مشترک است.

کنترل والدین اجباری است و تحت پوشش CTS Verifier است.

تعدادی از کشورها سیستم های رتبه بندی را تعریف کرده اند که ورودی های تلویزیون می توانند از طریق TVContentRating API استفاده کنند. به‌علاوه، ورودی‌های تلویزیون می‌توانند سیستم‌های رتبه‌بندی سفارشی خود را ثبت کنند، همانطور که در آزمون تأییدکننده CTS نشان داده شده است، که رتبه‌بندی «جعلی» را معرفی می‌کند. برای کشورهایی که یک سیستم رتبه‌بندی استاندارد وجود دارد، سازندگان دستگاه تشویق می‌شوند که کنترل والدین چارچوب ورودی تلویزیون را با مکانیسم‌های دیگری که ممکن است شامل شوند ترکیب کنند.

ارائه دهنده تلویزیون

هر ردیف کانال دارای یک فیلد COLUMN_LOCKED است که برای قفل کردن کانال‌های خاص از مشاهده بدون وارد کردن کد پین استفاده می‌شود. فیلد برنامه COLUMN_CONTENT_RATING برای نمایش در نظر گرفته شده است و برای اعمال کنترل والدین استفاده نمی شود.

مدیر ورودی تلویزیون

مدیر ورودی تلویزیون هر TvContentRating مسدود شده را ذخیره می کند و به isRatingBlocked() پاسخ می دهد تا توصیه کند آیا محتوای دارای رتبه بندی داده شده باید مسدود شود.

ورودی تلویزیون

هنگامی که رتبه بندی محتوای نمایش داده شده (در برنامه یا تغییر کانال)، یا تنظیمات کنترل والدین (در ACTION_BLOCKED_RATINGS_CHANGED و ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) تغییر کرده است، با فراخوانی isRatingBlocked() در مدیر ورودی تلویزیون، ورودی تلویزیون بررسی می کند که آیا محتوای فعلی باید مسدود شود یا خیر. اگر محتوا مسدود شود، ورودی تلویزیون صدا و تصویر را غیرفعال می‌کند و با فراخوانی notifyContentBlocked(TvContentRating) به برنامه تلویزیون اطلاع می‌دهد که محتوای فعلی مسدود شده است. اگر محتوا نباید مسدود شود، ورودی تلویزیون صدا و تصویر را فعال می‌کند و با فراخوانی notifyContentAllowed() به برنامه TV اطلاع می‌دهد که محتوای فعلی مجاز است.

برنامه تلویزیون

برای ارج نهادن به APIهای کنترل والدین، و در نتیجه ایجاد یک پلتفرم سازگار، برنامه TV سیستم باید راهی برای مدیریت کنترل والدین، از جمله برای هر رتبه بندی سفارشی ثبت شده توسط برنامه های خاص، برای کاربران فراهم کند.

برنامه تلویزیون زمانی که از طریق ورودی تلویزیون مطلع می شود که محتوای فعلی مسدود شده است یا زمانی که کاربر تلاش می کند یک کانال مسدود شده را مشاهده کند، یک UI کد پین را نشان می دهد.

برنامه تلویزیون مستقیماً تنظیمات کنترل والدین را ذخیره نمی کند. هنگامی که کاربر تنظیمات کنترل والدین را تغییر می دهد، هر TvContentRating مسدود شده توسط مدیر ورودی تلویزیون ذخیره می شود و کانال های مسدود شده توسط ارائه دهنده تلویزیون ذخیره می شوند.

برنامه TV باید مجوز android.permission.MODIFY_PARENTAL_CONTROLS را برای تغییر تنظیمات کنترل والدین اعلام کند.

تولید کنندگان دستگاه تشویق می شوند:

  • آزمایش کنترل‌های والدینی CTS Verifier را در برابر برنامه تلویزیونی زنده مرجع برای نمایش الزامات سازگاری انجام دهید.
  • از برنامه Live TV به عنوان مرجع برای برنامه تلویزیونی خود استفاده کنید: به ویژه به منبع ContentRatingsManager و RatingSystemsFragment و نحوه مدیریت آنها با رتبه بندی های سفارشی مراجعه کنید.

HDMI-CEC

HDMI-CEC به یک دستگاه اجازه می دهد تا دستگاه دیگری را کنترل کند، در نتیجه یک ریموت واحد را قادر می سازد چندین دستگاه را در یک سینمای خانگی کنترل کند. Android TV برای سرعت بخشیدن به تنظیمات و امکان کنترل از راه دور بر روی ورودی های مختلف تلویزیون از طریق برنامه تلویزیون مرکزی استفاده می شود. به عنوان مثال، ممکن است ورودی‌ها را تغییر دهد، دستگاه‌ها را روشن یا خاموش کند و موارد دیگر.

Android TIF HDMI-CEC را به‌عنوان سرویس کنترل HDMI پیاده‌سازی می‌کند تا سازندگان دستگاه‌ها صرفاً نیاز به توسعه درایورهای سطح پایینی داشته باشند که با HAL سبک‌وزن Android TV تعامل داشته باشند و منطق تجاری پیچیده‌تر را نادیده بگیرند. در ارائه یک پیاده سازی استاندارد، اندروید به دنبال کاهش مشکلات سازگاری با کاهش پیاده سازی های پراکنده و پشتیبانی از ویژگی های انتخابی است. سرویس کنترل HDMI از خدمات موجود اندروید، از جمله ورودی و برق استفاده می کند.

این بدان معناست که پیاده‌سازی‌های 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. سپس برنامه TV یک جلسه مدیریت ورودی تلویزیون برای ورودی تلویزیونی که به آن سوئیچ می شود ایجاد می کند و 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. یک برنامه پخش در برنامه تلویزیون تمرکز می کند و اقدامات کاربر را مدیریت می کند.

برای جستجوی صوتی/توصیه، برنامه پخش ممکن است از جستجوی درون برنامه ای برای جستجوی صوتی پشتیبانی کند.

، نماد HAL Android TV

چارچوب ورودی Android TV (TIF) تحویل محتوای زنده به Android TV را ساده می کند. Android TIF یک API استاندارد برای تولیدکنندگان فراهم می‌کند تا ماژول‌های ورودی را برای کنترل Android TV ایجاد کنند و جستجوی زنده تلویزیون و توصیه‌ها را از طریق ابرداده منتشر شده توسط ورودی تلویزیون فعال می‌کند.

این چارچوب به دنبال اجرای استانداردهای تلویزیون یا الزامات منطقه ای نیست، اما تولید کنندگان دستگاه را آسان تر می کند تا استانداردهای پخش تلویزیون دیجیتال منطقه ای را بدون پیاده سازی مجدد برآورده کنند. مستندات این بخش ممکن است برای توسعه دهندگان برنامه های شخص ثالث که می خواهند ورودی های تلویزیون سفارشی ایجاد کنند نیز مفید باشد.

اجزاء

اجرای Android TV Input Framework شامل یک مدیر ورودی تلویزیون است. TIF با برنامه TV کار می کند، یک برنامه سیستمی که نمی توان آن را با یک برنامه شخص ثالث جایگزین کرد تا به کانال های تیونر داخلی و IP دسترسی پیدا کند. برنامه تلویزیون با ماژول‌های ورودی تلویزیون که توسط سازنده دستگاه یا سایر طرف‌ها از طریق مدیر ورودی تلویزیون ارائه شده است، ارتباط برقرار می‌کند.

چارچوب ورودی تلویزیون شامل موارد زیر است:

  • ارائه دهنده تلویزیون ( com.android.providers.tv.TvProvider ): پایگاه داده ای از کانال ها، برنامه ها و مجوزهای مرتبط
  • برنامه تلویزیون ( com.android.tv.TvActivity ): برنامه ای که تعامل کاربر را مدیریت می کند
  • مدیریت ورودی تلویزیون ( android.media.tv.TvInputManager ): به ورودی های تلویزیون اجازه می دهد تا با برنامه تلویزیون ارتباط برقرار کنند.
  • ورودی تلویزیون: برنامه ای که تیونرها و پورت های ورودی فیزیکی یا مجازی را نشان می دهد
  • HAL ورودی تلویزیون (ماژول tv_input ): یک تعریف سخت افزاری که به ورودی های تلویزیون سیستم اجازه می دهد در هنگام اجرا به سخت افزار خاص تلویزیون دسترسی داشته باشند.
  • کنترل والدین: فناوری برای مسدود کردن کانال‌ها و برنامه‌ها
  • HDMI-CEC: فناوری برای کنترل از راه دور دستگاه های مختلف از طریق HDMI
  • چارچوب تیونر: چارچوبی برای ورودی تلویزیون داخلی تیونر
  • MediaCas: چارچوبی برای دسترسی مشروط
  • Tuner Resource Manager: سرویسی برای مدیریت منابع سخت افزاری ورودی تلویزیون، MediaCas و ورودی تیونر داخلی

در زیر به جزئیات این اجزا پرداخته شده است. برای مشاهده جزئیات معماری چارچوب ورودی Android TV به نمودار زیر مراجعه کنید.

مروری بر معماری TIF اندروید
شکل 1. معماری چارچوب ورودی Android TV (TIF).

جریان

در اینجا نحوه اجرای معماری آمده است:

  1. کاربر برنامه TV را می بیند و با آن تعامل دارد، یک برنامه سیستمی که نمی تواند با یک برنامه شخص ثالث جایگزین شود.
  2. برنامه TV محتوای AV را از ورودی تلویزیون نمایش می دهد.
  3. برنامه تلویزیون نمی‌تواند مستقیماً با ورودی‌های تلویزیون صحبت کند. مدیر ورودی تلویزیون وضعیت ورودی های تلویزیون را برای برنامه تلویزیون شناسایی می کند. برای جزئیات بیشتر در مورد این محدودیت‌ها، به مدیر ورودی تلویزیون در زیر مراجعه کنید.

مجوزها

  • فقط ورودی‌های تلویزیون signatureOrSystem و برنامه تلویزیون دسترسی کامل به پایگاه داده ارائه‌دهنده تلویزیون دارند و می‌توانند رویدادهای کلیدی را دریافت کنند.
  • فقط ورودی های تلویزیون سیستم می توانند از طریق سرویس مدیریت ورودی تلویزیون به HAL ورودی تلویزیون دسترسی داشته باشند. ورودی های تلویزیون از طریق جلسات مدیریت ورودی تلویزیون یک به یک قابل دسترسی هستند.
  • ورودی‌های تلویزیون شخص ثالث به پایگاه داده ارائه‌دهنده تلویزیون دسترسی بسته‌شده دارند و فقط برای ردیف‌های بسته منطبق می‌توانند بخوانند/نوشتن کنند.
  • ورودی‌های تلویزیون شخص ثالث می‌توانند محتوا یا محتوای خود را از ورودی‌های تلویزیون عبوری سازنده دستگاه مانند HDMI1 نمایش دهند. آن‌ها نمی‌توانند محتوا را از ورودی‌های تلویزیون غیرقابل عبور، مانند تیونر داخلی یا IPTV، نمایش دهند.
  • مجوز TV_INPUT_HARDWARE برای برنامه ورودی تلویزیون سخت‌افزاری، به سرویس مدیریت ورودی تلویزیون سیگنال می‌دهد تا به سرویس ورودی تلویزیون در هنگام راه‌اندازی اطلاع دهد تا با سرویس مدیریت ورودی تلویزیون تماس بگیرد و ورودی‌های تلویزیون آن را اضافه کند. این مجوز به یک برنامه ورودی تلویزیون سخت افزاری اجازه می دهد از چندین ورودی تلویزیون در هر سرویس ورودی تلویزیون پشتیبانی کند و همچنین بتواند ورودی های تلویزیون پشتیبانی شده خود را به صورت پویا اضافه و حذف کند.

ارائه دهنده تلویزیون

پایگاه داده TV Provider کانال ها و برنامه ها را از ورودی های تلویزیون ذخیره می کند. ارائه دهنده تلویزیون همچنین مجوزهای مرتبط را منتشر و مدیریت می کند تا ورودی های تلویزیون فقط سوابق خود را ببینند. به عنوان مثال ، یک ورودی تلویزیونی خاص فقط می تواند کانال ها و برنامه هایی را که ارائه کرده است مشاهده کند و از دسترسی به کانال ها و برنامه های ورودی تلویزیون دیگر ممنوع است.

ارائه دهنده تلویزیون "ژانر پخش" را به "ژانر متعارف" در داخل می رساند. ورودی های تلویزیون مسئول جمع شدن "ژانر پخش" با مقدار در استاندارد پخش اساسی هستند و قسمت "ژانر متعارف" به طور خودکار با ژانر صحیح مرتبط از android.provider.TvContract.Genres جمع می شود. به عنوان مثال ، با پخش استاندارد ATSC A/65 و برنامه با ژانر 0x25 (به معنی "ورزش") ، ورودی تلویزیون "ژانر پخش" را با رشته "ورزش" و ارائه دهنده تلویزیون جمع می کند و زمینه "ژانر متعارف" را با ارزش نقشه برداری شده android.provider.TvContract.Genres.SPORTS جمع می کند.

برای نمای دقیق ارائه دهنده تلویزیون ، نمودار زیر را مشاهده کنید.

ارائه دهنده تلویزیون Android
شکل 2 ارائه دهنده تلویزیون اندرویدی

فقط برنامه های موجود در پارتیشن سیستم ممتاز می توانند کل بانک اطلاعاتی ارائه دهنده تلویزیون را بخوانند.

ورودی های تلویزیونی Passthrough کانال ها و برنامه ها را ذخیره نمی کنند.

علاوه بر زمینه های استاندارد برای کانال ها و برنامه ها ، پایگاه داده ارائه دهنده تلویزیون همچنین یک قسمت از نوع حباب ، COLUMN_INTERNAL_PROVIDER_DATA را ارائه می دهد ، در هر جدول که ورودی های تلویزیون ممکن است برای ذخیره داده های دلخواه استفاده کنند. این داده های حباب می توانند شامل اطلاعات سفارشی مانند فرکانس تیونر مرتبط باشند و ممکن است در یک بافر پروتکل یا شکل دیگری ارائه شود. یک قسمت قابل جستجو برای ایجاد کانالهای خاص در جستجوی موجود در دسترس است (مانند پاسخگویی به الزامات خاص کشور برای محافظت از محتوا).

نمونه های زمینه پایگاه داده

ارائه دهنده تلویزیون از داده های ساختاری در کانال ( 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 ، زمینه های حباب قابل تنظیم هستند که در آن یک ورودی تلویزیون می تواند ابرداده دلخواه را در مورد کانال یا برنامه خود ذخیره کند.
  • پرچم: زمینه های پرچم نشان می دهد که آیا یک کانال باید از جستجو ، مرور یا مشاهده محدود شود. این فقط در سطح کانال قابل تنظیم است. همه برنامه ها به تنظیمات موجود در کانال تعویض می شوند.
    • 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 برای دسترسی به کل بانک اطلاعاتی به دست آورند.

مدیر ورودی تلویزیون

مدیر ورودی تلویزیون یک API سیستم مرکزی را به چارچوب ورودی کلی تلویزیون Android ارائه می دهد. این تعامل بین برنامه ها و ورودی های تلویزیون را به طور داوری می کند و عملکرد کنترل والدین را فراهم می کند. جلسات مدیر ورودی تلویزیون باید یک به یک با ورودی های تلویزیون ایجاد شود. مدیر ورودی تلویزیون امکان دسترسی به ورودی های تلویزیون نصب شده را فراهم می کند تا برنامه ها ممکن است:

  • ورودی های تلویزیون را لیست کنید و وضعیت آنها را بررسی کنید
  • جلسات ایجاد کنید و شنوندگان را مدیریت کنید

برای جلسات ، یک ورودی تلویزیون ممکن است توسط برنامه تلویزیونی فقط به URIS تنظیم شود ، به پایگاه داده ارائه دهنده تلویزیون اضافه شده است ، به جز ورودی های تلویزیونی که می توانند با استفاده از TvContract.buildChannelUriForPassthroughInput() تنظیم شوند. ورودی تلویزیون نیز ممکن است مجموعه حجم خود را داشته باشد. ورودی های تلویزیون ارائه شده و امضا شده توسط سازنده دستگاه (برنامه های امضا) یا سایر برنامه های نصب شده در پارتیشن سیستم به کل پایگاه داده ارائه دهنده تلویزیون دسترسی خواهند داشت. از این دسترسی می توان برای ساخت برنامه ها برای مرور و جستجوی همه کانال ها و برنامه های تلویزیونی موجود استفاده کرد.

یک برنامه ممکن است یک TvInputCallback با android.media.tv.TvInputManager ایجاد و ثبت کند تا در تغییر وضعیت ورودی تلویزیون یا علاوه بر این یا حذف یک ورودی تلویزیون تماس گرفته شود. به عنوان مثال ، هنگامی که یک ورودی تلویزیون با نمایش آن به عنوان قطع ارتباط و جلوگیری از انتخاب آن قطع شود ، یک برنامه تلویزیونی می تواند واکنش نشان دهد.

مدیر ورودی تلویزیون ارتباط بین برنامه تلویزیونی و ورودی های تلویزیون را خلاصه می کند. رابط استاندارد مدیر ورودی تلویزیون و ورودی تلویزیون به تولید کنندگان چندین دستگاه اجازه می دهد تا ضمن کمک به همه ورودی های تلویزیون شخص ثالث در تمام برنامه های تلویزیونی ، برنامه های تلویزیونی خود را ایجاد کنند.

ورودی های تلویزیون

ورودی های تلویزیون برنامه های Android به این معنی هستند که AndroidManifest.xml دارند و نصب شده اند (از طریق بازی ، از قبل نصب شده یا کنار گذاشته شده). Android TV از برنامه های سیستم از پیش نصب شده ، برنامه های امضا شده توسط سازنده دستگاه و ورودی های تلویزیون شخص ثالث پشتیبانی می کند.

برخی از ورودی ها ، مانند ورودی HDMI یا ورودی تیونر داخلی ، فقط توسط سازنده قابل تهیه هستند زیرا مستقیماً با سخت افزار زیرین صحبت می کنند. برخی دیگر ، مانند IPTV ، تغییر مکان و STB خارجی ، توسط اشخاص ثالث به عنوان APK در فروشگاه Google Play قابل تهیه هستند. پس از بارگیری و نصب ، ورودی جدید را می توان در برنامه تلویزیونی انتخاب کرد.

مثال ورودی پاس

ورودی سیستم تلویزیون اندرویدی
شکل 3 ورودی سیستم تلویزیون اندرویدی

در این مثال ، ورودی تلویزیون ارائه شده توسط سازنده دستگاه مورد اعتماد است و دسترسی کامل به ارائه دهنده تلویزیون دارد. به عنوان یک ورودی تلویزیونی Passthrough ، هیچ کانال یا برنامه ای را با ارائه دهنده تلویزیون ثبت نمی کند. برای به دست آوردن URI مورد استفاده برای مراجعه به ورودی گذرگاه ، از روش ابزار android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) استفاده کنید. برنامه تلویزیونی برای رسیدن به ورودی تلویزیون HDMI با مدیر ورودی تلویزیون ارتباط برقرار می کند.

مثال تیونر داخلی

ورودی تیونر داخلی Android TV
شکل 4. ورودی تیونر داخلی Android TV

در این مثال ، ورودی تلویزیون تیونر داخلی که توسط سازنده دستگاه ارائه شده است ، مورد اعتماد است و دسترسی کامل به ارائه دهنده تلویزیون دارد.

مثال ورودی شخص ثالث

ورودی شخص ثالث Android TV
شکل 5. ورودی شخص ثالث Android TV

در این مثال ، ورودی تلویزیون STB خارجی توسط شخص ثالث ارائه می شود. از آنجا که ورودی تلویزیون نمی تواند به طور مستقیم به فید ویدیوی HDMI دسترسی پیدا کند ، باید از طریق مدیر ورودی تلویزیون عبور کند و از ورودی تلویزیون HDMI که توسط ساخت دستگاه تهیه شده است استفاده کند.

از طریق مدیر ورودی تلویزیون ، ورودی تلویزیون STB خارجی می تواند با ورودی تلویزیون HDMI صحبت کند و از آن بخواهد که این فیلم را در HDMI1 نشان دهد. بنابراین ورودی تلویزیون STB می تواند تلویزیون را کنترل کند در حالی که ورودی تلویزیون HDMI با تولید کننده این فیلم را ارائه می دهد.

تصویر در تصویر (PIP) مثال

Android TV Keyevents
شکل 6. Android TV Keyevents

نمودار بالا نشان می دهد که چگونه دکمه های کنترل از راه دور به یک ورودی تلویزیونی خاص برای تصویر در تصویر در تصویر (PIP) منتقل می شوند. این فشار دکمه ها توسط درایور سخت افزاری تهیه شده توسط سازنده دستگاه تفسیر می شود ، و سخت افزار Scancodes را به کد های اندرویدی تبدیل می کند و آنها را به InputReader لوله ورودی ورودی استاندارد Android و توابع InputDispatcher به عنوان کلید اصلی منتقل می کند. اینها به نوبه خود در صورت تمرکز ، رویدادهای برنامه تلویزیونی را تحریک می کنند.

فقط ورودی های تلویزیون سیستم واجد شرایط دریافت InputEvents هستند و تنها در صورت داشتن اجازه سیستم RECEIVE_INPUT_EVENT . ورودی تلویزیون وظیفه دارد تعیین کند که کدام ورودی ها برای مصرف آن چیست و باید به برنامه تلویزیونی اجازه دهد تا کلیدهایی را که برای مصرف آن نیازی به مصرف ندارد ، کنترل کند.

برنامه تلویزیونی وظیفه دارد بدانید که ورودی تلویزیون سیستم فعال است ، به این معنی که توسط کاربر انتخاب شده است ، و برای تفکیک KeyEvents ورودی و هدایت آنها به جلسه صحیح مدیر ورودی تلویزیون ، تماس با dispatchInputEvent() برای انتقال این رویداد به ورودی تلویزیون مرتبط.

مثال ورودی MHEG-5

نمودار زیر نمای مفصلی درباره نحوه مسیریابی KeyEvents از طریق Android TIF نشان می دهد.

دکمه قرمز Android TV Red مثال
شکل 7 دکمه قرمز Android TV Red مثال

این جریان برنامه یک دکمه قرمز را نشان می دهد ، که در اروپا برای دسترسی کاربران به برنامه های تعاملی در تلویزیون های خود امکان پذیر است. یک برنامه را می توان از طریق این جریان حمل و نقل تحویل داد. با کلیک بر روی دکمه ، به کاربران امکان می دهد با این برنامه های پخش ارتباط برقرار کنند. به عنوان مثال ، شما ممکن است از این برنامه های پخش برای دسترسی به صفحات وب مرتبط یا نمرات ورزشی استفاده کنید.

برای یادگیری نحوه تعامل برنامه های پخش با برنامه تلویزیونی ، به بخش برنامه پخش مراجعه کنید.

در این مثال:

  1. برنامه تلویزیونی در حال تمرکز است و تمام کلیدها را دریافت می کند.
  2. KeyEvents (به عنوان مثال دکمه قرمز) به عنوان InputEvents.
  3. ورودی تلویزیون سیستم با پشته MHEG-5 ادغام می شود و دارای مجوز سیستم RECEIVE_INPUT_EVENT است.
  4. در دریافت کد کلید فعال سازی (به عنوان مثال دکمه قرمز) ، ورودی تلویزیون برنامه پخش را فعال می کند.
  5. ورودی تلویزیون به عنوان InputEvents KeyEvents مصرف می کند و برنامه پخش تمرکز دارد و تا زمان رد شدن ، InputEvents کنترل می کند.

توجه : ورودی های تلویزیون شخص ثالث هرگز کلیدهایی دریافت نمی کنند.

ورودی تلویزیون هال

ورودی تلویزیون HAL به توسعه ورودی های تلویزیون برای دسترسی به سخت افزار خاص تلویزیون کمک می کند. مانند سایر HAL های Android ، ورودی تلویزیون HAL ( tv_input ) در درخت منبع AOSP موجود است و فروشنده اجرای خود را توسعه می دهد.

توجه : با شروع Android 14 ، رابط ورودی TV HAL با استفاده از AIDL تعریف می شود.

برنامه تلویزیون

برنامه تلویزیون سیستم محتوای تلویزیون زنده را به کاربر ارائه می دهد. یک برنامه تلویزیونی مرجع (تلویزیون زنده) در کنار پلتفرم Android ارائه شده است که می تواند به عنوان IS ، سفارشی ، گسترش یافته یا جایگزین تولید کنندگان دستگاه شود. کد منبع در پروژه منبع باز اندروید موجود است و می توانید در مقاله برنامه TV Reference با آن شروع کنید.

تولید کنندگان دستگاه ممکن است برنامه های تلویزیونی خود را برای اجرای تولید کننده دستگاه یا ویژگی های خاص کشور گسترش دهند ، اما این در محدوده TIF یا برنامه TV Reference نیست.

حداقل ، برنامه تلویزیون سیستم باید کارهای زیر را انجام دهد:

راه اندازی و پیکربندی

  • ورودی های تلویزیونی با نمایش خودکار
  • اجازه دهید ورودی های تلویزیون راه اندازی کانال را آغاز کنند
  • تنظیمات والدین را کنترل کنید
  • کانال های ویرایش

در حال مشاهده

  • دسترسی و حرکت به تمام کانال های تلویزیونی
  • دسترسی به نوار اطلاعات برنامه تلویزیونی
  • نمایش داده های برنامه نویسی الکترونیکی (EPG)
  • از چندین آهنگ صوتی و زیرنویس پشتیبانی کنید
  • چالش پین کنترل والدین را تأمین کنید
  • اجازه می دهد پوشش UI ورودی تلویزیون برای استاندارد تلویزیون (HBBTV و غیره)
  • نتایج جستجو برای کانال ها و برنامه های تلویزیونی
  • نمایش کارتهای پیوند برنامه
  • پشتیبانی از API های Timesefifting
  • عملکرد DVR را کنترل کنید و API های ضبط تلویزیون را پشتیبانی کنید

این مجموعه ویژگی مطابق با نسخه های جدید Android که API های TIF پلتفرم در آن گسترش می یابد ، افزایش می یابد. تأیید کننده CTS پوشش تست سازگاری را فراهم می کند.

پشتیبانی از ورودی های تلویزیون شخص ثالث

Android TV API های توسعه دهنده را برای ورودی های تلویزیون شخص ثالث فراهم می کند و برنامه های نصب شده را قادر می سازد تا کانال های نرم افزاری را به تجربه تلویزیون زنده ارائه دهند. برای اطمینان از اجرای دستگاه Android سازگار ، برنامه TV System دارای مسئولیت هایی در مورد ظاهر شدن ورودی ها و کانال های تلویزیون شخص ثالث برای کاربر است. برنامه TV Reference Live یک اجرای سازگار را ارائه می دهد. در صورت جایگزینی برنامه تلویزیونی سیستم ، تولید کنندگان دستگاه باید اطمینان حاصل کنند که برنامه های خود سازگاری مشابهی را ارائه می دهند تا انتظارات توسعه دهنده را در تمام دستگاه های تلویزیون Android برآورده کنند.

برنامه تلویزیون سیستم باید ورودی های شخص ثالث را در کنار سرویس تلویزیونی پیش فرض زنده دستگاه قرار دهد. وعده API های توسعه دهنده این است که کاربران در تجربه تلویزیون استاندارد خود قادر به یافتن کانال ها (پس از نصب) هستند.

تمایز بصری بین کانال های داخلی و کانال های شخص ثالث مجاز است ، همانطور که در بخش برنامه تلویزیونی Android CDD تعریف شده است.

بخش های زیر نشان می دهد که چگونه برنامه Live TV نیازهای CDD را برآورده می کند.

راه اندازی کانال جدید

افزودن ورودی ها/کانال های جدید شخص ثالث با یافتن کاربر و نصب ورودی تلویزیون از یک فروشگاه برنامه مانند Google Play آغاز می شود.

برخی از ورودی های تلویزیون شخص ثالث به طور خودکار کانال ها را به پایگاه داده TVProvider اضافه می کنند. با این حال ، بیشتر آنها یک فعالیت تنظیم را فراهم می کنند تا کاربر بتواند کانال های خود را تنظیم کند ، جزئیات ورود به سیستم و سایر اقدامات را ارائه دهد. برنامه TV System باید اطمینان حاصل کند که کاربر می تواند این فعالیت تنظیم را فعال کند ، به همین دلیل CDD به ورودی های شخص ثالث نیاز دارد که حداقل اقدامات ناوبری به دور از برنامه اصلی تلویزیون باشد.

برنامه Reference Live TV منوی منابع کانال را برای دسترسی به ورودی ها فراهم می کند.

به تنظیمات بروید
شکل 8 به تنظیمات بروید.

در تنظیمات به منبع کانال بروید
شکل 9 در تنظیمات به منابع کانال بروید.

منبع خود را از لیست انتخاب کنید.
شکل 10 منبع خود را از لیست انتخاب کنید.

کانال ها را از منبع خود اضافه کنید
شکل 11 کانال ها را از منبع خود اضافه کنید.

علاوه بر این ، کارت اعلان در بالای منوی برنامه تلویزیونی پس از نصب TVInput جدید نشان داده می شود تا کاربر را مستقیماً به تنظیمات برساند:

اطلاع رسانی که نشان می دهد منابع جدید کانال در دسترس هستند.
شکل 12 اعلان که نشان می دهد منابع جدید کانال در دسترس هستند.

اگر کاربر از طریق اعلان اقدام کند ، می تواند منابع خود را مطابق شکل 10 تنظیم کند.

به تعریف خدمات ورودی تلویزیون خود برای انتظارات توسعه دهنده در این زمینه مراجعه کنید.

لیست کانال را سفارشی کنید

تولید کنندگان دستگاه ممکن است یک UI را برای مخفی کردن کانالهای خاص ارائه دهند و کاربران را قادر به مدیریت EPG های خود کنند. تلویزیون زنده شامل این تسهیلات است.

لیست کانال را در تنظیمات باز کنید.
شکل 13 لیست کانال را در تنظیمات باز کنید.

لیست کانال خود را سفارشی کنید.
شکل 14 لیست کانال خود را سفارشی کنید.

EPG

توسعه دهندگان ورودی شخص ثالث باید اطمینان داشته باشند که کاربران می توانند در طول استفاده عمومی به راحتی به کانال های خود حرکت کنند ، در تمام دستگاه های تلویزیونی سازگار Android.

کانال های ورودی های شخص ثالث باید به عنوان بخشی از تجربه استاندارد تلویزیون زنده دستگاه EPG ارائه شوند. جداسازی بصری یا دسته های جداگانه برای کانال های شخص ثالث قابل استفاده است (به بخش برنامه تلویزیونی CDD Android مراجعه کنید)-نکته مهم این است که کاربران قادر به یافتن کانال هایی هستند که نصب کرده اند.

تولید کنندگان باید برنامه تلویزیونی را پیاده سازی کنند تا نتایج جستجو برای درخواست های جستجوی جهانی را شامل شود تا از بهترین تجربه کاربر اطمینان حاصل شود. Live TV یک اجرای را ارائه می دهد (ببینید که نتایج ورودی های شخص ثالث (برای سازگاری پلتفرم) و همچنین ورودی های داخلی را ارائه می دهد.

جابجایی زمان

برای دستگاه های موجود در Android 6.0 و بالاتر ، برنامه تلویزیون باید از Android Framework Time Shifing API پشتیبانی کند. علاوه بر این ، تولید کنندگان باید کنترل های پخش را در برنامه تلویزیونی اجرا کنند که به کاربران امکان مکث ، رزومه ، عقب و سریع را می دهد.

برای ورودی های تلویزیونی که از تغییر زمان پشتیبانی می کنند ، برنامه تلویزیونی نیاز به نمایش کنترل پخش دارد.

کنترل های پخش
شکل 15 کنترل پخش

دستگاه DVR

برای دستگاه های موجود در Android 7.0 و بالاتر ، برنامه تلویزیونی باید از API های ضبط تلویزیون Android Framework پشتیبانی کند تا برنامه های ضبط شده را پشتیبانی ، لیست و بازی کند.

این امر به تولید کنندگان دستگاه اجازه می دهد تا زیر سیستم های DVR خود را به TIF وصل کنند و تلاش ادغام مورد نظر خود را برای فعال کردن یا ادغام عملکرد DVR در یک دستگاه تلویزیونی به طرز چشمگیری کاهش دهند. همچنین اشخاص ثالث را قادر می سازد سیستم های DVR پس از فروش را که می توانند به یک دستگاه تلویزیون Android وصل شوند ، ارائه دهند.

علاوه بر ضبط محتوای زنده ، برنامه تلویزیونی نیز درگیری منابع را بر عهده دارد. به عنوان مثال ، اگر دستگاه دارای دو تیونر باشد ، می تواند دو برنامه را همزمان ضبط کند. اگر کاربر بخواهد سه مورد را ضبط کند ، برنامه تلویزیونی باید درگیری را انجام دهد و باید یک اعلان را انجام دهد یا درخواست کند که کاربر در اولویت این درخواست ها قرار بگیرد.

برنامه های تلویزیونی همچنین می توانند منطق پیچیده تری مانند پرسیدن از کاربر را اجرا کنند که آیا می خواهند هنگام درخواست ضبط یک قسمت ، تمام قسمت های آینده را در یک سری ضبط کنند.

نمودار زیر را برای مشاهده در مورد اجرای DVR احتمالی در Android TV مشاهده کنید.

ضبط ویدیوی دیجیتال در تلویزیون اندرویدی
شکل 16. ضبط ویدیوی دیجیتال در تلویزیون اندرویدی

  1. سرویس ورودی تلویزیون به برنامه تلویزیون می گوید که چه تعداد تیونر در دسترس است تا برنامه تلویزیونی بتواند درگیری منابع احتمالی را برطرف کند.
  2. برنامه تلویزیونی برای ضبط یک برنامه تلویزیونی یک درخواست مبتنی بر کاربر دریافت می کند.
  3. برنامه تلویزیونی برنامه ضبط را در پایگاه داده داخلی خود ذخیره می کند.
  4. هنگامی که زمان ضبط است ، برنامه تلویزیونی درخواستی را برای تنظیم کانال مرتبط با ضبط ارسال می کند.
  5. سرویس ورودی تلویزیون این درخواست را دریافت می کند ، پاسخ می دهد که آیا منابع مناسبی وجود دارد یا خیر.
  6. سپس برنامه تلویزیونی درخواستی را برای شروع ضبط به مدیر ورودی تلویزیون ارسال می کند.
  7. سرویس ورودی تلویزیون این درخواست را دریافت می کند و ضبط را شروع می کند.
  8. سرویس ورودی تلویزیون داده های ویدیویی واقعی را در ذخیره سازی خود ذخیره می کند ، که می تواند ذخیره خارجی یا ذخیره ابری باشد.
  9. هنگامی که وقت آن رسیده است که ضبط را به پایان برساند ، برنامه تلویزیون درخواست توقف ضبط را به مدیر ورودی تلویزیون منتقل می کند.
  10. هنگامی که سرویس ورودی تلویزیون درخواست را دریافت کرد ، ضبط را متوقف می کند و ابرداده مرتبط با آن را به ارائه دهنده تلویزیون اضافه می کند تا برنامه تلویزیون بتواند در صورت درخواست ضبط را به کاربران نشان دهد.

برای اطلاعات بیشتر در مورد اجرای ویژگی های ضبط در سرویس ورودی تلویزیون ، به این مقاله ضبط تلویزیون مراجعه کنید.

منابع مفید

  • Android CDD و API های توسعه دهنده مستند منابع قطعی هستند.
  • تأیید کننده CTS API ها را به عنوان بخشی از برنامه تست سازگاری تمرین می کند. اجرای این کار در برابر تلویزیون زنده ممکن است یک روش مفید برای دیدن EPG ، جستجو ، کنترل والدین و سایر الزامات در زمینه ورودی های شخص ثالث باشد.
  • به تعریف خدمات ورودی تلویزیون خود برای انتظارات توسعه دهنده در این زمینه مراجعه کنید.

کنترل والدین

کنترل والدین به یک کاربر اجازه می دهد تا کانال ها و برنامه های ناخواسته را مسدود کند ، اما با وارد کردن کد پین ، بلوک را دور بزنید.

مسئولیت عملکرد کنترل والدین در بین برنامه تلویزیونی ، سرویس ورودی تلویزیون ، ارائه دهنده تلویزیون و ورودی تلویزیون به اشتراک گذاشته می شود.

کنترل والدین اجباری است و توسط تأیید کننده CTS پوشانده شده است.

تعدادی از کشورها سیستم های رتبه بندی را تعریف کرده اند که ورودی های تلویزیون می توانند از طریق API TVContentrating از آن استفاده کنند. علاوه بر این ، ورودی های تلویزیون می توانند سیستم های رتبه بندی سفارشی خود را مطابق با آزمایش تأیید کننده CTS ، که رتبه "جعلی" را معرفی می کند ، ثبت کنند. برای کشورهایی که یک سیستم رتبه بندی استاندارد وجود دارد ، از تولید کنندگان دستگاه ها تشویق می شوند که چارچوب ورودی تلویزیون را با هر مکانیزم دیگری که ممکن است شامل شود ، ترکیب کنند.

تهیه کننده تلویزیون

هر ردیف کانال دارای یک قسمت COLUMN_LOCKED است که برای قفل کانال های خاص از مشاهده بدون وارد کردن کد پین استفاده می شود. برنامه Program COLUMN_CONTENT_RATING برای نمایش در نظر گرفته شده است و برای اجرای کنترل والدین استفاده نمی شود.

مدیر ورودی تلویزیون

مدیر ورودی تلویزیون هر TvContentRating مسدود شده را ذخیره می کند و به isRatingBlocked() پاسخ می دهد تا توصیه کند که آیا محتوای دارای رتبه داده شده باید مسدود شود.

ورودی تلویزیون

ورودی تلویزیون بررسی می کند که آیا محتوای فعلی باید با فراخوانی isRatingBlocked() در مدیر ورودی تلویزیون مسدود شود ، هنگامی که رتبه بندی محتوای نمایش داده شده تغییر کرده است (در برنامه یا تغییر کانال) یا تنظیمات کنترل والدین تغییر کرده است (در ACTION_BLOCKED_RATINGS_CHANGED و ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ). اگر محتوا باید مسدود شود ، ورودی تلویزیون صوتی و تصویری را غیرفعال می کند و به برنامه تلویزیونی اطلاع می دهد که محتوای فعلی با تماس با notifyContentBlocked(TvContentRating) مسدود می شود. اگر محتوا نباید مسدود شود ، ورودی تلویزیون صوتی و تصویری را قادر می سازد و به برنامه تلویزیون اطلاع می دهد ، محتوای فعلی با فراخوانی notifyContentAllowed() مجاز است.

برنامه تلویزیون

برای احترام به API های کنترل والدین ، ​​و بنابراین ایجاد یک بستر سازگار ، برنامه سیستم تلویزیون باید راهی را برای کاربران فراهم کند تا بتوانند کنترل والدین را مدیریت کنند ، از جمله برای هر رتبه بندی سفارشی که توسط برنامه های خاص ثبت شده است.

برنامه تلویزیونی هنگامی که توسط یک ورودی تلویزیون به آن اطلاع داده می شود که محتوای فعلی مسدود شده یا هنگامی که کاربر سعی در مشاهده یک کانال مسدود شده دارد ، یک UI کد پین را نشان می دهد.

برنامه تلویزیونی تنظیمات کنترل والدین را مستقیماً ذخیره نمی کند. هنگامی که کاربر تنظیمات کنترل والدین را تغییر می دهد ، هر TvContentRating مسدود شده توسط مدیر ورودی تلویزیون ذخیره می شود و کانال های مسدود شده توسط ارائه دهنده تلویزیون ذخیره می شوند.

برنامه تلویزیونی برای تغییر تنظیمات کنترل والدین باید مجوز android.permission.MODIFY_PARENTAL_CONTROLS را اعلام کند.

تولید کنندگان دستگاه به:

  • تست کنترل های والدین را در مقابل برنامه های تلویزیونی زنده مرجع برای نشان دادن الزامات سازگاری انجام دهید.
  • از برنامه Live TV به عنوان مرجع برای برنامه تلویزیونی خود استفاده کنید: به طور خاص به ContentRatingsManager و RatingsYstemSfragment Source و نحوه برخورد آنها با رتبه بندی های سفارشی مراجعه کنید.

HDMI-CEC

HDMI-CEC به یک دستگاه اجازه می دهد تا دیگری را کنترل کند ، از این طریق یک از راه دور واحد را قادر می سازد تا چندین لوازم را در یک سینمای خانگی کنترل کند. این دستگاه توسط Android TV برای سرعت بخشیدن به تنظیم و امکان کنترل دوردست بر ورودی های مختلف تلویزیون از طریق برنامه تلویزیون مرکزی استفاده می شود. به عنوان مثال ، ممکن است ورودی ها ، دستگاه های قدرت به بالا یا پایین و موارد دیگر را تغییر دهد.

Android TIF HDMI-CEC را به عنوان سرویس کنترل HDMI پیاده سازی می کند به طوری که تولید کنندگان دستگاه صرفاً نیاز به توسعه درایورهای سطح پایین دارند که با Android TV HAL سبک وزن تعامل دارند و از منطق پیچیده تری برخوردار هستند. در ارائه یک اجرای استاندارد ، اندروید به دنبال کاهش مسائل سازگاری با کاهش پیاده سازی های پراکنده و پشتیبانی از ویژگی های انتخابی است. سرویس کنترل HDMI از خدمات اندرویدی موجود ، از جمله ورودی و قدرت استفاده می کند.

این بدان معناست که پیاده سازی های موجود HDMI-CEC نیاز به طراحی مجدد برای تعامل با Android TIF دارند. ما توصیه می کنیم که پلت فرم سخت افزار حاوی ریزپردازنده برای دریافت CEC Power On و سایر دستورات باشد.

ادغام CEC در تلویزیون اندرویدی
شکل 17 ادغام CEC در تلویزیون اندرویدی

  1. اتوبوس CEC یک دستور از منبع فعال در حال حاضر دریافت می کند تا به منبع دیگری تغییر یابد.
  2. راننده فرمان را به HDMI-CEC HAL منتقل می کند.
  3. HAL به همه ActiveSourceChangeListeners اطلاع می دهد.
  4. سرویس کنترل HDMI از تغییر منبع از طریق ActiveSourceChangeListener مطلع می شود.
  5. سرویس مدیر ورودی تلویزیون قصد دارد برنامه تلویزیون را تغییر دهد.
  6. برنامه تلویزیونی سپس یک جلسه مدیر ورودی تلویزیون ایجاد می کند تا ورودی تلویزیون به آن تغییر یابد و در آن جلسه setMain صدا کند.
  7. جلسه مدیر ورودی تلویزیون این اطلاعات را به ورودی تلویزیون HDMI منتقل می کند.
  8. ورودی تلویزیون HDMI برای تنظیم سطح باند جانبی درخواست می کند.
  9. سرویس مدیر ورودی تلویزیون در هنگام تنظیم سطح ، یک فرمان کنترل مسیریابی مربوطه را به سرویس کنترل HDMI باز می گرداند.

دستورالعمل های ادغام تلویزیون

برنامه پخش

از آنجا که هر کشور نیازهای خاص پخش (MHEG ، TeleText ، HBBTV و موارد دیگر) را پخش کرده است ، انتظار می رود تولید کنندگان راه حل های خاص خود را برای برنامه پخش ارائه دهند ، به عنوان مثال:

  • MHEG: پشته بومی
  • teletext: پشته بومی
  • HBBTV: راه حل HBBTV از نرم افزار VEWD

در نسخه Android L ، Android TV انتظار دارد که تولید کنندگان دستگاه از یکپارچه سازنده سیستم یا راه حل های Android برای پشته های تلویزیونی منطقه ای استفاده کنند ، سطح را به پشته های نرم افزار تلویزیون منتقل کنند یا کد کلید لازم را برای تعامل با پشته های میراث منتقل کنند.

در اینجا نحوه تعامل برنامه پخش و برنامه تلویزیونی آورده شده است:

  1. برنامه تلویزیونی در حال تمرکز است و تمام کلیدها را دریافت می کند.
  2. برنامه تلویزیونی کلیدها (به عنوان مثال دکمه قرمز) را به دستگاه ورودی تلویزیون منتقل می کند.
  3. دستگاه ورودی تلویزیون در داخل با میراث تلویزیون پشته ادغام می شود.
  4. در هنگام دریافت کد کلید فعال سازی (به عنوان مثال دکمه قرمز) ، دستگاه ورودی تلویزیون برنامه های پخش را فعال می کند.
  5. یک برنامه پخش در برنامه تلویزیونی تمرکز می کند و اقدامات کاربر را انجام می دهد.

برای جستجوی صوتی/توصیه ، برنامه پخش ممکن است از جستجوی برنامه در جستجوی صوتی پشتیبانی کند.