تنفيذ تأثيرات المغلّفات ذات الأجزاء الخطية

تأثيرات غلاف الدالة الخطية المتصلة (PWLE) هي تسلسلات من النقاط التي تحدد تردد الاهتزاز والتسارع بمرور الوقت. توفّر أجهزة PWLE تجاوبًا حسّيًا أكثر ثراءً وديناميكية.

يوفّر نظام التشغيل Android 16 والإصدارات الأحدث واجهتَي برمجة تطبيقات لمطوّري التطبيقات للمساعدة في إنشاء تأثيرات PWLE:

  • واجهة برمجة تطبيقات بسيطة للغة الإنجليزية المحدودة: بسيطة، ولكن مع بعض القيود مناسب للبدء بسرعة. تتوفّر هذه الميزة على BasicEnvelopeBuilder.
  • واجهة برمجة التطبيقات المتقدّمة لتجربة اللمس: توفّر هذه الواجهة المزيد من التحكّم والمرونة، ولكنها تتطلّب معرفة بتجربة اللمس وبعض الإلمام بالأجهزة. متوفّر على الرابط WaveformEnvelopeBuilder.

لإتاحة استخدام واجهات برمجة التطبيقات هذه، يجب أن تنفِّذ الأجهزة واجهات برمجة التطبيقات التالية في طبقة تجريد الأجهزة (HAL):

  • التردد الرنيني: يوفّر التردد الرنيني للمشغّل.
  • مخطط تسارع الإخراج مقابل التردد (FOAM): يوفّر مخططًا لتردد الاهتزاز مقابل الحد الأقصى لتسارع الإخراج الذي يمكن أن يحقّقه الجهاز.
  • إنشاء PWLE: تشغيل اهتزاز محدّد بواسطة PWLE لموجة الاهتزاز.

Basic PWLE API

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

  • تمثّل قيمة الشدة في النطاق [0, 1] قوة الاهتزاز المحسوسة. على سبيل المثال، يتم اعتبار القيمة 0.5 نصف الحد الأقصى العالمي للشدة التي يمكن أن يحققها الجهاز.
  • تمثّل قيمة الحدة في النطاق [0, 1] حدة الاهتزاز. تشير القيم المنخفضة إلى اهتزازات أكثر سلاسة، بينما تشير القيم الأعلى إلى إحساس أكثر حدة.
  • المدة هي الوقت المستغرَق للانتقال من آخر نقطة PWLE (أي زوج الشدة والحدة) إلى النقطة الجديدة، بالمللي ثانية.

في ما يلي مثال على شكل موجي يزيد من شدة الاهتزاز من مستوى منخفض إلى مستوى مرتفع خلال 500 مللي ثانية، ثم ينخفض إلى 0 مللي ثانية (إيقاف) خلال 100 مللي ثانية:

VibrationEffect effect = new VibrationEffect.BasicEnvelopeBuilder()
          .setInitialSharpness(0.0f)
          .addControlPoint(1.0f, 1.0f, 500)
          .addControlPoint(0.0f, 1.0f, 100)
          .build();

القيود

لإنشاء تجربة لمسية سلسة، يجب أن تبدأ تأثيرات PWLE وتنتهي بشدة 0.0. تفرض واجهة برمجة التطبيقات ذلك من خلال ضبط شدة البداية على 0 وعرض استثناء إذا لم تكن شدة النهاية 0. يمنع هذا القيد حدوث تأثيرات ديناميكية غير مرغوب فيها في الاهتزازات بسبب حالات عدم الاستمرار في السعة التي يمكن أن تؤثر سلبًا في إدراك المستخدم للمس.

لضمان عرض تأثيرات PWLE بشكل متّسق في جميع أنحاء منظومة Android المتكاملة، يتطلّب إطار العمل أن تتمكّن الأجهزة المتوافقة مع هذه الميزة من التعامل مع مدة لا تقل عن 20 مللي ثانية بين نقاط PWLE و16 نقطة على الأقل لتأثيرات PWLE. يتم فرض هذه المتطلبات من خلال اختبارات VTS، ما يساعد في ضمان تأثيرات PWLE موثوقة على جميع أجهزة Android.

Advanced PWLE API

يمكن للمطوّرين الذين لديهم معرفة متقدّمة في مجال تقنية اللمس تحديد تأثيرات PWLE باستخدام المعايير التالية:

  • تمثّل قيمة السعة في النطاق [0, 1] القوة التي يمكن تحقيقها عند تردد معيّن، كما يحدّدها FOAM للجهاز. على سبيل المثال، تؤدي القيمة 0.5 إلى إنشاء نصف الحد الأقصى للتسارع الناتج الذي يمكن تحقيقه عند التردد المحدّد.
  • يتم تحديد التردد مباشرةً بالهرتز.
  • المدة هي الوقت المستغرَق للانتقال من آخر نقطة PWLE إلى النقطة الجديدة، بالمللي ثانية.

في ما يلي مثال على شكل موجي يرفع مستوى اهتزاز الجهاز من إيقاف التشغيل إلى السعة الكاملة عند 120 هرتز على مدار 100 مللي ثانية، ويحافظ على هذه الحالة لمدة 200 مللي ثانية، ثم يعود إلى مستوى أقل على مدار 100 مللي ثانية:

VibrationEffect effect = new VibrationEffect.WaveformEnvelopeBuilder()
          .addControlPoint(1.0f, 120f, 100)
          .addControlPoint(1.0f, 120f, 200)
          .addControlPoint(0.0f, 120f, 100)
          .build();

القيود

لا يعدّل إطار العمل قيمتَي التردد والسعة المطلوبتَين اللتين يقدّمهما المطوّر، بل يضيف نقطة بداية بسعة 0 لضمان انتقال سلس.

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

Frequency to output acceleration mapping (FOAM)

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

فهم عملية الربط

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

يعرض الرسم البياني التالي مثالاً على FOAM لمشغّل رنان نموذجي، مع حصر جهد الإدخال حول التردد الرنان لحماية المحرك:

مثال
FOAM

الشكل 1: مثال على FOAM لمشغّل رنان نموذجي

يخدم نموذج FOAM ثلاثة أغراض رئيسية:

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

FOAM وواجهة برمجة التطبيقات الأساسية PWLE

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

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

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

FOAM وواجهة برمجة التطبيقات المتقدّمة PWLE

يتم عرض FOAM للمطوّرين من خلال VibratorFrequencyProfile مع توفير المعلومات التالية:

  • نطاق التردد: يمكن للمطوّرين استرداد الحد الأدنى والحد الأقصى للترددات المتوافقة مع الجهاز، بوحدة هرتز، باستخدام getMinFrequencyHz وgetMaxFrequencyHz على التوالي.
  • الحد الأقصى لتسارع الإخراج: يتوفّر الحد الأقصى لتسارع الإخراج الذي يمكن أن يحقّقه الجهاز (بوحدة G) من خلال getMaxOutputAccelerationGs.
  • معدّل تكرار عملية ربط تسارع الإخراج: يوفّر getFrequenciesOutputAcceleration معدّل تكرار عملية ربط تسارع الإخراج كما هو موضّح في طبقة HAL.

يمكن للمطوّرين استخدام هذه المعلومات عند إنشاء تأثيرات غلاف باستخدام واجهة برمجة التطبيقات PWLE المتقدّمة. على سبيل المثال، عند تحديد تسارع الإخراج (بالوحدة G)، يجب أن يتم تحويله إلى قيمة ضمن النطاق [0.0, 1.0]، وذلك بالنسبة إلى الحد الأقصى لتسارع الإخراج في الجهاز.

باستخدام واجهة برمجة التطبيقات المتقدّمة PWLE، يمكن للمطوّرين استخدام نطاق التردد الكامل، لذا من المهم أن تكون بيانات FOAM المقدَّمة آمنة للمهتز وألا تتجاوز إمكاناته.

حدّ رصد الإدراك البشري

يشير حدّ رصد الإدراك البشري إلى الحد الأدنى لتسارع الاهتزاز الذي يمكن للشخص رصده بشكل موثوق. يختلف هذا المستوى حسب تردد الاهتزاز.

يوضّح الرسم البياني التالي الحد الأدنى لشدة الاهتزاز التي يمكن أن يرصدها الإنسان1، وذلك كدالة للتردد الزمني:

Human haptic perception detection
threshold

الشكل 2: حدّ رصد الإدراك الحسي اللمسي لدى الإنسان

لضمان أن يشعر المستخدمون بالتأثيرات اللمسية بشكل متسق، تتحقّق اختبارات VTS من أنّ الأجهزة التي تتضمّن إمكانات التغليف لديها نطاق تردد يمكنه إنتاج سعات اهتزاز تتجاوز عتبة رصد الإدراك البشري بمقدار 10 ديسيبل.

مستوى الاهتزاز المُدرَك مقارنةً بسعة تسارع الاهتزاز

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

\(Amplitude(G) =10^\frac{Amplitude(db)}{20}\)

حيث إنّ مستوى الصوت بالديسيبل هو مجموع مستوى الصوت وعتبة الرصد (القيمة على المحور الصادي في الرسم البياني التالي) عند تردد معيّن.

بهذه الطريقة، تضمن واجهة برمجة التطبيقات PWLE API أن تتغيّر الشدّة المدرَكة بشكل خطي بين أزواج نقاط التحكّم المتتالية.

يعرض الرسم البياني التالي مستويات تسارع الاهتزاز2 عند 10 و20 و30 و40 و50 ديسيبل من مستوى الصوت، بالإضافة إلى عتبة اكتشاف الإدراك الحسي البشري (0 ديسيبل من مستوى الصوت)، كدالة للتردد الزمني.

مستويات تسارع الاهتزاز

الشكل 3: مستويات تسارع الاهتزاز

تحديد منحنى تسارع الحد الأقصى للناتج

يقدّم هذا القسم إرشادات عامة حول كيفية الحصول على منحنى تسارع الإخراج الأقصى حسب التردد من الجهاز، والذي يمكنك استخدامه لإنشاء بيانات FOAM.

الحصول على منحنى الجهد الأقصى (V)

V هو الحد الأقصى للجهد الذي يمكن تطبيقه بأمان على جهاز الاهتزاز ضمن نطاق تردد التشغيل. ويضمن ذلك عمل المحرّك ضمن حدود آمنة، ما يمنع حدوث تلف ويزيد من قوة الاهتزاز.

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

احتساب الحد الأقصى للتسارع (M)

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

تحوّل هذه الطريقة الحد الأقصى للجهد المطبَّق عند تردد معيّن إلى الحد الأقصى لقيمة التسارع المقابلة، ويتم التعبير عنها بوحدة G peak.

المعادلة الأساسية المستخدَمة لهذه الإحالة الناجحة هي:

\(\text{Accel}(w)= (\text{Vsys}\times\text{BLsys}\times\text{Loc_coeff}/\text{Rsys}/\text{MPhone})\times{w^2}/\text{Psys_abs}/{9.81}\)

المكان:

Vsys: مستوى الجهد الفعلي المطبَّق على المحرّك اللمسي

BLsys: ناتج قوة المجال المغناطيسي (B) وطول الموصل (L) الخاصين بمحرّك الاهتزاز

Loc_coeff: معامل الموقع الجغرافي لتحويل مستوى تسارع الوحدة إلى مستوى تسارع الهاتف

Rsys: المقاومة الكهربائية لملف محرّك الاهتزاز

MPhone: كتلة الجهاز (على سبيل المثال، الهاتف)

w: التردد الزاوي (راديان في الثانية) لإشارة القيادة، ويتم حسابه على النحو التالي:

\(w = 2 \pi f\)

Psys_abs: استجابة السعة لنظام من الدرجة الثانية يتضمّن كتلة ومخمّد ونابض، ويتم احتسابها على النحو التالي:

\(\text{Psys_abs} = (\text{Wnsys}^2-w^2)^2+({w}\times(\text{Wnsys}/\text{Qsys}))^2\)

Wnsys: التردد الطبيعي لنظام الاهتزاز

Qsys: عامل الجودة لنظام الاهتزاز

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

\(\text{Loc_coeff} = \text{phone_acceleration} / \text{module_acceleration}\)

على سبيل المثال، إذا كان تسارع الوحدة 1 g وتسارع الهاتف 2.5 g، فإنّ Loc_coeff = 2.5. يشير ذلك إلى تضخيم بمقدار 2.5 مرة.

يستخدم إطار عمل Android التردد بوحدة الهرتز، لذا يجب أن يحوّل HAL وحدة التردد من راديان في الثانية إلى هرتز عند إنشاء بيانات FOAM.

إنشاء منحنى FOAM

اجمع بين منحنى الحد الأقصى للجهد (V) واحتساب التسارع (M) لتحديد منحنى FOAM:

  • لكل تردد (f) في النطاق المطلوب، ابحث عن الحد الأقصى للجهد V(f) المقابل من منحنى الحد الأقصى للجهد.
  • احسب الحد الأقصى للتسارع عند هذا التردد باستخدام المعادلة أعلاه، مع استبدال V(f) بـ Vsys وf بـ w. يمنحك ذلك M(V(f), f).
  • هذا التسارع المحسوب هو قيمة FOAM(f).

عرض بيانات FOAM

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

لتحسين دقة الاستيفاء الخطي عند تحديد قيم التسارع الوسيطة، ننصح بتحديد دقة عالية التردد حول التردد الذي يحقق الحد الأقصى من تسارع الإخراج. على سبيل المثال، استخدِم خطوات 1 هرتز ضمن نطاق +/- 10 هرتز من هذا التردد.

إمكانات الجهاز وقيوده

في نظام التشغيل Android 16 والإصدارات الأحدث، وللمساعدة في تحسين تأثيرات PWLE وضمان التوافق على جميع الأجهزة، يتضمّن Android واجهات برمجة تطبيقات HAL للاستعلام عن إمكانات PWLE في الجهاز. توفّر هذه الطرق معلومات حول قيود الجهاز، مثل الحد الأدنى أو الأقصى لمدة العنصر الأساسي في PWLE وعدد العناصر الأساسية المسموح بها في تركيبة PWLE.

تشمل واجهات برمجة التطبيقات لطبقة تجريد الأجهزة ما يلي:

  • CAP_COMPOSE_PWLE_EFFECTS_V2: يتم عرضها من خلال IVibrator.getCapabilities عندما يتيح الجهاز استخدام هذه الميزة.
  • getFrequencyToOutputAccelerationMap: تسترد هذه السمة بيانات FOAM.
  • getPwleV2PrimitiveDurationMinMillis: تسترد هذه السمة الحد الأدنى لمدة أي عنصر PWLE أساسي بوحدة الملّي ثانية.
  • getPwleV2PrimitiveDurationMaxMillis: تسترد هذه السمة الحد الأقصى لمدة أي عنصر PWLE أساسي، وذلك بالملي ثانية.
  • getPwleV2CompositionSizeMax: تعرض الحد الأقصى لعدد عناصر PWLE الأساسية التي يتيحها IVibrator.composePwleV2.

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

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


  1. يتم تحويل بيانات الحد الأدنى من إزاحة الحد الأدنى في الشكل 1 من Bolanowski Jr.، S. J., et al.. "أربع قنوات تتوسط الجوانب الميكانيكية للمس". Journal of the Acoustical Society of America 84(5): 1680-1694 (1988). يشرح هذا البرنامج التعليمي على الإنترنت عملية التحويل بين سعة التسارع وسعة الإزاحة. 

  2. يتم تقدير البيانات من الشكل 8 في Verrillo، R. T., et al.. "مقدار الإحساس بالمؤثرات الحسية الاهتزازية" Perception & Psychophysics 6: 366-372 (1969).