קלט מותאם אישית של ה-OEM

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

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

HW_CUSTOM_INPUT

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

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

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

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

  2. הרכיב השני שומר את תצוגת היעד, כמו המסך הראשי או אשכול.

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

CustomInputEvent ו-API לקלט רכב

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

InputHalService ממיר את הערך של HW_CUSTOM_INPUT הנכנס ל: את CustomInputEvent, מחלקה parcelable של Java שנמצאת ב- car-lib/src/android/car/input, וגם ממשק AIdl.

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

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

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

תהליך עבודה של קלט מותאם אישית של OEM (יצרן ציוד מקורי)

שירותי מערכת Android של OEM (יצרן ציוד מקורי)

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

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

לשירותי מערכת Android של OEM (יצרן ציוד מקורי) יש גישה ל-SystemApi ולשיטות ציבוריות.

הטמעת קובצי עזר

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

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

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

בעת קבלת CustomInputEvents נכנסים, השירות הזה שולח את ה-Intent כדי להפעיל את אפליקציית מפות. כדי להבין איך עושים זאת, אפשר לעיין במאמר בנושא CustomInputEventListener.Java.