مدخلات مخصصة لتصنيع المعدات الأصلية

استخدم مدخلات OEM المخصصة لإضافة أحداث إدخال سيارة جديدة لميزات Android الجديدة وغير القياسية. لا يتم تعيين أحداث الإدخال غير القياسية بواسطة Android KeyEvent الموجود، والمصممة لتكون عامة وتعمل على أي سطح يعمل بنظام Android ولكنها غير ممتدة لتنفيذ ميزات خاصة بشركة OEM. على سبيل المثال، الزر الموجود على لوحة التحكم في عجلة القيادة والذي، عند الضغط عليه، يفتح تطبيق خرائط (من خلال غرض) مع الموقع الحالي للسيارة. تتيح هذه الميزة للسائقين تصور موقعهم الحالي دون تشتيت انتباههم أثناء القيادة.

توضح هذه المقالة كيفية إعادة استخدام Android KeyEvent موجود لإنشاء CustomInputEvent للاستخدام فقط عندما لا يمكن استخدام Android KeyEvent لتمثيل الميزة.

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 العامة، والتي تم تعيينها كـ [global]{:.external} (مع VehicleArea:GLOBAL ) الأعداد الصحيحة الثلاثة العامة هي:

  1. يمثل العنصر الأول رمز الإدخال الذي سيتم تعريفه بواسطة OEM. يمكنك ربط أي دلالة برمز الإدخال.

  2. يقوم العنصر الثاني بتخزين شاشة العرض المستهدفة، مثل الشاشة الرئيسية أو المجموعة.

  3. العنصر الثالث يحتوي على عدد مرات تكرار الحدث. على سبيل المثال، للإشارة إلى عدد مرات الضغط على الزر.

CustomInputEvent وواجهة برمجة تطبيقات إدخال السيارة

InputHalService هي خدمة السيارة التي تستقبل HW_CUSTOM_INPUT الواردة من HAL للمركبة.

يقوم InputHalService بتحويل HW_CUSTOM_INPUT الوارد إلى CustomInputEvent ، وهي فئة Java قابلة للتجزئة موجودة في car-lib/src/android/car/input ، إلى جانب واجهة helpl المعنية.

تستقبل CarInputService ، وهي خدمة إدخال سيارات أساسية، أحداث CustomInputEvents الواردة ثم ترسلها إلى أي خدمة مسجلة لنظام Android.

للتسجيل واستلام CustomInputEvents الواردة، يجب على خدمات النظام:

يوضح الرسم التخطيطي التالي سير عمل حدث الإدخال المخصص لـ OEM.

سير عمل الإدخال المخصص لـ OEM

خدمات نظام أندرويد OEM

يوفر مصنعو المعدات الأصلية خدمة نظام Android الخاصة بهم للتعامل مع CustomInputEvents الواردة من CarInputService .

يمكن فقط لتلك الخدمات المميزة بإذن امتياز android.permission.INJECT_EVENTS التسجيل واستقبال CustomInputEvents من واجهة برمجة تطبيقات إدخال السيارة ( CarInputManager ). لا يمكن توقيع أي خدمة أو تطبيق تابع لجهة خارجية باستخدام إذن نظام Android هذا (خدمات OEM فقط). لذلك، لا يمكن لأي خدمة أو تطبيق تابع لجهة خارجية التسجيل في Car Input API.

يمكن لخدمات نظام Android OEM الوصول إلى SystemApi والطرق العامة.

التنفيذ المرجعي

راجع التنفيذ المرجعي في packages/services/Car/tests/SampleCustomInputService ، والذي يتم تقديمه كمثال وإرشادات. على سبيل المثال، لإضافة زر جديد في التحكم في عجلة القيادة. عند الضغط عليه، يقوم هذا الزر الجديد بتشغيل تطبيق الخرائط مع موقع السيارة الحالي.

في هذا المثال، حدد OEM INPUT_CODE_F1 (أول وظيفة ملائمة CustomInputEvent ) لتمثيل هذه الميزة الجديدة (فتح تطبيق الخرائط مع موقع السيارة الحالي).

أثناء بدء التشغيل، تسجل هذه الخدمة نفسها ضد CarInputManager من خلال requestInputEventCapture (راجع رمز تسجيل التنفيذ المرجعي .

عند تلقي CustomInputEvents الواردة، ترسل هذه الخدمة نية بدء تشغيل تطبيق الخرائط. لمعرفة كيفية تحقيق ذلك، راجع CustomInputEventListener.java .