שירות בקרת HDMI-CEC

התקן High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) מאפשר למוצרי צריכה מוליטימדיה לתקשר ולהחליף מידע זה עם זה. HDMI-CEC תומך בתכונות רבות, כגון העברת שלט רחוק ובקרת אודיו של המערכת, אך אחד הפופולריים ביותר הוא One Touch Play. One Touch Play מאפשר למכשיר מקור מדיה להפעיל את הטלוויזיה ולהחליף את יציאת הקלט שלו באופן אוטומטי, כך שלא תצטרך לחפש את השלט של הטלוויזיה כדי לעבור מה-Chromecast לנגן Blu-ray.

עם אנדרואיד 12, בקרת הכוח של הצג המחובר ל-HDMI מתיישר עם בקרת ההפעלה של הצג הפנימי. כאשר התקן השמעת HDMI מתעורר, הוא מנסה להעיר את הטלוויזיה המחוברת ולהפוך למקור הפעיל הנוכחי באמצעות HDMI CEC One Touch Play. אם המכשיר עובר למצב שינה בזמן שהוא המקור הפעיל הנוכחי, הוא ינסה לכבות את הטלוויזיה המחוברת.

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

תמיכה ב-HDMI-CEC 2.0 עוזרת לשפר את התאימות בין התקני HDMI אם גם המכשיר השולח וגם המקבל תומכים בגרסה זו של התקן.

פִּתָרוֹן

עם הצגת ה-Android TV Input Framework (TIF), HDMI-CEC מפגיש את כל המכשירים המחוברים וממזער בעיות תאימות. אנדרואיד יצרה שירות מערכת בשם HdmiControlService כדי להקל על נקודות הכאב הללו.

על ידי הצעת HdmiControlService כחלק מהמערכת האקולוגית של אנדרואיד, אנדרואיד מקווה לספק:

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

עיצוב כולל

HdmiControlService מחובר לשאר המערכת כמו TV Input Framework (TIF), שירות שמע ושירות Power כדי ליישם את התכונות השונות שהתקן מציין.

ראה את הדיאגרמה הבאה לתיאור של המעבר מבקר CEC מותאם אישית ליישום של שכבת ההפשטה של ​​החומרה הפשוטה יותר HDMI-CEC (HAL).

תרשים שמראה כיצד הוטמע HDMI-CEC לפני ואחרי אנדרואיד 5.0

איור 1. החלפת שירות בקרת HDMI

יישום

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

תמונה שמראה כיצד פרטי שירות בקרת HDMI

איור 2. פרטי שירות בקרת HDMI

להלן מרכיבי המפתח למימוש נכון של Android HDMI-CEC:

  • מחלקת מנהלים HdmiControlManager מספקת אפליקציות מורשות עם ה-API. שירותי מערכת כמו שירות TV Input Manager ושירות אודיו יכולים להשתמש בשירות ישירות.
  • השירות נועד לאפשר אירוח של יותר מסוג אחד של מכשיר לוגי.
  • 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 כיור או התקן מקור HDMI, יצרני המכשיר צריכים להגדיר את ro.hdmi.device_type ב- device.mk כדי HdmiControlService יפעל כהלכה.

עבור התקני מקור HDMI, כגון התקני Over the Top (OTT) או Set-top Box (STB), הגדר:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

עבור התקני כיור HDMI, כמו טלוויזיות פאנלים, הגדר:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • בקר CEC קנייני שסופק על ידי יצרן המכשיר אינו יכול להתקיים במקביל עם HdmiControlService . יש להשבית או להסיר אותו. הדרישות הנפוצות לכך נובעות מהצורך לטפל בפקודות ספציפיות ליצרן. יש לשלב את מטפל הפקודות הספציפי ליצרן בשירות על ידי הרחבה/שינוי שלו. עבודה זו נותרת ליצרן המכשיר ולא צוינה על ידי אנדרואיד. שים לב שכל שינוי שנעשה בשירות עבור פקודות ספציפיות ליצרן לא אמור להפריע לאופן הטיפול בפקודות סטנדרטיות או שהמכשיר לא יהיה תואם לאנדרואיד.
  • הגישה לשירות HDMI-CEC נשמרת עם רמת ההגנה SignatureOrSystem . רק רכיבי מערכת או האפליקציות הממוקמות ב- /system/priv-app יכולים לגשת לשירות. זה נועד להגן על השירות מפני שימוש לרעה על ידי אפליקציות עם כוונת זדון.

אנדרואיד תומך מסוג TV/Display(0) , Playback device(4) שיכול להנפיק את הפקודה One Touch Play להפוך למקור הפעיל ולמערכת השמע Audio System (5) המטפלת במצב אודיו של המערכת וב-ARC. סוגי מכשירים אחרים (טונר ומקליט) אינם נתמכים כרגע.

HDMI-CEC HAL

ה-API של HDMI-CEC HAL מאפשר ל- HdmiControlService לעשות שימוש במשאב החומרה כדי לשלוח/לקבל פקודות HDMI-CEC, להגדיר את ההגדרות הדרושות ו(אופציונלי) לתקשר עם המיקרו-מעבד בפלטפורמה הבסיסית שתשתלט על בקרת ה-CEC בזמן שה-Android המערכת נמצאת במצב המתנה.

גִרְסָה תכונות קבצי HAL
1.0 הגדר נתוני HAL (כתובות, תכונות). שלח פקודות HDMI-CEC. רשום התקשרות חוזרת כדי לקבל פקודות HDMI-CEC ואירועי חיבור חם. 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

מכשירי מקור אנדרואיד (השמעה) וכיור (פאנל טלוויזיה) תומכים ב-HDMI-CEC 2.0. HDMI-CEC 2.0 מציע יכולת פעולה הדדית טובה יותר בין התקני HDMI, שיפורים ב-Remote Passthrough ובדיקות הסמכה נרחבות יותר. באופן כללי, אינטראקציות HDMI-CEC 2.0 עם מכשירים אחרים יעילות יותר, וכתוצאה מכך פחות תעבורת HDMI-CEC וכן אינטראקציות מהירות יותר.

כדי שהמכשיר יתמוך ב-HDMI-CEC 2.0 יש להגדיר את ההתקן ואת תצורת המשתמש לשימוש ב-HDMI-CEC 2.0. יישום HAL חייב גם לדווח על תמיכה ב-HDMI-CEC 2.0 בקריאות ל- IHdmiCec#getCecVersion .

תצורת CEC

ניתן להגדיר התנהגות HDMI-CEC הן בזמן בנייה (על ידי יצרני OEM המשתמשים ב-RRO) והן בזמן ריצה (על ידי HdmiControlManager @SystemApi).

דוגמאות להגדרות HDMI-CEC:

הגדרה אוֹפְּצִיָה
האם ה-HDMI-CEC מופעל או מושבת. מופעל
נָכֶה
היקף הודעות בקרת הספק HDMI-CEC שנשלחו על ידי התקן השמעה. לטלוויזיה בלבד
לטלוויזיה ומערכת שמע
מִשׁדָר
אף אחד

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