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

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

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

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

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

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

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

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




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

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


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

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

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

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