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

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

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

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

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

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

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

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

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

الشكل 1: نطاق ثوابت HAL حسب السعة

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

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

الشكل 2: ربط ثوابت HAL بواجهة برمجة التطبيقات: النموذج المنفصل

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

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

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

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

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

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

الشكل 4: ربط ثوابت HAL بواجهة برمجة التطبيقات: النموذج المستمر

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

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

Increasing Varation
1

Increasing Varation
2

الشكل 5: زيادة الاختلاف مع قابلية توسيع السعة

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