
Android TV Input Framework (TIF) מפשט את ההעברה של תוכן בשידור חי ל-Android TV. Android TIF מספק ממשק API סטנדרטי ליצרנים, שמאפשר להם ליצור מודולים של קלט לצורך בקרה על Android TV, ומאפשר חיפוש של טלוויזיה בשידור חי והמלצות באמצעות מטא-נתונים שפורסמו על ידי TV Input.
המטרה של המסגרת היא לא להטמיע תקני טלוויזיה או דרישות אזוריות, אלא להקל על יצרני המכשירים לעמוד בתקני השידור של הטלוויזיה הדיגיטלית באזורים השונים בלי צורך בהטמעה מחדש. המסמכים שבקטע הזה יכולים להיות שימושיים גם למפתחי אפליקציות של צד שלישי שרוצים ליצור מקורות קלט מותאמים אישית לטלוויזיה.
רכיבים
ההטמעה של Android TV Input Framework כוללת מנהל קלט טלוויזיה. ה-TIF פועל עם אפליקציית הטלוויזיה, אפליקציית מערכת שלא ניתן להחליף באפליקציה של צד שלישי, כדי לגשת לערוצים מובנים ולערוצים של ממיר IP. אפליקציית הטלוויזיה מתקשרת עם מודולים של קלט טלוויזיה שסופקו על ידי יצרן המכשיר או גורמים אחרים דרך מנהל הקלט של הטלוויזיה.
מסגרת הקלט של הטלוויזיה מורכבת מ:
- ספק טלוויזיה (
com.android.providers.tv.TvProvider
): מסד נתונים של ערוצים, תוכניות והרשאות משויכות - אפליקציית הטלוויזיה (
com.android.tv.TvActivity
): האפליקציה שמטפלת באינטראקציה של המשתמש - מנהל מקורות הקלט בטלוויזיה (
android.media.tv.TvInputManager
): מאפשר למקורות הקלט בטלוויזיה לתקשר עם אפליקציית הטלוויזיה - קלט טלוויזיה: אפליקציה שמייצגת יציאות קלט וטיונר פיזיים או וירטואליים
- TV Input HAL (מודול
tv_input
): הגדרת חומרה שמאפשרת למקורות קלט של טלוויזיה במערכת לגשת לחומרה ספציפית לטלוויזיה כשהיא מיושמת - אמצעי בקרת הורים: הטכנולוגיה שמאפשרת לחסום ערוצים ותוכניות
- HDMI-CEC: הטכנולוגיה שמאפשרת לשלוט מרחוק במכשירים שונים באמצעות HDMI
- Tuner Framework: מסגרת לקלט טלוויזיה עם טיונר מובנה
- MediaCas: מסגרת לגישה מותנית
- Tuner Resource Manager: שירות לניהול משאבי החומרה של קלט הטלוויזיה, MediaCas וקלט של טיונר מובנה
בהמשך מוסבר בהרחבה על הרכיבים האלה. בתרשים הבא אפשר לראות תצוגה מפורטת של הארכיטקטורה של Android TV Input Framework.

קצב הזרימה
כך פועלת הארכיטקטורה:
- המשתמש רואה את אפליקציית הטלוויזיה ומקיים איתה אינטראקציה. זוהי אפליקציית מערכת שלא ניתן להחליף באפליקציה של צד שלישי.
- באפליקציית הטלוויזיה מוצג תוכן ה-AV מהכניסה לטלוויזיה.
- אפליקציית הטלוויזיה לא יכולה לתקשר ישירות עם מקורות הקלט של הטלוויזיה. מנהל מקורות הקלט בטלוויזיה מזהה את המצב של מקורות הקלט בטלוויזיה עבור אפליקציית הטלוויזיה. פרטים נוספים על המגבלות האלה מופיעים בקטע מנהל מקורות הקלט בטלוויזיה בהמשך.
הרשאות
- רק ל-
signatureOrSystem
TV Inputs ול-TV App יש גישה מלאה למסד הנתונים של ספק הטלוויזיה, והם יכולים לקבל אירועי KeyEvent. - רק מקורות קלט של טלוויזיה במערכת יכולים לגשת ל-HAL של קלט הטלוויזיה דרך השירות של מנהל קלט הטלוויזיה. הגישה לקלטים של טלוויזיות מתבצעת באופן פרטני דרך סשנים של מנהל הקלט בטלוויזיה.
- למקורות טלוויזיה של צד שלישי יש גישה נעולה לחבילה למסד הנתונים של ספק הטלוויזיה, והם יכולים לקרוא או לכתוב רק בשורות התאמה של חבילות.
- כניסות טלוויזיה של צד שלישי יכולות להציג תוכן משלהם או תוכן מכניסות טלוויזיה של יצרן המכשיר עם העברת סיגנל ללא שינוי, כמו HDMI1. הם לא יכולים להציג תוכן ממקורות טלוויזיה שלא תומכים ב-passthrough, כמו טיונר מובנה או טיונר IPTV.
- הרשאה
TV_INPUT_HARDWARE
לאפליקציית קלט טלוויזיה לחומרה, שמאותתת לשירות ניהול קלט הטלוויזיה להודיע לשירות קלט הטלוויזיה בזמן האתחול, כדי שהוא יקרא לשירות ניהול קלט הטלוויזיה וישלים את הוספת מקורות הקלט של הטלוויזיה. ההרשאה הזו מאפשרת לאפליקציית קלט של טלוויזיה לחומרה לתמוך בכמה מקורות קלט של טלוויזיה לכל שירות קלט של טלוויזיה, וגם להוסיף ולהסיר באופן דינמי את מקורות הקלט של הטלוויזיה הנתמכים.
ספק טלוויזיה
במסד הנתונים של ספק הטלוויזיה נשמרים הערוצים והתוכניות מהכניסות לטלוויזיה. ספק הטלוויזיה גם מפרסם ומנהל את ההרשאות המשויכות, כך שרק מקורות הנתונים של הטלוויזיה יוכלו לראות את הרשומות שלהם. לדוגמה, מקור קלט טלוויזיה ספציפי יכול לראות רק את הערוצים והתוכניות שהוא סיפק, אסור לו לגשת לערוצים ולתוכניות של מקורות קלט טלוויזיה אחרים.
ספק הטלוויזיה ממפה באופן פנימי את 'ז'אנר השידור' ל'ז'אנר הקנוני'. מקורות הקלט של הטלוויזיה אחראים לאכלוס השדה 'ז'אנר שידור' בערך שמופיע בתקן השידור הבסיסי, והשדה 'ז'אנר קנוני' יאוכלס באופן אוטומטי בז'אנר המשויך הנכון מ-android.provider.TvContract.Genres
. לדוגמה, כשמדובר בסטנדרט שידור ATSC A/65 ובתוכנית עם ז'אנר 0x25 (כלומר 'ספורט'), הקלט של הטלוויזיה יאכלס את השדה 'ז'אנר השידור' במחרוזת 'ספורט', וספק הטלוויזיה יאכלס את השדה 'ז'אנר קנוני' בערך הממופה android.provider.TvContract.Genres.SPORTS
.
בתרשים הבא מוצגת תצוגה מפורטת של ספק הטלוויזיה.

רק אפליקציות במחיצה המורשית של המערכת יכולות לקרוא את כל מסד הנתונים של ספק הטלוויזיה.
מקורות קלט של טלוויזיה עם העברה ישירה לא שומרים ערוצים ותוכניות.
בנוסף לשדות הרגילים של ערוצים ותוכניות, מסד הנתונים של ספק הטלוויזיה כולל גם שדה מסוג 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. למקור קלט בטלוויזיה יכולה להיות גישה רק למידע שהוא כתב, והוא מופרד מהמידע שמסופק על ידי מקורות קלט אחרים בטלוויזיה. - הרשאות קריאה וכתיבה דרך AndroidManifest.xml (נדרשת הסכמת המשתמש) כדי לקבוע אילו ערוצים זמינים.
- רק אפליקציות
signatureOrSystem
יכולות לקבל את ההרשאהACCESS_ALL_EPG_DATA
לגשת לכל מסד הנתונים.
מנהל הקלט בטלוויזיה
מנהל הקלט של הטלוויזיה מספק ממשק API מרכזי למערכת של Android TV Input Framework. הוא מתווך את האינטראקציה בין האפליקציות לבין מקורות הקלט של הטלוויזיה, ומספק פונקציונליות של אמצעי בקרת הורים. צריך ליצור סשנים של TV Input Manager אחד-על-אחד עם מקורות קלט של טלוויזיה. מנהל מקורות הקלט לטלוויזיה מאפשר גישה למקורות קלט לטלוויזיה מותקנים, כדי שאפליקציות יוכלו:
- הצגת רשימה של מקורות הקלט בטלוויזיה ובדיקת הסטטוס שלהם
- יצירה של סשנים וניהול של המאזינים
בסשנים, אפליקציית הטלוויזיה עשויה לכוונן קלט טלוויזיה רק למזהי URI שהיא הוסיפה למסד הנתונים של ספק הטלוויזיה, מלבד קלט טלוויזיה של העברה ישירה שאפשר לכוונן באמצעות TvContract.buildChannelUriForPassthroughInput()
.
יכול להיות שגם לקלט בטלוויזיה תהיה הגדרת עוצמת קול. לאפליקציות של מקורות קלט לטלוויזיה שסופקו ונחתמו על ידי יצרן המכשיר (אפליקציות חתימה) או לאפליקציות אחרות שמותקנות במחיצה של המערכת תהיה גישה לכל מסד הנתונים של ספק הטלוויזיה. אפשר להשתמש בגישה הזו כדי ליצור אפליקציות שיעזרו לכם לעיין ולחפש בכל הערוצים והתוכניות הזמינים בטלוויזיה.
אפליקציה יכולה ליצור ולרשום TvInputCallback
עם android.media.tv.TvInputManager
כדי שיתבצע קריאה חוזרת כשהסטטוס של TV Input ישתנה, או כשיתווסף או יוסר TV Input. לדוגמה, אפליקציה לטלוויזיה יכולה להגיב כשקלט של טלוויזיה מנותק, ולהציג אותו כמנותק ולמנוע את הבחירה שלו.
מנהל מקורות הקלט של הטלוויזיה מספק שירותי עיצוב נתונים (abstraction) לתקשורת בין אפליקציית הטלוויזיה לבין מקורות הקלט של הטלוויזיה. הממשק הסטנדרטי של מנהל קלט הטלוויזיה וקלט הטלוויזיה מאפשר למספר יצרני מכשירים ליצור אפליקציות טלוויזיה משלהם, תוך עזרה לכל מקורות הקלט של טלוויזיות של צד שלישי לפעול בכל האפליקציות לטלוויזיה.
מקורות קלט בטלוויזיה
מקורות קלט לטלוויזיה הן אפליקציות ל-Android במובן שהן כוללות קובץ AndroidManifest.xml ושמותקנות (דרך Play, מותקנות מראש או מותקנות דרך צד שלישי). Android TV תומך באפליקציות מערכת מותקנות מראש, באפליקציות שחתומות על ידי יצרן המכשיר ובכניסות טלוויזיה של צד שלישי.
יש מקורות קלט, כמו קלט HDMI או קלט של מקלט מובנה, שרק היצרן יכול לספק כי הם מתקשרים ישירות עם החומרה הבסיסית. שירותים אחרים, כמו IPTV, שינוי מיקום ו-STB חיצוני, יכולים להיות זמינים כקובצי APK של צד שלישי ב-Google Play Store. אחרי ההורדה וההתקנה, תוכלו לבחור את הקלט החדש באפליקציית הטלוויזיה.
דוגמה לקלט של העברה דרך

בדוגמה הזו, הקלט של הטלוויזיה שסופק על ידי יצרן המכשיר מהימן, ויש לו גישה מלאה לספק הטלוויזיה. כקלט טלוויזיה של העברה דרך, הוא לא רושם ערוצים או תוכניות אצל ספק הטלוויזיה. כדי לקבל את ה-URI שמשמש להפניה לקלט של העברה דרך, משתמשים ב-method השימושי android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
.
אפליקציית הטלוויזיה מתקשרת עם מנהל הקלט של הטלוויזיה כדי להגיע ליציאת הטלוויזיה מסוג HDMI.
דוגמה לטיונר מובנה

בדוגמה הזו, הקלט של הטלוויזיה המובנית מספק את ה-Tuner שסופק על ידי יצרן המכשיר, והוא מהימן ויש לו גישה מלאה לספק הטלוויזיה.
דוגמה לקלט של צד שלישי

בדוגמה הזו, קלט הטלוויזיה החיצוני של STB מסופק על ידי צד שלישי. מכיוון שכניסת הטלוויזיה הזו לא יכולה לגשת ישירות לפיד הווידאו שמגיע דרך ה-HDMI, היא צריכה לעבור דרך מנהל קלט הטלוויזיה ולהשתמש בכניסת הטלוויזיה ל-HDMI שסופקו על ידי יצרן המכשיר.
באמצעות מנהל הקלט של הטלוויזיה, קלט הטלוויזיה החיצוני של STB יכול לדבר עם קלט הטלוויזיה של HDMI ולבקש ממנו להציג את הסרטון ב-HDMI1. כך שקלט הטלוויזיה של STB יכול לשלוט בטלוויזיה, בזמן שקלט הטלוויזיה של HDMI שסופק על ידי היצרן מעבד את הסרטון.
דוגמה ל'תמונה בתוך תמונה' (PIP)

בתרשים שלמעלה מוצג איך לחצנים בשלט רחוק מועברים לקלט טלוויזיה ספציפי כדי להציג תמונה בתוך תמונה (PIP). לחיצות הלחצנים האלה מפורשות על ידי מנהל החומרה שסופק על ידי יצרן המכשיר, שממיר את קודי הסריקה של החומרה למפתחות של Android ומעביר אותם לצינור עיבוד הנתונים של הקלט הסטנדרטי של Android. הפונקציות InputReader
ו-InputDispatcher
פועלות כKeyEvents.
האירועים האלה מפעילים אירועים באפליקציית הטלוויזיה, אם היא במוקד.
רק מקורות קלט של טלוויזיה במערכת יכולים לקבל את ההודעה InputEvents
, ורק אם יש להם את הרשאת המערכת RECEIVE_INPUT_EVENT
.
ה-TV Input אחראי לקבוע אילו InputEvents יילקחו בחשבון, וצריך לאפשר לאפליקציית הטלוויזיה לטפל במפתחות שהיא לא צריכה להשתמש בהם.
אפליקציית הטלוויזיה אחראית לדעת איזה קלט טלוויזיה פעיל במערכת, כלומר זה שנבחר על ידי המשתמש, ולסנן את האירועים הנכנסים מסוג KeyEvents
ולנתב אותם לסשן הנכון של מנהל קלט הטלוויזיה, באמצעות קריאה ל-dispatchInputEvent()
כדי להעביר את האירוע לקלט הטלוויזיה המשויך.
דוגמה לקלט MHEG-5
בתרשים הבא מוצגת תצוגה מפורטת יותר של האופן שבו הבקשות של KeyEvents
מנותבות דרך Android TIF.

התמונה ממחישה את התהליך של אפליקציה עם לחצן אדום, ששימוש בה נפוץ באירופה כדי לאפשר למשתמשים לגשת לאפליקציות אינטראקטיביות בטלוויזיות שלהם. אפשר להעביר אפליקציה באמצעות מקור הנתונים הזה. לחיצה על הלחצן מאפשרת למשתמשים ליצור אינטראקציה עם אפליקציות השידור האלה. לדוגמה, אפשר להשתמש באפליקציות השידור האלה כדי לגשת לדפי אינטרנט קשורים או לתוצאות של משחקי ספורט.
בקטע אפליקציית שידור מוסבר איך אפליקציות השידור פועלות עם אפליקציית הטלוויזיה.
בדוגמה הזו:
- אפליקציית הטלוויזיה נמצאת במוקד ומקבלת את כל המקשים.
KeyEvents
(למשל, הלחצן האדום) מועבר לקלט הטלוויזיה הפעיל בתורInputEvents.
- המערכת של יציאת הטלוויזיה משתלבת עם מחסנית MHEG-5 ויש לה את הרשאת המערכת
RECEIVE_INPUT_EVENT
. - כשמקבלים את קוד המפתח להפעלה (למשל, לחצן אדום), קלט הטלוויזיה מפעיל את אפליקציית השידור.
- קלט הטלוויזיה צורך
KeyEvents
בתורInputEvents
ואפליקציית השידור היא מוקד העניין ומטפלת ב-InputEvents
עד לסגירה שלה.
הערה: מקורות קלט של טלוויזיות של צד שלישי אף פעם לא מקבלים מפתחות.
TV Input HAL
ה-HAL של קלט הטלוויזיה עוזר בפיתוח של מקורות קלט לטלוויזיה כדי לגשת לחומרה ספציפית לטלוויזיה.
בדומה ל-HALs אחרים של Android, ה-HAL של קלט הטלוויזיה (tv_input
) זמין בעץ המקור של AOSP, והיצרן מפתח את ההטמעה שלו.
הערה: החל מגרסה 14 של Android, ממשק ה-HAL של קלט הטלוויזיה מוגדר באמצעות AIDL.
אפליקציית הטלוויזיה
אפליקציית הטלוויזיה של המערכת מציגה למשתמשים תוכן של טלוויזיה בשידור חי. אפליקציית טלוויזיה לדוגמה (Live TV) מסופקת לצד פלטפורמת Android, ויצרני המכשירים יכולים להשתמש בה כפי שהיא, להתאים אותה אישית, להרחיב אותה או להחליף אותה. קוד המקור זמין בפרויקט Android Open Source Project, והמאמר Reference TV app יעזור לכם להתחיל לעבוד איתו.
יצרני המכשירים יכולים להרחיב את אפליקציות הטלוויזיה שלהם כדי להטמיע תכונות ספציפיות למכשיר או למדינה, אבל זה לא נכלל בהיקף של TIF או של אפליקציית הטלוויזיה לדוגמה.
לפחות, אפליקציית הטלוויזיה של המערכת צריכה לטפל במשימות הבאות:
הגדרה ותצורה
- זיהוי אוטומטי של מקורות קלט בטלוויזיה
- לאפשר ל-TV Inputs להתחיל בהגדרת הערוצים
- שליטה בהגדרות של אמצעי בקרת ההורים
- עריכת הערוצים
הצגה
- גישה לכל ערוצי הטלוויזיה וניווט ביניהם
- גישה לסרגל המידע על תוכניות הטלוויזיה
- הצגת נתונים של מדריך תוכניות אלקטרוני (EPG)
- תמיכה במספר טראקים של אודיו וכתוביות
- מתן קוד אימות לאמצעי בקרת הורים
- לאפשר שכבת-על של ממשק המשתמש של קלט הטלוויזיה לתקן טלוויזיה (HbbTV וכו')
- איך מאכלסים תוצאות חיפוש של ערוצי טלוויזיה ותוכניות
- הצגת כרטיסים לקישור אפליקציות
- תמיכה ב-APIs לשינוי זמן
- טיפול בפונקציונליות של DVR ותמיכה בממשקי API להקלטת טלוויזיה
קבוצת התכונות הזו תגדל בהתאם לגרסאות Android חדשות שבהן ממשקי ה-TIF API של הפלטפורמה מורחבים. CTS Verifier מספק את הכיסוי של בדיקות התאימות.
תמיכה בשיטות קלט של טלוויזיות של צד שלישי
Android TV מספק ממשקי API למפתחים עבור מקורות קלט של טלוויזיה של צד שלישי, ומאפשר לאפליקציות מותקנות לספק ערוצי תוכנה לחוויית הצפייה בטלוויזיה בשידור חי. כדי להבטיח הטמעה תואמת במכשירי Android, לאפליקציית הטלוויזיה של המערכת יש כמה אחריויות לגבי הצגת מקורות קלט וערוצי טלוויזיה של צד שלישי למשתמש. אפליקציית העזרה של הטלוויזיה בשידור חי מספקת הטמעה תואמת. אם מחליפים את אפליקציית הטלוויזיה של המערכת, יצרני המכשירים צריכים לוודא שהאפליקציות שלהם מספקות תאימות דומה, כדי לעמוד בציפיות של המפתחים בכל מכשירי Android TV.
אפליקציית הטלוויזיה של המערכת חייבת להציג מקורות קלט של צד שלישי לצד שירות הטלוויזיה בשידור חי שמוגדר כברירת מחדל במכשיר. היתרון של ממשקי ה-API למפתחים הוא שהמשתמשים יוכלו למצוא ערוצים (אחרי ההתקנה) בחוויית הצפייה הרגילה בטלוויזיה.
מותר להציג הבדלים חזותיים בין ערוצים מובנים לערוצים של צד שלישי, כפי שמוגדר בקטע 'אפליקציית טלוויזיה' במסמך Android CDD.
בקטעים הבאים מוסבר איך האפליקציה לטלוויזיה בשידור חי עומדת בדרישות של CDD.
הגדרת ערוץ חדש
כדי להוסיף מקורות קלט או ערוצים חדשים של צד שלישי, המשתמש צריך למצוא ולהתקין מקורות קלט לטלוויזיה מחנות אפליקציות, כמו Google Play.
חלק ממקורות הקלט של טלוויזיה של צד שלישי מוסיפים ערוצים באופן אוטומטי למסד הנתונים של TvProvider. עם זאת, רוב האפליקציות יציגו פעילות הגדרה כדי לאפשר למשתמש להגדיר את הערוצים שלו, לספק פרטי כניסה ולבצע פעולות אחרות. אפליקציית הטלוויזיה של המערכת צריכה לוודא שהמשתמש יכול להפעיל את פעילות ההגדרה הזו. לכן, ה-CDD מחייב שהקלט של צד שלישי יהיה פעולות ניווט מינימליות מחוץ לאפליקציית הטלוויזיה הראשית.
באפליקציית Live TV לדוגמה מופיע התפריט 'מקורות ערוצים', שמאפשר לגשת למקורות הקלט.




בנוסף, אחרי שתתקינו TvInput חדש, יוצג כרטיס התראה בחלק העליון של תפריט אפליקציית הטלוויזיה, כדי להעביר את המשתמש ישירות לתהליך ההגדרה:

אם המשתמש מבצע פעולה דרך ההתראה, הוא יכול לבחור להגדיר את המקורות שלו, כפי שמתואר באיור 10.
במאמר הגדרת שירות הקלט של הטלוויזיה מפורטות הציפיות שלנו למפתחים בנושא הזה.
התאמה אישית של רשימת הערוצים
יצרני המכשירים עשויים לספק ממשק משתמש להסתרת ערוצים מסוימים ולניהול של EPGs משלהם. האפשרות הזו כלולה בחבילת 'טלוויזיה בשידור חי'.


EPG
מפתחי קלט של צד שלישי צריכים להיות בטוחים שהמשתמשים יכולים לנווט בקלות לערוצים שלהם במהלך השימוש הכללי, בכל מכשירי Android TV התואמים.
ערוצים ממקורות קלט של צד שלישי חייבים להופיע כחלק מה-EPG הרגיל של חוויית הצפייה בשידור חי במכשיר. אפשר להשתמש בהפרדה חזותית או בקטגוריות נפרדות לערוצי צד שלישי (ראו את הקטע 'אפליקציית טלוויזיה' במסמך Android CDD). העיקר הוא שהמשתמשים יוכלו למצוא את הערוצים שהם התקינו.
חיפוש
כדי להבטיח את חוויית המשתמש הטובה ביותר, היצרנים חייבים להטמיע את אפליקציית הטלוויזיה כך שתכלול תוצאות חיפוש לבקשות חיפוש גלובליות. שירות הטלוויזיה בשידור חי מספק הטמעה ( שמספקת תוצאות מזנות של צד שלישי (חובה לצורך תאימות לפלטפורמה) וגם מזנות מובנים.
שינוי מועד השידור
במכשירים עם Android מגרסה 6.0 ואילך, אפליקציית הטלוויזיה חייבת לתמוך ב- time shifting APIs של Android framework. בנוסף, היצרנים חייבים להטמיע באפליקציית הטלוויזיה אמצעי בקרה להפעלה, שמאפשרים למשתמשים להשהות, להמשיך, להריץ אחורה ולהריץ קדימה את ההפעלה.
במכשירי טלוויזיה עם מקורות קלט שתומכים בשינוי המיקום בזמן, באפליקציית הטלוויזיה צריכים להופיע רכיבי UI להפעלה.

DVR
במכשירים עם Android 7.0 ואילך, אפליקציית הטלוויזיה צריכה לתמוך ב-TV recording APIs של Android Framework כדי לתמוך בתוכניות שהוקלטו, להציג אותן ברשימה ולהפעיל אותן.
כך יצרני המכשירים יכולים לחבר את תת-המערכות של ה-DVR ל-TIF, ולצמצם באופן משמעותי את מאמצי השילוב הנדרשים כדי להפעיל או לשלב את הפונקציונליות של ה-DVR במכשיר הטלוויזיה. היא גם מאפשרת לצדדים שלישיים לספק מערכות DVR של צד שלישי שניתן לחבר למכשיר Android TV.
בנוסף להקלטה של תוכן בשידור חי, אפליקציית הטלוויזיה מטפלת גם בהתנגשויות בין משאבים. לדוגמה, אם במכשיר יש שני מקלטי ערוצים, אפשר להקליט בו שני תוכניות בו-זמנית. אם המשתמש מבקש להקליט שלוש תוכניות, אפליקציית הטלוויזיה צריכה לטפל בבעיה ולהציג הודעה או לבקש מהמשתמש לתזמן את הבקשות האלה לפי תעדוף.
אפליקציות לטלוויזיה יכולות גם להטמיע לוגיקה מתוחכמת יותר, כמו לשאול את המשתמש אם הוא רוצה להקליט את כל הפרקים הבאים בסדרה כשמבצעים הקלטה של פרק אחד.
התרשים הבא מציג תרחיש אפשרי להטמעת DVR ב-Android TV.

- שירות קלט הטלוויזיה מודיע לאפליקציית הטלוויזיה כמה מקלטי טלוויזיה זמינים, כדי שאפליקציית הטלוויזיה תוכל לטפל בהתנגשויות אפשריות במשאבים.
- אפליקציית הטלוויזיה מקבלת בקשה מהמשתמש להקליט תוכנית טלוויזיה.
- לוח הזמנים של ההקלטות מאוחסן במסד הנתונים הפנימי של אפליקציית הטלוויזיה.
- כשמגיע הזמן להקליט, אפליקציית הטלוויזיה מעבירה בקשה לכוונן לערוץ שמשויך להקלטה.
- שירות הקלט של הטלוויזיה מקבל את הבקשה הזו, משיב אם יש משאבים מתאימים או לא, ומכוון לערוץ.
- לאחר מכן, אפליקציית הטלוויזיה מעבירה בקשה להתחיל את ההקלטה למנהל הקלט של הטלוויזיה.
- שירות הקלט של הטלוויזיה מקבל את הבקשה הזו ומתחיל להקליט.
- נתוני הווידאו בפועל מאוחסנים באחסון של שירות הקלט לטלוויזיה, שיכול להיות אחסון חיצוני או אחסון בענן.
- כשמגיע הזמן לסיים את ההקלטה, אפליקציית הטלוויזיה מעבירה את הבקשה להפסקת ההקלטה למנהל הקלט של הטלוויזיה.
- אחרי ששירות הקלט של הטלוויזיה מקבל את הבקשה, הוא מפסיק את ההקלטה ומוסיף את המטא-נתונים המשויכים לספק הטלוויזיה, כדי שאפליקציית הטלוויזיה תוכל להציג את ההקלטה למשתמשים כשהם מבקשים.
מידע נוסף על הטמעת תכונות הקלטה בשירות הקלטת הטלוויזיה זמין במאמר הקלטה בטלוויזיה.
משאבים שימושיים
- Android CDD וממשקי ה-API המתועדים למפתחים הם המקורות המהימנים ביותר.
- CTS Verifier מפעיל את ממשקי ה-API כחלק מתוכנית בדיקות התאימות. הרצת הבדיקה הזו בטלוויזיה בשידור חי יכולה להיות דרך שימושית לראות את הדרישות לגבי EPG, חיפוש, בקרת הורים ודרישות אחרות בהקשר של קלט של צד שלישי.
- במאמר הגדרת שירות הקלט של הטלוויזיה מפורטות הציפיות שלנו למפתחים בנושא הזה.
אמצעי בקרת הורים
אמצעי בקרת ההורים מאפשרים למשתמש לחסום ערוצים ותוכניות לא רצויים, אבל הוא יכול לעקוף את החסימה על ידי הזנת קוד אימות.
האחריות על הפונקציונליות של אמצעי בקרת ההורים מתחלקת בין אפליקציית הטלוויזיה, שירות TV Input Manager, ספק הטלוויזיה ו-TV Input.
אמצעי בקרת הורים הם חובה, והם מכוסים על ידי CTS Verifier.
במדינות מסוימות מוגדרות מערכות סיווג שאפשר להשתמש בהן ב-TV Inputs דרך TVContentRating API. בנוסף, מקורות קלט לטלוויזיה יכולים לרשום מערכות סיווג בהתאמה אישית משלהם, כפי שמוצג בבדיקה של CTS Verifier, שבה מוצג סיווג 'מזויף'. במדינות שבהן יש מערכת רגולציה סטנדרטית, יצרני המכשירים מומלצים לשלב את אמצעי בקרת ההורים של TV Input Framework עם כל מנגנון אחר שהם עשויים לכלול.
ספק טלוויזיה
בכל שורה של ערוץ יש שדה COLUMN_LOCKED
שמשמשים לנעילת ערוצים ספציפיים כדי שלא ניתן יהיה לצפות בהם בלי להזין קוד PIN. השדה COLUMN_CONTENT_RATING
של התוכנית מיועד לתצוגה ולא משמש לאכיפת בקרת הורים.
מנהל הקלט בטלוויזיה
מנהל הקלט של הטלוויזיה מאחסן כל TvContentRating
חסום ומגיב ל-isRatingBlocked()
כדי להמליץ אם צריך לחסום תוכן עם הדירוג הנתון.
קלט טלוויזיה
כשהסיווג של התוכן המוצג משתנה (במהלך שינוי של תוכנית או ערוץ) או שהגדרות בקרת ההורים משתנות (ב-ACTION_BLOCKED_RATINGS_CHANGED
וב-ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
), הטלוויזיה בודקת אם צריך לחסום את התוכן הנוכחי באמצעות קריאה ל-isRatingBlocked()
במנהל הקלט של הטלוויזיה. אם צריך לחסום את התוכן, הטלוויזיה משביתה את האודיו והווידאו ומעדכנת את אפליקציית הטלוויזיה שהתוכן הנוכחי חסום באמצעות קריאה ל-notifyContentBlocked(TvContentRating)
. אם התוכן לא צריך להיות חסום, ה-TV Input מפעיל את האודיו והווידאו ומודיע לאפליקציית הטלוויזיה שהתוכן הנוכחי מותר, באמצעות קריאה ל-notifyContentAllowed()
.
אפליקציית הטלוויזיה
כדי לפעול בהתאם לממשקי ה-API לבקרת הורים, וכדי ליצור פלטפורמה תואמת, אפליקציית הטלוויזיה של המערכת צריכה לספק למשתמשים דרך לנהל את אמצעי בקרת ההורים, כולל דירוגים מותאמים אישית שרשומים על ידי אפליקציות ספציפיות.
ממשק המשתמש של קוד האימות מוצג באפליקציית הטלוויזיה כשהיא מקבלת הודעה ממקור קלט בטלוויזיה שהתוכן הנוכחי חסום, או כשהמשתמש מנסה לצפות בערוץ חסום.
ההגדרות של אמצעי בקרת ההורים לא מאוחסנות ישירות באפליקציית הטלוויזיה. כשהמשתמש משנה את הגדרות בקרת ההורים, כל TvContentRating
חסום מאוחסן על ידי מנהל הקלט של הטלוויזיה, וערוצים חסומים מאוחסנים על ידי ספק הטלוויזיה.
אפליקציית הטלוויזיה צריכה להצהיר על ההרשאה android.permission.MODIFY_PARENTAL_CONTROLS
כדי לשנות את ההגדרות של אמצעי בקרת ההורים.
יצרני מכשירים מומלצים:
- כדי להמחיש את דרישות התאימות, כדאי לבצע את הבדיקה של אמצעי הבקרה להורים ב-CTS Verifier באפליקציית העזר Live TV.
- להשתמש באפליקציית Live TV כמקור לאפליקציית הטלוויזיה שלהם: כדאי לעיין במיוחד במקור של ContentRatingsManager ושל RatingSystemsFragment, ולראות איך הם מטפלים בדירוגים מותאמים אישית.
HDMI-CEC
בעזרת HDMI-CEC אפשר לשלוט במכשיר אחד באמצעות מכשיר אחר, וכך לשלוט במספר מכשירים בסטרימינג ביתי באמצעות שלט רחוק אחד. ה-Android TV משתמש בו כדי לזרז את ההגדרה ולאפשר שליטה מרחוק על מקורות קלט שונים בטלוויזיה דרך אפליקציית הטלוויזיה המרכזית. לדוגמה, הוא יכול להחליף מקורות קלט, להפעיל או לכבות מכשירים ועוד.
ב-Android TIF, ה-HDMI-CEC מיושם כשירות הבקרה של HDMI, כך שיצרני המכשירים צריכים רק לפתח מנהלי התקנים ברמה נמוכה שמקיימים אינטראקציה עם ה-HAL הקל של Android TV, בלי צורך בלוגיקה עסקית מורכבת יותר. כדי לספק הטמעה סטנדרטית, Android מנסה לצמצם בעיות תאימות על ידי צמצום ההטמעות המקוטעות ותמיכה מבוקרת בתכונות. שירות HDMI Control משתמש בשירותי Android הקיימים, כולל קלט וחשמל.
המשמעות היא שיהיו צורך לעצב מחדש את הטמעות ה-HDMI-CEC הקיימות כדי שיוכלו לפעול יחד עם Android TIF. מומלץ שפלטפורמת החומרה תכיל מיקרו-מעבד כדי לקבל פקודות של הפעלת CEC ופקודות אחרות.

- האוטובוס של CEC מקבל פקודה מהמקור הפעיל הנוכחי לעבור למקור אחר.
- מנהל ההתקן מעביר את הפקודה ל-HAL של HDMI-CEC.
- ה-HAL מודיע לכל
ActiveSourceChangeListeners
. - שירות הבקרה של HDMI מקבל הודעה על שינוי המקור דרך
ActiveSourceChangeListener
. - שירות TV Input Manager יוצר כוונה לאפליקציית הטלוויזיה כדי להחליף את המקור.
- לאחר מכן, אפליקציית הטלוויזיה יוצרת סשן של מנהל קלט הטלוויזיה עבור קלט הטלוויזיה שאליו עוברים, ומפעילה את
setMain
בסשן הזה. - הסשן של מנהל הקלט של הטלוויזיה מעביר את המידע הזה לקלט הטלוויזיה ב-HDMI.
- קלט הטלוויזיה של HDMI מבקש להגדיר פלטפורמה של פס צדדי.
- כשהמשתמשים מגדירים את הממשק, שירות הניהול של קלט הטלוויזיה יוצר פקודה מתאימה לבקרת ניתוב חזרה לשירות הבקרה של HDMI.
הנחיות לשילוב עם טלוויזיה
אפליקציית השידור
מאחר שלכל מדינה יש דרישות ספציפיות לשידור (MHEG, Teletext, HbbTV ועוד), היצרנים צפויים לספק פתרונות משלהם לאפליקציית השידור, למשל:
- MHEG: סטאק מקורי
- טלטקסט: סטאק מקומי
- HbbTV: פתרון HbbTV מ-Vewd Software
במהדורת Android L, יצרני המכשירים של Android TV צפויים להשתמש במשתמשי מערכות או בפתרונות Android למערכי טלוויזיה אזוריים, להעביר את הממשק למערכי תוכנה של טלוויזיה או להעביר את קוד המפתח הנדרש כדי לקיים אינטראקציה עם מערכי קוד מדור קודם.
כך מתבצעת האינטראקציה בין אפליקציית השידור לאפליקציית הטלוויזיה:
- אפליקציית הטלוויזיה נמצאת במוקד ומתקבלים בה כל המקשים.
- אפליקציית הטלוויזיה מעבירה מפתחות (למשל, לחצן אדום) למכשיר הקלט של הטלוויזיה.
- התקן הקלט בטלוויזיה משתלב באופן פנימי עם סטאק הטלוויזיה הקודם.
- כשמקבלים קוד מפתח להפעלה (למשל, לחצן אדום), מכשיר הקלט של הטלוויזיה מפעיל אפליקציות שידור.
- אפליקציית שידור מקבלת את המיקוד באפליקציית הטלוויזיה ומטפלת בפעולות של המשתמשים.
בחיפוש קולי או בהמלצות, יכול להיות שאפליקציית השידור תתמוך בחיפוש קולי בתוך האפליקציה.