מסגרת של קלט טלוויזיה

סמל HAL של Android TV

המסגרת של Android TV קלט (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.

סקירה כללית על ארכיטקטורת TIF של Android
איור 1. הארכיטקטורה של Android TV Input Framework‏ (TIF)

קצב הזרימה

כך מיושמת הארכיטקטורה:

  1. המשתמש רואה את אפליקציית הטלוויזיה ומקיים איתה אינטראקציה. זוהי אפליקציית מערכת שלא ניתן להחליף באפליקציה של צד שלישי.
  2. באפליקציית הטלוויזיה מוצג תוכן ה-AV מהכניסה לטלוויזיה.
  3. אפליקציית הטלוויזיה לא יכולה לתקשר ישירות עם מקורות הקלט של הטלוויזיה. מנהל מקורות הקלט בטלוויזיה מזהה את המצב של מקורות הקלט בטלוויזיה עבור אפליקציית הטלוויזיה. פרטים נוספים על המגבלות האלה מופיעים בקטע מנהל מקורות הקלט בטלוויזיה בהמשך.

הרשאות

  • רק ל-signatureOrSystem TV Inputs ול-TV App יש גישה מלאה למסד הנתונים של ספק הטלוויזיה, והם יכולים לקבל אירועי KeyEvent.
  • רק מקורות קלט של טלוויזיה במערכת יכולים לגשת ל-HAL של קלט הטלוויזיה דרך השירות של מנהל קלט הטלוויזיה. הגישה לקלטי הטלוויזיה מתבצעת באופן אישי דרך סשנים של מנהל קלט הטלוויזיה.
  • לכניסות טלוויזיה של צד שלישי יש גישה נעולה לחבילה למסד הנתונים של ספק הטלוויזיה, והן יכולות לקרוא/לכתוב רק לשורות חבילה תואמות.
  • מקורות קלט של צד שלישי לטלוויזיה יכולים להציג תוכן משלהם או תוכן מקלט הטלוויזיה של יצרן המכשיר, כמו HDMI1. הם לא יכולים להציג תוכן ממקורות טלוויזיה שלא תומכים ב-passthrough, כמו טיונר מובנה או טיונר IPTV.
  • הרשאה TV_INPUT_HARDWARE לאפליקציית קלט טלוויזיה לחומרה, מאותתת לשירות TV Input Manager להודיע לשירות TV Input בזמן האתחול כדי שהוא יקרא לשירות TV Input Manager ויוסיף את מקורות הקלט של הטלוויזיה. ההרשאה הזו מאפשרת לאפליקציית קלט של טלוויזיה לחומרה לתמוך בכמה מקורות קלט של טלוויזיה לכל שירות קלט של טלוויזיה, וגם להוסיף ולהסיר באופן דינמי את מקורות הקלט של הטלוויזיה הנתמכים.

ספק טלוויזיה

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

ספק הטלוויזיה ממפה באופן פנימי את 'ז'אנר השידור' ל'ז'אנר הקנוני'. מקורות הקלט של הטלוויזיה אחראים לאכלוס השדה 'ז'אנר שידור' בערך שמופיע בתקן השידור הבסיסי, והשדה 'ז'אנר קנוני' יאוכלס באופן אוטומטי בז'אנר המשויך הנכון מ-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, הרשאות כתיבה דרך AndroidManifest.xml (נדרשת הסכמת המשתמש) כדי לזהות את הערוצים הזמינים.
  • רק אפליקציות signatureOrSystem יכולות לקבל את ההרשאה ACCESS_ALL_EPG_DATA לגשת לכל מסד הנתונים.

מנהל קלט הטלוויזיה

מנהל הקלט של הטלוויזיה מספק ממשק API מרכזי למערכת של Android TV Input Framework. הוא מתווך את האינטראקציה בין האפליקציות לבין מקורות הקלט של הטלוויזיה, ומספק פונקציונליות של אמצעי בקרת הורים. צריך ליצור סשנים של TV Input Manager אחד-על-אחד עם מקורות קלט לטלוויזיה. מנהל מקורות הקלט לטלוויזיה מאפשר גישה למקורות קלט לטלוויזיה מותקנים, כדי שאפליקציות יוכלו:

  • הצגת רשימה של מקורות הקלט בטלוויזיה ובדיקת הסטטוס שלהם
  • יצירה של סשנים וניהול של המאזינים

בסשנים, אפליקציית הטלוויזיה עשויה לכוונן קלט טלוויזיה רק למזהי URI שהיא הוסיפה למסד הנתונים של ספק הטלוויזיה, מלבד קלט טלוויזיה של העברה ישירה (passthrough) שאפשר לכוונן באמצעות TvContract.buildChannelUriForPassthroughInput(). ייתכן שעוצמת הקול של קלט טלוויזיה מוגדר גם כן. לאפליקציות של מקורות קלט לטלוויזיה שסופקו ונחתמו על ידי יצרן המכשיר (אפליקציות חתימה) או לאפליקציות אחרות שמותקנות במחיצה של המערכת תהיה גישה לכל מסד הנתונים של ספק הטלוויזיה. אפשר להשתמש בגישה הזאת כדי ליצור אפליקציות לחיפוש ולחיפוש בכל התוכניות וערוצי הטלוויזיה הזמינים.

אפליקציה יכולה ליצור ולרשום TvInputCallback עם android.media.tv.TvInputManager כדי שיתבצע קריאה חוזרת כשהסטטוס של TV Input ישתנה, או כשיתווסף או יוסר TV Input. לדוגמה, אפליקציית טלוויזיה יכולה להגיב כשקלט טלוויזיה מנותק על ידי הצגתו כמנותק ומניעת הבחירה בו.

מנהל מקורות הקלט של הטלוויזיה מספק שירותי עיצוב נתונים (abstraction) לתקשורת בין אפליקציית הטלוויזיה לבין מקורות הקלט של הטלוויזיה. הממשק הסטנדרטי של מנהל קלט הטלוויזיה וקלט הטלוויזיה מאפשר למספר יצרני מכשירים ליצור אפליקציות טלוויזיה משלהם, תוך עזרה לכל מקורות הקלט של טלוויזיות של צד שלישי לפעול בכל האפליקציות לטלוויזיה.

מקורות קלט בטלוויזיה

מקורות קלט לטלוויזיה הן אפליקציות ל-Android במובן שהן כוללות קובץ AndroidManifest.xml ושמותקנות (דרך Play, מותקנות מראש או מותקנות דרך צד שלישי). Android TV תומך באפליקציות מערכת מותקנות מראש, באפליקציות שחתומות על ידי יצרן המכשיר ובכניסות טלוויזיה של צד שלישי.

יש כניסות שרק היצרן יכול לספק, כמו כניסת HDMI או כניסת טיונר מובנית, כי הן פועלות ישירות עם החומרה הבסיסית. צדדים שלישיים יכולים לספק מכשירים אחרים, כמו IPTV, placeholder ו-STB חיצוני, כ-APKs בחנות Google Play. אחרי ההורדה וההתקנה, תוכלו לבחור את הקלט החדש באפליקציית הטלוויזיה.

דוגמה לקלט של העברה דרך

קלט המערכת של Android TV
איור 3. קלט מערכת של Android TV

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

דוגמה לטיונר מובנה

קלט טיונר מובנה ב-Android TV
איור 4. קלט של ממיר מובנה ב-Android TV

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

דוגמה לקלט של צד שלישי

קלט של צד שלישי ב-Android TV
איור 5. קלט של צד שלישי ב-Android TV

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

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

דוגמה ל'תמונה בתוך תמונה' (PIP)

אירועי מקש ב-Android TV
איור 6. אירועים מרכזיים של Android TV

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

רק מקורות קלט של טלוויזיה במערכת יכולים לקבל את ההודעה InputEvents, ורק אם יש להם את הרשאת המערכת RECEIVE_INPUT_EVENT. ה-TV Input אחראי לקבוע אילו InputEvents יילקחו בחשבון, וצריך לאפשר לאפליקציית הטלוויזיה לטפל במפתחות שהיא לא צריכה להשתמש בהם.

אפליקציית הטלוויזיה אחראית לדעת איזה מערכת קלט טלוויזיה פעילה, כלומר שהמשתמש בחר אותה, וכן להבדיל בין KeyEvents הנכנסים ולנתב אותם לסשן הנכון של מנהל קלט הטלוויזיה, באמצעות קריאה dispatchInputEvent() כדי להעביר את האירוע לקלט הטלוויזיה המשויך.

דוגמה לקלט MHEG-5

בתרשים הבא מוצגת תצוגה מפורטת יותר של האופן שבו הבקשות של KeyEvents מנותבות דרך Android TIF.

דוגמה ללחצן האדום ב-Android TV
איור 7. דוגמה ללחצן האדום ב-Android TV

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

בקטע אפליקציית Broadcast תוכלו למצוא מידע על האינטראקציה של אפליקציות השידור עם אפליקציית הטלוויזיה.

בדוגמה הזו:

  1. אפליקציית הטלוויזיה נמצאת בפוקוס ומקבלת את כל המפתחות.
  2. השדה KeyEvents (למשל הלחצן האדום) מועבר לקלט הטלוויזיה הפעיל בתור InputEvents.
  3. קלט הטלוויזיה של המערכת משתלב עם סטאק MHEG-5 ויש לו הרשאת מערכת RECEIVE_INPUT_EVENT.
  4. כשמקבלים את קוד המפתח להפעלה (למשל, לחצן אדום), קלט הטלוויזיה מפעיל את אפליקציית השידור.
  5. קלט טלוויזיה צורך KeyEvents בתור InputEvents ואפליקציית השידור נמצאת במוקד ומטפלת ב-InputEvents עד שסוגרים אותה.

הערה: מקורות קלט של טלוויזיות של צד שלישי אף פעם לא מקבלים מפתחות.

TV Input HAL

ה-HAL של קלט הטלוויזיה עוזר בפיתוח של מקורות קלט לטלוויזיה כדי לגשת לחומרה ספציפית לטלוויזיה. בדומה ל-HALs אחרים של Android, ה-HAL של קלט הטלוויזיה (tv_input) זמין בעץ המקור של AOSP, והיצרן מפתח את ההטמעה שלו.

הערה: החל מ-Android 14, הממשק של קלט הטלוויזיה עם HAL מוגדר באמצעות AIDL.

אפליקציית טלוויזיה

אפליקציית הטלוויזיה של המערכת מציגה למשתמשים תוכן של טלוויזיה בשידור חי. אפליקציית עזר לטלוויזיה (Live TV) מסופקת לצד פלטפורמת Android, ויצרני מכשירים יכולים להשתמש בה כפי שהיא, להתאים אישית, להרחיב או להחליף אותה. קוד המקור זמין בפרויקט קוד פתוח של Android, ואפשר להתחיל איתו במאמר אפליקציית Reference TV.

יצרני המכשירים יכולים להרחיב את אפליקציות הטלוויזיה שלהם כדי להטמיע תכונות ספציפיות למכשיר או למדינה, אבל זה לא נכלל בהיקף של 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 לדוגמה מופיע התפריט 'מקורות ערוצים', שמאפשר לגשת למקורות הקלט.

מעבר להגדרות
איור 8. עוברים אל הגדרות.

עוברים אל 'מקור הערוץ' בהגדרות
איור 9. עוברים אל מקורות הערוץ בהגדרות.

בוחרים את המקור מהרשימה.
איור 10. בוחרים את המקור מהרשימה.

הוספת ערוצים מהמקור
איור 11. מוסיפים ערוצים מהמקור.

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

התראה על כך שיש מקורות ערוצים חדשים זמינים.
איור 12. התראה על כך שיש מקורות ערוצים חדשים זמינים.

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

במאמר הגדרת שירות הקלט של הטלוויזיה מפורטות הציפיות שלנו למפתחים בנושא הזה.

התאמה אישית של רשימת הערוצים

יצרני המכשירים יכולים לספק ממשק משתמש להסתרת ערוצים מסוימים ולאפשר למשתמשים לנהל את ה-EPG שלהם. האפשרות הזו כלולה בחבילת 'טלוויזיה בשידור חי'.

פותחים את רשימת הערוצים בהגדרות.
איור 13. פותחים את רשימת הערוצים בהגדרות.

להתאים אישית את רשימת הערוצים.
איור 14. להתאים אישית את רשימת הערוצים.

EPG

מפתחי קלט של צד שלישי צריכים להיות בטוחים שהמשתמשים יכולים לנווט בקלות לערוצים שלהם במהלך השימוש הכללי, בכל מכשירי Android TV התואמים.

ערוצים ממקורות קלט של צד שלישי חייבים להופיע כחלק מה-EPG הרגיל של חוויית הצפייה בשידור חי במכשיר. ניתן להשתמש בהפרדה חזותית או בקטגוריות נפרדות לערוצי צד שלישי (עיינו בקטע 'אפליקציית טלוויזיה' ב-CDD ב-Android) - מה שחשוב הוא שהמשתמשים יוכלו למצוא את הערוצים שהם התקינו.

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

הקלטה תוך כדי צפייה

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

במכשירי טלוויזיה עם מקורות קלט שתומכים בשינוי המיקום בזמן, באפליקציית הטלוויזיה צריכים להופיע רכיבי UI להפעלה.

פקדי הפעלה
איור 15. פקדי ההפעלה

DVR

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

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

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

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

התרשים הבא מציג תרחיש אפשרי להטמעת DVR ב-Android TV.

הקלטת וידאו דיגיטלית ב-Android TV
איור 16. הקלטת וידאו דיגיטלית ב-Android TV

  1. שירות קלט הטלוויזיה מודיע לאפליקציית הטלוויזיה כמה מקלטי טלוויזיה זמינים, כדי שאפליקציית הטלוויזיה תוכל לטפל בהתנגשויות אפשריות במשאבים.
  2. אפליקציית הטלוויזיה מקבלת בקשה מהמשתמש להקליט תוכנית טלוויזיה.
  3. לוח הזמנים של ההקלטות מאוחסן במסד הנתונים הפנימי של אפליקציית הטלוויזיה.
  4. כשמגיע הזמן להקליט, אפליקציית הטלוויזיה מעבירה בקשה לערוץ המשויך להקלטה.
  5. שירות הקלט של הטלוויזיה מקבל את הבקשה הזו, משיב אם יש משאבים מתאימים או לא, ומכוון לערוץ.
  6. לאחר מכן, אפליקציית הטלוויזיה מעבירה בקשה להתחיל את ההקלטה למנהל הקלט של הטלוויזיה.
  7. שירות קלט הטלוויזיה מקבל את הבקשה ומתחיל להקליט.
  8. נתוני הווידאו בפועל מאוחסנים בשירות הקלט של הטלוויזיה, שיכול להיות אחסון חיצוני או אחסון בענן.
  9. כשמגיע הזמן לסיים את ההקלטה, אפליקציית הטלוויזיה מעבירה את הבקשה להפסקת ההקלטה למנהל הקלט של הטלוויזיה.
  10. ברגע ששירות קלט הטלוויזיה מקבל את הבקשה, ההקלטה מפסיקה ומוסיפה את המטא-נתונים המשויכים אליו לספק הטלוויזיה כדי שאפליקציית הטלוויזיה תוכל להציג את ההקלטה למשתמשים כשתוצג בקשה לכך.

מידע נוסף על הטמעת תכונות הקלטה בשירות הקלטת הטלוויזיה זמין במאמר הקלטת טלוויזיה.

משאבים שימושיים

  • Android CDD וממשקי ה-API המתועדים למפתחים הם המקורות המהימנים ביותר.
  • CTS Verifier מפעיל את ממשקי ה-API כחלק מתוכנית בדיקות התאימות. הפעלת האפשרות הזו בטלוויזיה בשידור חי יכולה להיות דרך יעילה לראות את EPG, החיפוש, אמצעי בקרת ההורים ודרישות נוספות בהקשר של קלט של צד שלישי.
  • במאמר הגדרת שירות הקלט של הטלוויזיה מפורטות הציפיות שלנו למפתחים בנושא הזה.

אמצעי בקרת הורים

אמצעי בקרת ההורים מאפשרים למשתמשים לחסום ערוצים ותוכניות לא רצויים, אבל להזין קוד אימות כדי לעקוף את החסימה.

האחריות על הפונקציונליות של אמצעי בקרת ההורים מתחלקת בין אפליקציית הטלוויזיה, שירות TV Input Manager, ספק הטלוויזיה ו-TV Input.

אמצעי בקרת הורים הם חובה, והם מכוסים על ידי CTS Verifier.

במספר מדינות יש מערכות סיווג מוגדרות שבהן אפשר להשתמש בקלט טלוויזיה דרך 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 ב-Android TV
איור 17. שילוב של CEC ב-Android TV

  1. אפיק CEC מקבל פקודה מהמקור הפעיל הנוכחי לעבור למקור אחר.
  2. מנהל ההתקן מעביר את הפקודה ל-HAL של HDMI-CEC.
  3. HAL שולח התראות לכל הActiveSourceChangeListeners.
  4. שירות הבקרה של HDMI מקבל הודעה על שינוי המקור דרך ActiveSourceChangeListener.
  5. השירות 'מנהל קלט הטלוויזיה' יוצר כוונה שאפליקציית הטלוויזיה תשנה את המקור.
  6. לאחר מכן, אפליקציית הטלוויזיה יוצרת סשן של מנהל קלט הטלוויזיה עבור קלט הטלוויזיה שאליו עוברים, ומפעילה את setMain בסשן הזה.
  7. הסשן של מנהל הקלט של הטלוויזיה מעביר את המידע הזה לקלט הטלוויזיה של HDMI.
  8. קלט הטלוויזיה של HDMI מבקש להגדיר פלטפורמה של תדר צדדי.
  9. כשהמשתמש מגדיר את הממשק, שירות הניהול של קלט הטלוויזיה יוצר פקודה מתאימה לבקרת ניתוב חזרה לשירות הבקרה של HDMI.

הנחיות השילוב לטלוויזיה

אפליקציית שידור

מכיוון שלכל מדינה יש דרישות ספציפיות לשידור (MHEG, Teletext, HbbTV ועוד), אנחנו מצפים מהיצרנים לספק פתרונות משלהם לאפליקציית השידור. לדוגמה:

  • MHEG: סטאק מקורי
  • טלטקסט: סטאק מקורי
  • HbbTV: פתרון HbbTV מ-Vewd Software

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

כך מתבצעת האינטראקציה בין אפליקציית השידור לאפליקציית הטלוויזיה:

  1. אפליקציית הטלוויזיה נמצאת במוקד ומתקבלים בה כל המקשים.
  2. אפליקציית הטלוויזיה מעבירה מקשים (למשל לחצן אדום) להתקן קלט הטלוויזיה.
  3. מכשיר קלט הטלוויזיה משתלב באופן פנימי עם סטאק טלוויזיה מדור קודם.
  4. כשמתקבל קוד מפתח להפעלה (למשל, לחצן אדום), מכשיר הקלט של הטלוויזיה מפעיל אפליקציות שידור.
  5. אפליקציית שידור מקבלת את המיקוד באפליקציית הטלוויזיה ומטפלת בפעולות של המשתמשים.

בחיפוש קולי או בהמלצות, יכול להיות שאפליקציית השידור תתמוך בחיפוש קולי בתוך האפליקציה.