إدخالات مخصّصة من المصنّع الأصلي للجهاز

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

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

HW_CUSTOM_INPUT

يتم تمثيل الإدخال المخصّص للمصنّع الأصلي للجهاز بـ 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. يمثّل العنصر الأول رمز الإدخال الذي سيحدّده المصنّع الأصلي للجهاز. يمكنك ربط أي دلالات برمز الإدخال.

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

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

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

InputHalService هي خدمة السيارة التي تتلقى رسالة HW_CUSTOM_INPUT من طبقة تجريد الأجهزة (HAL) في المركبة

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

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

لتسجيل الأحداث المخصّصة القادمة واستقبالها، يجب أن تستوفي خدمات النظام ما يلي:

يوضِّح المخطّط البياني التالي سير عمل حدث الإدخال المخصّص للمصنّع الأصلي للجهاز.

سير عمل الإدخال المخصّص للمُصنّع الأصلي

خدمات نظام Android للمصنّع الأصلي للجهاز

يوفر المصنّعون الأصليون للأجهزة خدمة نظام Android للتعامل مع المكالمات الواردة أحداث الإدخال المخصّصة من CarInputService

فقط تلك الخدمات التي تحمل علامة إذن امتياز android.permission.INJECT_أحداث تسجيل الأحداث المخصصة واستقبالها من واجهة برمجة تطبيقات إدخال السيارة (CarInputManager). لا يمكن لأي خدمة أو تطبيق تابعَين لجهة خارجية أن تكون موقَّعة باستخدام إذن نظام Android هذا (خدمات المصنّع الأصلي للجهاز فقط). لذلك، لا يمكن لأي خدمة أو تطبيق تابعَين لجهة خارجية التسجيل مقابل واجهة برمجة تطبيقات إدخال السيارة.

يمكن لخدمات نظام Android لدى المصنّع الأصلي للجهاز الوصول إلى SystemApi والطرق العامة.

تطبيق المرجع

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

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

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

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