אמצעי הבקרה האלקטרוניים לצרכנים בממשק מולטימדיה באיכות HD תקן (HDMI-CEC) מאפשר למוצרי צריכה של mulitmedia לתקשר לשתף מידע ביניהם. HDMI-CEC תומך בתכונות רבות, כמו בקרת שמע שלט רחוק ושלט רחוק, אבל אחת האפשרויות הפופולריות ביותר היא One Touch Play. התכונה One Touch Play מאפשרת למכשיר מקור מדיה להפעיל את הטלוויזיה וגם להחליף את יציאת הקלט שלו באופן אוטומטי, כך שלא צריך לחפש את הטלוויזיה בשלט הרחוק כדי לעבור מ-Chromecast לנגן Blu-ray.
ב-Android 12, בקרת ההפעלה של המסך שמחובר ל-HDMI תואמת לבקרת ההפעלה של המסך הפנימי. כשמכשיר הפעלה של HDMI מתעורר, הוא מנסה להעיר את הטלוויזיה המחובר ולהפוך למקור הפעיל הנוכחי באמצעות HDMI CEC One Touch Play. אם המכשיר עובר למצב שינה בזמן שהוא המקור הפעיל הנוכחי, הוא ינסה לכבות את הטלוויזיה המחוברת.
בדרך כלל, התמיכה ב-HDMI-CEC היא אופציונלית. עם זאת, רוב היצרנים משתמשים ב-HDMI-CEC כדי שהמכשירים שלהן יפעלו עם מכשירים של חברות אחרות. כל יצרן משתמש ב-HDMI-CEC סטנדרטיים בדרכים שונות, כך שמכשירים לא תמיד מבינים זה את זה ונתמכים התכונות משתנות ממכשיר למכשיר. בגלל השונות הזו, הצרכנים לא יכולים להניח בבטחה ששני מוצרים שמצהירים על תמיכה ב-CEC תואמים לחלוטין.
תמיכה ב-HDMI-CEC 2.0 משפרת את התאימות בין מכשירי HDMI, אם גם המכשיר השולח וגם המכשיר המקבל תומכים בגרסה הזו של התקן.
הפתרון
עם השקת מסגרת הקלט של Android TV (TIF), HDMI-CEC
מקבץ את כל המכשירים המחוברים ומצמצם בעיות תאימות.
כדי לטפל בבעיות האלה, נוצר ב-Android שירות מערכת שנקרא HdmiControlService
.
אם מציעים את HdmiControlService
כחלק ממערכת Android
בסביבה העסקית של Android, אנחנו מקווים לספק ב-Android:
- הטמעה סטנדרטית של HDMI-CEC לכל היצרנים, כדי לצמצם את חוסר התאימות בין המכשירים. בעבר, היצרנים היו צריכים לפתח הטמעות משלהם של HDMI-CEC או להשתמש בפתרונות של צד שלישי.
- שירות שנבדק כבר מול מספר רב של מכשירי HDMI-CEC בשוק. מערכת Android עורכת מחקר קפדני על תאימות בעיות שנמצאו במוצרים ואיסוף עצות מועילות מהמכשיר עם הטמעות מקצועיות במיוחד. שירות CEC נועד לשמור איזון בריא בין הסטנדרט לבין השינויים בתקן הזה, שהוא עובד עם המוצרים שבהם אנשים כבר משתמשים.
העיצוב הכללי
HdmiControlService
מחובר לשאר המערכת, למשל
TV קלט Framework (TIF), שירות אודיו ושירות הפעלה כדי להטמיע את
שונות מהתכונות שצוינו בתקן.
בתרשים הבא מוצגת תמונה של המעבר מבקר CEC מותאם אישית להטמעה של שכבת ההפשטה של החומרה (HAL) הפשוטה יותר של HDMI-CEC.

איור 1. החלפת שירות HDMI Control
הטמעה
בתרשים הבא מוצגת תצוגה מפורטת של שירות הבקרה של HDMI.

איור 2. פרטי השירות של HDMI Control
אלה המרכיבים העיקריים בהטמעה נכונה של HDMI-CEC ב-Android:
- מחלקת ניהול
HdmiControlManager
מספקת אפליקציות עם הרשאות באמצעות ה-API. שירותי מערכת כמו שירות ניהול הקלט של הטלוויזיה ושירות האודיו יכולים להשתמש בשירות ישירות. - השירות נועד לאפשר אירוח של יותר מסוג אחד של לוגיקה לוגית במכשיר.
- HDMI-CEC מחובר לחומרה באמצעות שכבת הפשטה של חומרה (HAL) כדי לפשט את הטיפול בהבדלים בין הפרוטוקולים ומנגנוני האותות בין המכשירים. הגדרת ה-HAL זמינה ליצרני המכשירים כדי להטמיע את שכבת ה-HAL.
הערה: יצרני המכשירים צריכים להוסיף את השורה הבאה לקובץ PRODUCT_COPY_FILES
בקובץ device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
בהתאם למכשיר שלכם – מכשיר HDMI sink או מכשיר HDMI source – יצרני המכשירים צריכים להגדיר את ro.hdmi.device_type
ב-device.mk
כדי ש-HdmiControlService
יפעל כמו שצריך.
במכשירי מקור עם HDMI, כמו מכשירים במודל 'ישירות ללקוח' (OTT) או ממירים (STB), מגדירים את האפשרויות הבאות:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
במכשירי HDMI sink, כמו טלוויזיות עם מסך שטוח, מגדירים:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- בקר CEC קנייני שסופק על ידי יצרן המכשיר לא יכול להתקיים בו-זמנית
עם
HdmiControlService
. צריך להשבית או להסיר אותו. נפוץ לשם כך נובעים מהצורך לטפל בגורמים ספציפיים פקודות. ה-handler של הפקודה הספציפית ליצרן צריך להיות משולב ב- השירות על ידי הרחבה או שינוי שלו. העבודה הזו נותרת בידי יצרן המכשיר ולא מצוינה על ידי Android. לתשומת ליבכם: כל שינוי שמתבצע שירות לפקודות ספציפיות ליצרן אסור להפריע לאופן שבו פקודות רגילות מטופלות או שהמכשיר לא יהיה תואם ל-Android. - הגישה לשירות HDMI-CEC נשמרת באמצעות רמת הגנה
SignatureOrSystem
רק רכיבי המערכת או האפליקציות לאפליקציה/system/priv-app
יש גישה לשירות. המטרה היא להגן על שירות מניצול לרעה על ידי אפליקציות מתוך כוונה זדונית.
Android תומך בסוגים TV/Display(0)
ו-Playback
device(4)
, שיכולים להנפיק את הפקודה 'הפעלה בנגיעה אחת' כדי להפוך למקור הפעיל, ובסוג Audio System (5)
שמטפל במצב אודיו במערכת וב-ARC.
אין כרגע תמיכה בסוגים אחרים של מכשירים (Tuner ו-Recorder).
HDMI-CEC HAL
ממשק ה-HAL API של HDMI-CEC מאפשר ל-HdmiControlService
להשתמש במשאבי החומרה כדי לשלוח או לקבל פקודות HDMI-CEC, להגדיר את ההגדרות הנדרשות ולתקשר (אופציונלי) עם המיקרו-מעבד בפלטפורמה הבסיסית, שייקח את השליטה ב-CEC בזמן שמערכת Android נמצאת במצב המתנה.
גרסה | תכונות | קובצי HAL |
---|---|---|
1.0 | מגדירים את נתוני HAL (כתובות, תכונות). שליחת פקודות HDMI-CEC. רישום קריאה חוזרת (callback) כדי לקבל פקודות HDMI-CEC ואירועי Hotpack. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | הצגת הסוגים של HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
בדיקה
הטמעות HDMI-CEC של מכשירים נבדקות ומאומתות באמצעות בדיקות CTS בהתאם ל מסמכי תיעוד של HDMI-CEC CTS.
HDMI-CEC 2.0
מכשירי Android שמשמשים כמקור (הפעלה) וכצינור (מסך הטלוויזיה) תומכים ב-HDMI-CEC 2.0. HDMI-CEC 2.0 מספק יכולת פעולה הדדית טובה יותר בין מכשירי HDMI, שיפורים בתכונות 'העברת שליטה מרחוק' ובדיקות אישור מקיפות יותר. באופן כללי, האינטראקציות של HDMI-CEC 2.0 עם מכשירים אחרים יעילות יותר, וכתוצאה מכך יש פחות תעבורת נתונים ב-HDMI-CEC וגם אינטראקציות מהירות יותר.
כדי שמכשיר יתמוך ב-HDMI-CEC 2.0, ההגדרות של המכשיר והמשתמש צריכות להיות
מוגדר להשתמש ב-HDMI-CEC 2.0. הטמעת תקן HAL חייבת גם לדווח על תמיכה ב-HDMI-CEC 2.0
בשיחות אל IHdmiCec#getCecVersion
.
הגדרת CEC
ניתן להגדיר התנהגות HDMI-CEC גם בזמן ה-build (על ידי יצרני ציוד מקורי שמשתמשים ב-RRO) וגם בזמן הריצה
(על ידי HdmiControlManager
@SystemApi).
דוגמאות להגדרות HDMI-CEC:
הגדרה | אפשרות |
---|---|
אם התכונה HDMI-CEC מופעלת או מושבתת. | מופעל מושבת |
ההיקף של הודעות לשליטה בחשמל HDMI-CEC שנשלחות על ידי מכשיר הפעלה. | לצפייה בטלוויזיה בלבד לטלוויזיה ולמערכת אודיו שידור לא הוספתי |
אפליקציות יכולות לשלוח שאילתות לגבי כל אחת מהאפשרויות הזמינות והמותרות כרגע בהגדרה מסוימת בזמן הריצה.