تأثيرات غلاف الدالة الخطية المجزأة (PWLE) هي تسلسلات من النقاط التي تحدد تردد الاهتزاز والتسارع بمرور الوقت. توفّر PWLEs ملاحظات لمسية أكثر تفصيلاً وديناميكية.
يوفر نظام التشغيل 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 لمشغّل رنان نموذجي، مع حصر جهد الإدخال حول التردد الرنان لحماية المحرك:
الشكل 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، وذلك من حيث التسارع، كدالة للتردد الزمني:
الشكل 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 غرام وتسارع الهاتف 2.5 غرام، فإنّ 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).
مع أنّه ما مِن متطلبات صارمة بشأن دقة FOAM، ننصح بتحديد منحنيات تتضمّن قمة واحدة كحد أقصى. يتم استخدام الذروة الأولى فقط في واجهة برمجة التطبيقات الأساسية الخاصة بالمنحنى لتحديد تأثيرات الاهتزاز. لتحسين دقة الاستيفاء الخطي عند تحديد قيم التسارع الوسيطة، ننصح بتحديد دقة عالية التردد حول الذروة. على سبيل المثال، استخدِم خطوات 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 API.
يستخدم إطار العمل أيضًا واجهات برمجة التطبيقات هذه عند التعامل مع المؤثرات التي تم إنشاؤها باستخدام واجهة برمجة التطبيقات الأساسية. إذا تجاوز أحد المؤثرات حدود الجهاز (على سبيل المثال، عدد كبير جدًا من نقاط PWLE أو مدة تتجاوز الحد الأقصى)، سيعدّل إطار العمل المؤثر تلقائيًا ليتناسب مع الحدود المسموح بها. وتحاول عملية التعديل هذه الحفاظ على الغرض الأصلي للتصميم وإحساسه قدر الإمكان.
-
يتم تحويل بيانات الحد الأدنى من إزاحة الحد الأدنى في الشكل 1 من Bolanowski Jr.، S. J., et al.. "أربع قنوات تتوسّط الجوانب الميكانيكية للمس". Journal of the Acoustical Society of America 84(5): 1680-1694 (1988). يشرح هذا البرنامج التعليمي على الإنترنت عملية التحويل بين سعة التسارع وسعة الإزاحة. ↩
-
يتم تقدير البيانات من الشكل 8 في Verrillo, R. T., et al.. "مقدار الإحساس بالمؤثرات الحسية الاهتزازية" Perception & Psychophysics 6: 366-372 (1969). ↩