تأثيرات الغلاف الخطي المجزأ (PWLE) هي تسلسلات من النقاط التي تحدِّد وتيرة الاهتزاز والتسارع بمرور الوقت. تقدّم تقنية PWLE ملاحظات لمسية أكثر إثارةً وتفاعلاً.
يقدّم الإصدار 16 من Android والإصدارات الأحدث واجهتَي برمجة تطبيقات موجهتَين للمطوّرين للمساعدة في إنشاء تأثيرات PWLE:
- واجهة برمجة التطبيقات الأساسية لبرنامج PWLE: بسيطة، ولكن مع بعض القيود مناسبة للبدء
بسرعة يتوفّر هذا الإجراء على الرابط
BasicEnvelopeBuilder
. - Advanced PWLE API: توفّر هذه الواجهة مزيدًا من التحكّم والمرونة، وتتطلّب معرفة باللمس
وبعض الخبرة في الأجهزة. متوفّر على الرابط:
WaveformEnvelopeBuilder
.
لتتوافق الأجهزة مع واجهات برمجة التطبيقات هذه، يجب أن توفّر واجهات برمجة التطبيقات التالية لHAL:
- تعيين التردد إلى التسارع الناتج (FOAM): يوفّر هذا الإجراء تعيينًا لتردد الاهتزاز إلى الحد الأقصى من التسارع الناتج الذي يمكن تحقيقه في الجهاز.
- إنشاء إشارة طاقة متقطعة: لتشغيل اهتزاز محدّد من خلال إشارة طاقة متقطعة لموجة الاهتزاز
واجهة برمجة التطبيقات الأساسية لبرنامج PWLE
للحصول على طريقة سريعة لإنشاء تأثيرات 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 المتكاملة، يتطلّب الإطار المرجعي أن تكون الأجهزة المتوافقة مع هذه الميزة قادرة على معالجة مدة لا تقل عن 10 ملي ثانية بين نقاط PWLE و16 نقطة على الأقل لتأثيرات PWLE. يتم فرض هذه المتطلبات من خلال اختبارات فحص الأجهزة للتحقق من إمكانية تشغيل التطبيقات، ما يساعد في ضمان فعالية تأثيرات 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 الخاص بالجهاز. إذا تجاوزت القيم هذه الحدود، لا يصدر الجهاز أي vibrate.
ربط معدّل تكرار المحتوى بمعدل سرعة الإخراج (FOAM)
إنّ التمثيل الدقيق لفرص الجهاز في تسريع الإخراج هو أمر أساسي لدعم واجهات برمجة تطبيقات PWLE. يوضّح هذا القسم بالتفصيل أهمية هذه البيانات وكيفية استخدام واجهات برمجة التطبيقات PWLE لها وعملية إنشائها.
فهم عملية الربط
يجب أن تقدّم الأجهزة التي تتيح تأثيرات PWLE معدّل تكرار لإخراج خريطة التسارع (FOAM). تنسيق FOAM هو بنية بيانات يتم إنشاؤها بواسطة HAL، وهي تربط تردد الاهتزاز (بالهرتز) بأكبر تسارع ناتج يمكن أن يحققه المحرّك (بوحدة G peak) عند هذا التردد. هذه الخريطة مهمة لفهم كيفية تغيُّر ناتج الاهتزاز لنطاق التردد المتوافق، ولتحديد واجهة برمجة التطبيقات الأساسية لنظام PWLE.
يعرض الرسم البياني التالي مثالاً على نموذج FOAM لمحرك مرن نموذجي، مع تقييد الجهد الكهربي للإدخال حول التردد الرنان لحماية المحرّك:
الشكل 1: مثال على نموذج FOAM لمحرك ترددي نموذجي
تخدم استراتيجية FOAM ثلاثة أغراض رئيسية:
- تحديد النطاق الكامل للتردد: تحدِّد ميزة FOAM النطاق الكامل للتردد في الجهاز من خلال تحديد الحد الأدنى والحد الأقصى لترددات الاهتزاز المتوافقة.
- تحديد قيم الشدة والحدة: تعمل واجهة برمجة التطبيقات الأساسية لنظام PWLE على مقياس إدراك الإنسان للشدة والحدة، ويتم بعد ذلك ربطها بمعلمات تردد الأجهزة وسعة الموجة باستخدام قيم تسريع الإخراج في تنسيق FOAM. يساعد هذا الربط في ضمان عرض التأثيرات اللمسية وفقًا لإمكانات الجهاز. يتم تحديد نطاق الحدة بواسطة الحد الأدنى للحد الأدنى المُدرك ويتوافق مع الترددات التي يمكن للجهاز من خلالها إنتاج تأثيرات لمسية يمكن للمستخدمين الشعور بها. يربط الإطار القيم "للكثافة" بسعة الموجة استنادًا إلى تسريع المخرجات المستهدف عند معدّل التكرار المحدّد. يساعد ذلك في ضمان تحقيق مستوى الكثافة المحدّد مع البقاء ضمن إمكانات الجهاز.
- إتاحة إمكانات الأجهزة: يتم عرض واجهة FOAM للمطوّرين في IDE
VibratorFrequencyProfile
، ما يوفر التردد الكامل لإخراج مجموعة بياناتacceleration التي تفصّل بعض إمكانات الجهاز في مجال اللمس. وتمنح هذه البيانات المطوّرين الذين يستخدمون واجهة برمجة التطبيقات PWLE API المتقدّمة إمكانية إنشاء تأثيرات customized للاهتزاز تتجاوز نطاقات الحدّة والحدة الأساسية التي يحدّدها إطار العمل.
FOAM وواجهة برمجة التطبيقات الأساسية لبرنامج PWLE
يلعب نموذج FOAM دورًا حيويًا في تشكيل تأثيرات الاهتزاز. ويتم استخدامه لاحتساب نطاق الحدة لواجهة برمجة التطبيقات الأساسية للغلاف، ما يضمن أن تكون الاهتزازات ملحوظة للمستخدم. يتوافق هذا النطاق مع الترددات التي لا يقل فيها معدل التسارع الناتج عن الصوت عن 10 ديسيبل فوق الحدّ الأدنى لرصده (أي الحدّ الأدنى للمستوى الذي يمكن تمييزه) لكل تردد. يضمن ذلك أن تكون الاهتزازات قوية بما يكفي ليشعر بها المستخدم.
بالإضافة إلى ذلك، يستخدم إطار العمل بيانات FOAM لربط قيم الكثافة والحدة المستخدَمة في واجهة برمجة التطبيقات الأساسية لنظام PWLE بقيم السعة والتردد المقابلة لها. يساعد هذا الربط في إنتاج ردود فعل لمسية محسوسة على مختلف الأجهزة.
يتم إجراء اختبارات VTS للتأكّد من أنّ الأجهزة التي تتيح تأثيرات الغلاف الصوتي تحتوي على نطاق تردد غير فارغ ينتج عنه اهتزازات محسوسة. يساعد ذلك في ضمان أنّ الجهاز يمكنه إنتاج اهتزازات بكثافة كافية ليشعر بها المستخدمون بوضوح.
FOAM وواجهة برمجة التطبيقات المتقدّمة لبرنامج PWLE
يعرض VibratorFrequencyProfile
واجهة FOAM للمطوّرين مع
المعلومات التالية:
- نطاق التردد: يمكن للمطوّرين استرداد الحد الأدنى والقصوى للترددات المتوافقة مع الجهاز، بالهرتز، باستخدام
getMinFrequencyHz
وgetMaxFrequencyHz
على التوالي. - أقصى تسارع للطاقة المُخرجة: يتوفّر أقصى تسارع ناتج (بوحدة G) يمكن تحقيقه من خلال الجهاز من خلال
getMaxOutputAccelerationGs
. - تعيين معدل تكرار الإخراج لتسريع المعالجة: فراهمة
getFrequenciesOutputAcceleration
تعيين معدل تكرار الإخراج لتسريع المعالجة كما هو مُطبَّق في HAL.
يمكن للمطوّرين استخدام هذه المعلومات عند إنشاء تأثيرات المظروف باستخدام واجهة برمجة التطبيقات PWLE API المتقدّمة. على سبيل المثال، عند تحديد تسارع الإخراج (بوحدة G)، يجب تسويته إلى قيمة ضمن النطاق [0.0، 1.0]، مقارنةً بشدّة تسارع الإخراج القصوى للجهاز.
باستخدام واجهة برمجة التطبيقات PWLE API المتقدّمة، يمكن للمطوّرين استخدام نطاق التردد بالكامل، لذلك من المهم أن تكون بيانات FOAM المقدَّمة آمنة للاهتزاز ولا تتعدى إمكاناته.
حدّ رصد الإدراك البشري
يشير حدّ رصد الإدراك البشري إلى الحدّ الأدنى لتسارع الاهتزاز الذي يمكن لشخص رصده بشكل موثوق. يختلف هذا المستوى استنادًا إلى وتيرة الاهتزاز.
يعرض الرسم البياني التالي حدّ رصد الإدراك الحسي للمس1، في التسارع، بصفتها دالةً للتردد الزمني:
الشكل 2: الحد الأدنى لرصد الإدراك الحسي البشري
لكي يشعر المستخدمون باستمرار بالتأثيرات الحسية، تُجري اختبارات VTS عمليات التحقّق من أنّ الأجهزة التي تتضمّن إمكانات لفائف الحزمة تمتلك نطاقًا للتردد يمكنه إنتاج معدّلات اهتزاز تتجاوز الحدّ الأدنى لرصد الإدراك البشري بمقدار 10 ديسيبل.
شدة الاهتزاز المُلاحظة مقارنةً بسعة تسارع الاهتزاز
لا يزداد إدراك الإنسان لمستوى الاهتزاز (مقياس الإدراك) بشكل خطي مع سعة الاهتزاز (مَعلمة جسدية). تفترض PWLE API أنّه عندما يفكر المصمّم أو المطوّر في التغييرات في قوة الاهتزاز، يتوقّع أن تتّبع الكثافة المتأثّرة منحنى PWLE. تتميز الكثافة المتأثّرة بمستوى الإحساس (SL)، والذي يتم تعريفه على أنّه ديسيبل فوق حدّ الكشف بالتردد نفسه. وبالتالي، يمكن احتساب سعة تسارع الاهتزاز (بوحدة G peak) على النحو التالي:
\(Amplitude(G) =10^\frac{Amplitude(db)}{20}\)
حيث يكون مقدار الديسيبل هو مجموع SL وحدّ الكشف (القيمة على طول محور الصادات في الرسم البياني التالي) عند تردد معيّن.
بهذه الطريقة، تضمن واجهة برمجة التطبيقات PWLE API تغيُّر الكثافة المحسوسة بشكل خطي بين أزواج متتالية من نقاط التحكّم.
يعرض الرسم البياني التالي مستويات تسارع الاهتزاز2 عند 10 و20 و30 و40 و50 ديسيبل SL، بالإضافة إلى الحدّ الأدنى لرصد الإحساس باللمس البشري (0 ديسيبل SL)، وذلك استنادًا إلى معدّل التكرار الزمني.
الشكل 3: مستويات تسارع الاهتزاز
تحديد منحنى التسارع لعدد مرات التكرار إلى أقصى طاقة
يوفّر هذا القسم إرشادات عامة حول كيفية الحصول على منحنى تكرار أقصى تسارع للإخراج من الجهاز، والذي تستخدمه لإنشاء بيانات FOAM.
الحصول على منحنى الجهد الأقصى (V)
V
هو الحد الأقصى للجهد الذي يمكن تطبيقه بأمان على الهزّاز على مدار
نطاق التردد التشغيلي. يضمن ذلك عمل الهزّاز ضمن حدود آمنة، ما يمنع حدوث تلف ويزيد من قوة الهزّ.
إذا كان الجهاز يتضمّن ميزة تقييد الجهد الكهربي، استخدِمها مباشرةً لقياس الحد الأقصى للجهد الكهربي الذي يمكن تحقيقه في نطاق الترددات المتوافق.
احتساب الحد الأقصى للتسارع (م)
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).
على الرغم من عدم توفّر متطلبات صارمة لدرجة دقة نموذج FOAM، ننصح بتحديد منحنيات ذات ذروة واحدة كحد أقصى. لا يتم استخدام سوى الذروة الأولى في واجهة برمجة التطبيقات الأساسية لملف الترميز الصوتي لربط تأثيرات الاهتزاز. لتحسين دقة ال interpolation الخطي عند تحديد قيم التسارع الوسيطة، ننصح بتحديد درجة دقة عالية للتردد حول الذروة. على سبيل المثال، استخدِم خطوات بمعدل 1 هرتز ضمن النطاق +/- 10 هرتز من التردد الأقصى.
إمكانات الجهاز والقيود المفروضة عليه
في الإصدار 16 من Android والإصدارات الأحدث، لمساعدة المطوّرين على تحسين تأثيرات PWLE وضمان التوافق على جميع الأجهزة، يتضمّن Android واجهات برمجة التطبيقات HAL API للاستعلام عن إمكانات PWLE للجهاز. تقدّم هذه الطرق معلومات عن قيود الجهاز، مثل الحد الأدنى أو الحد الأقصى لمدة العنصر الأساسي لملف PWLE ومقدار العناصر الأساسية المسموح بها في تركيبة PWLE.
تشمل واجهات برمجة تطبيقات HAL ما يلي:
-
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). يوضّح هذا الدليل التعليمي على الإنترنت عملية التحويل بين amplitude التسارع وamplitude القصوى للزحزحة. ↩
-
تم تقدير البيانات من الشكل 8 في Verrillo، R. تي وآخرون "مقدار الإحساس بالعوامل المهيجة للاهتزاز واللمس". Perception & Psychophysics 6: 366-372 (1969). ↩