ربط الثوابت بين HAL وواجهة برمجة التطبيقات

تعرض هذه الصفحة عمليات الربط المقترَحة بين الثوابت العامة في طبقة تجريد الأجهزة (HAL) وثوابت واجهة برمجة التطبيقات. إذا لم تنفّذ الأجهزة التي تم تقييمها ثوابت HAL، عليك تعديل أنماط الاحتياط الموضّحة في صفحة تنفيذ الثوابت والأنواع الأساسية لإنشاء نتائج مشابهة. تتم عملية الربط بمساعدة نموذجين تلقائيين مختلفين:

  • النموذج المنفصل (بسيط)

    • السعة هي المتغيّر الرئيسي في هذا النموذج. يمثّل كل كيان في HAL مستوى سعة مختلفًا للاهتزاز.
    • هذا النموذج هو الحد الأدنى من المتطلبات اللازمة لتنفيذ تجربة المستخدم الأساسية التي تتضمّن ردود فعل لمسية.
    • تتطلّب تجربة المستخدم اللمسية الأكثر تقدّمًا أجهزة متطوّرة ونموذجًا متقدّمًا (نموذجًا مستمرًا).
  • النموذج المستمر (متقدّم)

    • الملمس والسعة هما المتغيران الرئيسيان في هذا النموذج. يمثّل كل عنصر في HAL أنسجة لمسية مختلفة. يتم التحكّم في سعة كل عنصر من عناصر HAL من خلال عامل القياس (S).
    • يتطلّب هذا النموذج أجهزة متقدّمة. إذا أراد مصنّعو المعدات الأصلية استخدام تجربة مستخدم متقدّمة تعتمد على ردود الفعل اللمسية VibrationEffect.Composition (لتحقيق أفضل استفادة من أحدث واجهات برمجة التطبيقات الخاصة بالردود اللمسية)، يُنصح بتنفيذ أجهزتهم باستخدام هذا النموذج.

النموذج المنفصل

ننصحك بربط جميع الثوابت العامة المتوفّرة في واجهة برمجة التطبيقات بثوابت HAL المناسبة. لبدء هذه العملية، عليك معرفة عدد أشكال الموجات اللمسية التي يمكن للجهاز تحديدها في طبقة تجريد الأجهزة (HAL) والتي تتضمّن سعة منفصلة. يبدو السؤال المحدّد المنظَّم حول هذه الفكرة على النحو التالي: كم عدد تأثيرات اللمس ذات النبضة الواحدة التي يمكن تحديدها في هاتفي مع اختلاف في السعة يمكن أن يدركه الإنسان؟ تحدّد الإجابة عن هذا السؤال عملية الربط.

تحديد ثوابت طبقة تجريد الأجهزة (HAL) هو عملية تعتمد على الأجهزة. على سبيل المثال، قد يتضمّن الهاتف المبتدئ إمكانات الأجهزة اللازمة لإنتاج شكل موجي واحد فقط للمس. تنتج الأجهزة التي تتضمّن مكوّنات أجهزة أكثر تقدّمًا نطاقًا أوسع من مستويات السعة المنفصلة، ويمكنها تحديد أشكال موجية متعددة للّمس في طبقة تجريد الأجهزة (HAL). يتم تعيين الثوابت في HAL-API من خلال أخذ ثابت HAL (باستخدام متوسط السعة كخط أساس)، ثم ترتيب التأثيرات الأقوى أو الأضعف من هناك.

مخطّط لنطاق HAL الثابت وسعات الملاحظات

الشكل 14. نطاق HAL الثابت حسب المطال

عند تحديد عدد ثوابت HAL ذات السعة المنفصلة، يحين الوقت لربط ثوابت HAL وثوابت واجهة برمجة التطبيقات حسب عدد ثوابت HAL. يمكن أن تقسّم عملية الربط هذه ثابتًا واحدًا لواجهة برمجة التطبيقات الخاصة بالنبضات إلى ما يصل إلى ثلاث مجموعات منفصلة من مستويات السعة. تستند طريقة تقسيم ثوابت واجهة برمجة التطبيقات إلى مبادئ تجربة المستخدم للأحداث المصاحبة للإدخال. لمزيد من المعلومات، راجِع تصميم تجربة المستخدم باستخدام ردود الفعل اللمسية.

نموذج منفصل لعملية ربط الثوابت في HAL-API

الشكل 15. ربط الثوابت في HAL-API: النموذج المنفصل

إذا كان جهازك لا يتوافق إلا مع ثابتَين من طبقة تجريد الأجهزة (HAL) مع سعات منفصلة، ننصحك بدمج ثابتَي طبقة تجريد الأجهزة (HAL) لمستوى السعة المتوسطة والعالية. ومن الأمثلة على هذا المفهوم في التطبيق ربط EFFECT_CLICK وEFFECT_HEAVY_CLICK بثابت HAL نفسه، وهو ثابت HAL لمستوى السعة المتوسطة. إذا كان جهازك يتيح استخدام ثابت HAL واحد فقط مع سعة منفصلة، ننصحك بدمج جميع المستويات الثلاثة في مستوى واحد.

النموذج المستمر

يمكن تطبيق النموذج المستمر مع قابلية توسيع نطاق السعة لتحديد ثوابت HAL. يمكن تطبيق عامل قياس (S) على ثوابت طبقة تجريد الأجهزة (HAL) (على سبيل المثال، HAL_H0 وHAL_H1) لإنتاج طبقة تجريد الأجهزة (HAL) التي تم تغيير حجمها (HAL_H0 x S). في هذه الحالة، يتم ربط طبقة تجريد الأجهزة (HAL) التي تم تغيير حجمها لتحديد ثوابت واجهة برمجة التطبيقات (HAL_H0 x S1 = H0S1 = EFFECT_TICK) كما هو موضّح في الشكل 16. باستخدام قابلية التوسّع في السعة النموذجية المستمرة، يمكن للجهاز تخزين عدد صغير من الثوابت في طبقة تجريد الأجهزة (HAL) مع نسيج مميز وإضافة اختلافات في السعة عن طريق ضبط عامل القياس (S). ويمكن لمصنّعي الأجهزة تحديد عدد الثوابت في طبقة تجريد الأجهزة (HAL) استنادًا إلى عدد أنواع النسيج اللمسي المختلفة التي يريدون توفيرها.

نطاق HAL الثابت حسب الملمس والسعة

الشكل 16. نطاق ثابت HAL حسب الملمس (HAL_H0) ومقياس السعة (S)

نموذج مستمر لربط الثوابت في HAL-API

الشكل 17. ربط الثوابت في HAL-API: النموذج المستمر

في النموذج المستمر، تمثّل ثوابت HAL المختلفة نقوشًا لمسية مختلفة بدلاً من السعات المختلفة، ويمكن لعامل القياس (S) ضبط السعة. ومع ذلك، بما أنّ إدراك الملمس (مثل الحدة) مرتبط بإدراك المدة والمطال، يُنصح بدمج الملمس وعامل القياس (في عملية تصميم ربط HAL-API).

يوضّح الشكل 18 عملية الربط الثابت من خلال زيادة التباين من ثابت واحد في طبقة تجريد الأجهزة (HAL) إلى العديد من ثوابت واجهة برمجة التطبيقات مع إمكانية توسيع نطاق السعة.

Increasing Varation
1

Increasing Varation
2

الشكل 18. زيادة التباين باستخدام قابلية توسيع نطاق السعة

بالنسبة إلى جميع الثوابت القابلة للتوسيع في واجهة برمجة التطبيقات، مثل PRIMITIVE_TICK وPRIMITIVE_CLICK في VibrationEffect.Composition، يعتمد مستوى الطاقة لثابت واجهة برمجة التطبيقات على المَعلمة float scale عند تعريف ثابت واجهة برمجة التطبيقات من خلال addPrimitive(int primitiveID, float scale, int delay). يمكن تصميم PRIMITIVE_TICK وPRIMITIVE_CLICK مع تمييز واضح بينهما باستخدام ثوابت HAL مختلفة. ننصحك باتّباع هذا الأسلوب إذا كنت تريد إضافة تنوّع إلى الملمس.