כניסות OEM מותאמות אישית

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

מאמר זה מתאר כיצד לעשות שימוש חוזר ב-Android KeyEvent קיים כדי ליצור CustomInputEvent לשימוש רק כאשר לא ניתן להשתמש ב-Android KeyEvent כדי לייצג את התכונה.

HW_CUSTOM_INPUT

קלט מותאם אישית של OEM מיוצג על ידי HW_CUSTOM_INPUT ו- CustomInputEvent.java . HW_CUSTOM_INPUT הוא האירוע המקורי, שנוצר על ידי חומרת המכונית (Vehicle HAL). יצרני OEM קובעים כיצד ליצור אירוע זה. הגישה ל- HW_CUSTOM_INPUT מוגדרת כ-[לקריאה בלבד]{:.external}, עם VehiclePropertyAccess:READ .

כדי להבטיח ש-HAL של הרכב תמיד יכול לשדר את הערך הזמין העדכני ביותר, הודעת HW_CUSTOM_INPUT מוגדרת כ- ON_CHANGE , עם VehiclePropertyChangeMode:ON_CHANGE .

ערכי HW_CUSTOM_INPUT מורכבים ממערך של int32 גנרי, המוגדר כ-[global]{:.external} (עם VehicleArea:GLOBAL ) שלושת המספרים השלמים הגנריים הם:

  1. האלמנט הראשון מייצג את קוד הקלט שיוגדר על ידי ה-OEM. אתה יכול לשייך כל סמנטי לקוד הקלט.

  2. האלמנט השני מאחסן את תצוגת היעד, כגון התצוגה הראשית או האשכול.

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

CustomInputEvent ו-Car Input API

InputHalService הוא שירות המכוניות שמקבל HW_CUSTOM_INPUT נכנס מ-HAL של הרכב.

InputHalService ממיר את ה- HW_CUSTOM_INPUT הנכנס ל- CustomInputEvent , מחלקה ניתנת ל-Java הממוקמת ב- car-lib/src/android/car/input , יחד עם ממשק ה-aidl המתאים.

CarInputService , שירות קלט רכב מרכזי, מקבל CustomInputEvents נכנסים ואז שולח אותם לכל שירות מערכת אנדרואיד רשום.

כדי להירשם ולקבל CustomInputEvents נכנסים, שירותי המערכת חייבים:

התרשים הבא ממחיש את זרימת העבודה של אירוע קלט מותאם אישית של OEM.

זרימת עבודה מותאמת אישית של OEM

שירותי מערכת אנדרואיד OEM

יצרני OEM מספקים את שירות מערכת האנדרואיד שלהם כדי לטפל ב-CustomInputEvents נכנסים מ- CarInputService .

רק השירותים המסומנים בהרשאת ההרשאה android.permission.INJECT_EVENTS יכולים להירשם ולקבל CustomInputEvents מ-Car Input API ( CarInputManager ). לא ניתן לחתום על שירות או אפליקציה של צד שלישי עם הרשאת מערכת Android זו (רק שירותי OEM). לכן, שום שירות או אפליקציה של צד שלישי לא יכולים להירשם ל-Car Input API.

שירותי מערכת אנדרואיד OEM יכולים לגשת ל- SystemApi ולשיטות ציבוריות.

יישום התייחסות

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

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

במהלך ההפעלה, שירות זה רושם את עצמו מול CarInputManager באמצעות requestInputEventCapture (ראה את קוד הרישום ליישום הפניה .

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