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

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

עיצוב כללי

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

בתרשים הבא תוכלו לראות את המעבר מ-CEC בהתאמה אישית של הפשטה פשוטה יותר של חומרה HDMI-CEC. בשכבת זרימת הנתונים (HAL).

תרשים שמראה איך HDMI-CEC הוטמע לפני ואחרי Android 5.0

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

הטמעה

בתרשים הבא תוכלו למצוא תצוגה מפורטת של שירות השליטה ב-HDMI.

תמונה שמראה איך פרטי השירות HDMI Control

איור 2. פרטים על HDMI Control Service

אלה המרכיבים העיקריים בהטמעה נכונה של 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, יצרני מכשירים צריכים להגדיר את ro.hdmi.device_type ב- device.mk כדי ש-HdmiControlService יפעל כמו שצריך.

עבור מכשירים עם מקור HDMI, כמו ממיר (OTT) או ממיר (STB), מגדירים:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

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

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), שיכול להנפיק את הפקודה One Touch Play כדי להפוך לפעילה source ו-Audio System (5) שמטפל במצב אודיו של המערכת וב-ARC. בשלב זה אין תמיכה בסוגים אחרים של מכשירים (כוונון ומכשיר הקלטה).

HDMI-CEC HAL

HDMI-CEC HAL API מאפשר ל-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 (הפעלה) ו-sink (חלונית טלוויזיה) תומכים ב-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 שנשלחות על ידי מכשיר הפעלה. לצפייה בטלוויזיה בלבד
לטלוויזיה ולמערכת אודיו
שידור
לא הוספתי

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