ثابتها و مقادیر اولیهی لمسی توسط ویبراتور HAL تعریف شده و توسط چارچوب اندروید به APIهای عمومی نگاشت میشوند. برای تعیین اینکه آیا دستگاه شما حداقل الزامات لازم برای پیادهسازی لمسی را برآورده میکند یا خیر، این بررسیها را انجام دهید:

شکل ۲. اثرات پیادهسازی

شکل ۳. پیادهسازی عناصر اولیه
پیادهسازی ثابتها
ثابتهای لمسی در VibrationEffect میتوانند توسط توسعهدهندگان از طریق VibrationEffect.createPredefined() استفاده شوند. وضعیت پیادهسازی ثابتهای لمسی زیر را بررسی کنید.
| ثابتهای لمسی | مکانها و خلاصهها |
|---|---|
EFFECT_TICK ، EFFECT_CLICK ، EFFECT_HEAVY_CLICK ، EFFECT_DOUBLE_CLICK | کلاس VibrationEffectثابتهای لمسی در VibrationEffect هیچ مفهومی از رویدادهای ورودی را شامل نمیشوند و هیچ عنصر رابط کاربری ندارند. در عوض، ثابتها شامل مفهوم سطوح انرژی هستند، مانند EFFECT_CLICK و EFFECT_HEAVY_CLICK که توسط createPredefined() فراخوانی میشوند. |
ارتعاشات جایگزین که در ادامه توضیح داده میشوند، روی دستگاههایی اجرا میشوند که ثابتهای VibrationEffect پیادهسازی نمیکنند. بهروزرسانی این پیکربندیها برای بهترین عملکرد در چنین دستگاههایی توصیه میشود.
EFFECT_CLICKویبره موجی با
VibrationEffect.createWaveformایجاد شده و زمانبندیهای پیکربندی شده درframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.EFFECT_HEAVY_CLICKویبره موجی با
VibrationEffect.createWaveformایجاد شده و زمانبندیهای پیکربندی شده درframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern.-
EFFECT_DOUBLE_CLICK
ارتعاش موجی شکل با
VibrationEffect.createWaveformو زمانبندیها (0، 30، 100، 30) ایجاد شده است.-
EFFECT_TICKویبره موجی با
VibrationEffect.createWaveformایجاد شده و زمانبندیهای پیکربندی شده درframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.

شکل ۴. پیادهسازی ثابتهای بازخورد
ثابتهای لمسی در HapticFeedbackConstants میتوانند توسط توسعهدهندگان از طریق View.performHapticFeedback( ) استفاده شوند. وضعیت ثابتهای بازخورد عمومی زیر را بررسی کنید.
| ثابتهای لمسی | مکانها و خلاصهها |
|---|---|
CLOCK_TICK ، CONTEXT_CLICK KEYBOARD_PRESS ، KEYBOARD_RELEASE ، KEYBOARD_TAP ، LONG_PRESS ، TEXT_HANDLE_MOVE با دست، VIRTUAL_KEY ، VIRTUAL_KEY_RELEASE ، CONFIRM ، REJECT ، شروع GESTURE_START ، GESTURE_END | کلاس HapticFeedbackConstantsثابتهای لمسی در HapticFeedbackConstants به رویدادهای ورودی با عناصر رابط کاربری خاص، مانند KEYBOARD_PRESS و KEYBOARD_RELEASE ، که توسط performHapticFeedback() فراخوانی میشوند، کمک میکنند. |
پیادهسازی مقادیر اولیه
عناصر لمسی اولیه در VibrationEffect.Composition دارای شدت مقیاسپذیر هستند که توسعهدهندگان میتوانند از طریق addPrimitive(int primitiveId, float scale, int delay) از آنها استفاده کنند. عناصر اولیه را میتوان به دو دسته تقسیم کرد:
مقادیر اولیه کوتاه: مقادیر اولیه با مدت زمان کوتاه، معمولاً کمتر از 20 میلیثانیه. اینها
CLICK،TICKوLOW_TICKهستند.صداهای اولیهی جیرجیر (Chirp primitives): صداهای اولیهای با دامنه و فرکانس متغیر، معمولاً با مدت زمان طولانیتر از صداهای اولیهی کوتاه. اینها عبارتند از
SLOW_RISE،QUICK_RISE،QUCK_FALL،THUDوSPIN.
شکلهای اولیه کوتاه
شکلهای اولیه کوتاه را میتوان با مشخصات شتاب خروجی موتور ویبراتور توصیف کرد. فرکانس مطلق مورد استفاده برای هر شکل اولیه، بسته به فرکانس رزونانس محرک، متفاوت است. برای اطلاعات بیشتر در مورد تنظیمات سختافزاری و ابزارهای اندازهگیری خروجی، به بخش «تنظیم تجهیزات آزمایش» مراجعه کنید.
یک معیار کیفی ارزشمند برای ارتعاشات کوتاه، نسبت پالس به حلقه (PRR) است که در شکل 5 نشان داده شده است. PRR به صورت نسبت بین پالس اصلی ، که توسط سیگنال درون پنجره مدت زمان تعریف میشود و دامنه آن به 10٪ دامنه پیک کاهش مییابد، و پالس حلقه ، که توسط سیگنالی تعریف میشود که دامنه آن از 10٪ دامنه پیک به کمتر از 1٪ دامنه پیک کاهش مییابد، تعریف میشود. فرمول PRR به صورت زیر است:
برای اطلاعات بیشتر در مورد PRR، به بخش «تحلیل شکل موج» و برای اطلاعات بیشتر در مورد تحلیل و مقایسه نتایج، به بخش «مقایسه نتایج با استفاده از نقشه عملکرد» مراجعه کنید.

شکل ۵. تعریف نسبت پالس به حلقه
از صداهای اولیه کوتاه به عنوان بازخورد ورودی کاربر استفاده کنید یا در آهنگهای طولانیتر برای ایجاد بافتهای نرم پخش کنید. این بدان معناست که آنها معمولاً به طور مکرر فعال میشوند و به سرعت پشت سر هم پخش میشوند. شدت درک شده از یک صدای اولیه کوتاه میتواند شدت اثر بزرگتر را ترکیب کند. به همین دلیل، یک صدای اولیه تک تیک یا صدای اولیه کم تیک را با یک آهنگ بزرگتر، به عنوان مثال، ۱۰۰ صدای تیک متوالی، کالیبره کنید.
روی اولیه کلیک کنید
افکت کلیک پریمیتیو، یک افکت قوی و واضح است که معمولاً نزدیک به فرکانس رزونانس دستگاه عمل میکند تا در مدت زمان کوتاهی به حداکثر خروجی برسد. این افکت از سایر پریمیتیوها قویتر و عمیقتر است و با حداکثر شدت عمل میکند.
در صورت امکان، از اور درایو موتور در ابتدا و ترمز فعال در انتها برای دستیابی به زمان کوتاه صعود و سقوط موتور استفاده کنید. برای برخی موتورها، استفاده از موج مربعی به جای موج سینوسی میتواند شتاب سریعتری را به همراه داشته باشد. شکل 6 نمونهای از مشخصات شتاب خروجی برای قطعه کلیک را نشان میدهد:

شکل 6. نمونهای از پروفایل شتاب خروجی برای کلیک اولیه
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۱۲ میلیثانیه محدودیت: کمتر از 30 میلیثانیه |
| شتاب خروجی اوج | هدف: ۲ گرم محدودیت: > 1 گرم |
| فرکانس | تقریباً در فرکانس رزونانس |
تیک اولیه (تیک سبک)
تیک اولیه یک اثر تیز و کوتاه است که معمولاً در محدوده فرکانسی بالاتر عمل میکند. این اولیه را میتوان به عنوان یک کلیک با شدت متوسط در فرکانس بالاتر با دنباله کوتاه نیز توصیف کرد. همین دستورالعمل برای دستیابی به زمان خیز کوتاه با استفاده از اوردرایو موتور یا موج مربعی برای شروع اولیه و ترمز فعال در آفست نیز صدق میکند. شکل 7 نمونهای از مشخصات شتاب خروجی برای تیک اولیه را نشان میدهد:

شکل 7. نمونهای از پروفایل شتاب خروجی برای کنه اولیه
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۵ میلیثانیه محدودیت: کمتر از 20 میلیثانیه |
| شتاب خروجی اوج | هدف: نیمی از محدودیت: بین ۰.۵ گرم و ۱ گرم |
| فرکانس | هدف: فرکانس رزونانس ۲ برابر محدودیت: <500 هرتز |
کنه پایین اولیه
صدای تیک پایین، نسخهی نرمتر و ضعیفتری از صدای تیک سبک است که در محدودهی فرکانس پایینتری عمل میکند تا شدت بیشتری به اثر ببخشد. این صدای اولیه را میتوان به عنوان یک کلیک با شدت متوسط در فرکانس پایینتر نیز توصیف کرد که برای استفادهی مکرر در بازخورد پویا در نظر گرفته شده است. همین دستورالعمل برای دستیابی به زمان خیز کوتاه با استفاده از اوردرایو موتور یا موج مربعی برای شروع اولیه نیز صدق میکند. شکل 8 نمونهای از مشخصات شتاب خروجی برای صدای تیک پایین را نشان میدهد:

شکل ۸. نمونهای از پروفایل شتاب خروجی برای مقادیر اولیه با تیک کم
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۱۲ میلیثانیه محدودیت: کمتر از 30 میلیثانیه |
| شتاب خروجی اوج | هدف: ¼ محدودیت: بین ۰.۲ گرم و ۰.۵ گرم |
| فرکانس | هدف: ۲/۳ فرکانس رزونانس محدودیت: <100 هرتز |
شکلهای اولیه جیرجیر
پارامترهای اولیه چیرپ را میتوان با سیگنالهای ورودی برای سطح ولتاژ و فرکانس ارتعاش توصیف کرد. شتابی که موتور قادر به تولید آن در محدودههای فرکانسی مختلف است، بسته به منحنی پاسخ فرکانسی محرک متفاوت است. محدودههای فرکانس و سطوح ولتاژ باید بر اساس هر دستگاه تنظیم شوند.
بدوی با خیزش آهسته
افزایش آهسته، یک حرکت دامنه و فرکانس آهسته به سمت بالا با شروع نرم و افزایش مداوم شدت ارتعاش در طول حرکت است. این حرکت را میتوان با حرکت مداوم دامنه و فرکانس، با استفاده از یک محدوده فرکانس پایینتر که خارج از رزونانس عمل میکند، پیادهسازی کرد. شکل 9 پارامترهای ورودی و یک نمونه از مشخصات شتاب خروجی را برای این پیادهسازی نشان میدهد. (خط قرمز با برچسبهای دامنه در سمت چپ مطابقت دارد و نشان میدهد که چگونه دامنه ارتعاش با زمان تغییر میکند. خط آبی با برچسبهای فرکانس در سمت راست مطابقت دارد و نشان میدهد که چگونه فرکانس ارتعاش با زمان تغییر میکند.)

شکل ۹. پارامترهای ورودی و مثالی از پروفیل شتاب خروجی برای شتابدهندهی کندخیز
اگر پاسخ فرکانسی موتور محدود باشد (به اندازه کافی قوی نباشد) در این صورت، یک پیادهسازی جایگزین، یک جابجایی سینوسی از ۱/۲x تا ۱x فرکانس رزونانس است. رزونانس موتور در رسیدن به پیک سیگنال در انتها نقش دارد.
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۵۰۰ میلیثانیه تحمل: 20 میلی ثانیه |
| شتاب خروجی اوج | هدف: 0.5 گرم محدودیت: بین ۰.۵ گرم و ۱ گرم |
| فرکانس | هدف: ۱/۲ تا ۲/۳ فرکانس رزونانس جایگزین: ۱/۲ تا فرکانس رزونانس |
ظهور سریع اولیه
خیز سریع، دامنه و فرکانس سریعتری را به سمت بالا با شروع نرم و افزایش مداوم شدت ارتعاش در طول خیز، نشان میدهد. اهداف شتاب خروجی و فرکانس ارتعاش باید مشابه حالت اولیه خیز آهسته باشند و در مدت زمان کوتاهتری به دست آیند. شکل 10 پارامترهای ورودی ارتعاش و یک نمونه از مشخصات شتاب خروجی را برای حالت اولیه خیز آهسته نشان میدهد. (خط قرمز با برچسبهای دامنه در سمت چپ مطابقت دارد و نشان میدهد که چگونه دامنه ارتعاش با زمان تغییر میکند. خط آبی با برچسبهای فرکانس در سمت راست مطابقت دارد و نشان میدهد که چگونه فرکانس ارتعاش با زمان تغییر میکند.)

شکل 10. پارامترهای ورودی و مثالی از پروفیل شتاب خروجی برای سازه اولیه برخاست سریع
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۱۵۰ میلیثانیه تحمل: 20 میلی ثانیه |
| شتاب خروجی اوج | هدف: مشابه محدودیت: مشابه |
| فرکانس | هدف: مشابه جایگزین: مشابه |
سقوط سریع اولیه
افت سریع، یک حرکت سریع رو به پایین دامنه و فرکانس با شروع نرم است. میتوانید از فرکانس بالاتر به عنوان نقطه شروع استفاده کنید در حالی که موتور در حال افزایش سرعت برای رسیدن به حداکثر شتاب خروجی است. فرکانس باید به طور مداوم در طول حرکت، حتی در طول زمان افزایش، کاهش یابد. شکل 11 پارامترهای ورودی و یک نمونه از مشخصات شتاب خروجی را برای این پیادهسازی نشان میدهد. (خط قرمز با برچسبهای دامنه در سمت چپ مطابقت دارد و نشان میدهد که چگونه دامنه ارتعاش با زمان تغییر میکند. خط آبی با برچسبهای فرکانس در سمت راست مطابقت دارد و نشان میدهد که چگونه فرکانس ارتعاش با زمان تغییر میکند.)

شکل ۱۱. پارامترهای ورودی و مثالی از پروفیل شتاب خروجی برای تابع سقوط سریع
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۱۰۰ میلیثانیه تحمل: 20 میلی ثانیه |
| شتاب خروجی اوج | هدف: ۱ گرم محدودیت: بین ۰.۵ تا ۲ گرم |
| فرکانس | هدف: ۲ تا ۱ برابر فرکانس رزونانس |
تود پریمیتیو
ضربه (thud) یک افکت کوبشی، بم و ضربهای است که حس فیزیکی ضربه زدن روی چوب توخالی را شبیهسازی میکند. این افکت اولیه در محدوده فرکانس پایین، مشابه افکت اولیه تیک پایین، عمل میکند تا به افکت، جسامت بیشتری بدهد. میتوانید افکت اولیه ضربه را به عنوان یک حرکت رو به پایین دامنه و فرکانس در محدوده فرکانس پایینتر (ترجیحاً کمتر از ۱۰۰ هرتز) پیادهسازی کنید. شکل ۱۲ پارامترهای ورودی و یک نمونه از پروفایل شتاب خروجی را برای این پیادهسازی نشان میدهد. (خط قرمز با برچسبهای دامنه در سمت چپ مطابقت دارد و نشان میدهد که چگونه دامنه ارتعاش با زمان تغییر میکند. خط آبی با برچسبهای فرکانس در سمت راست مطابقت دارد و نشان میدهد که چگونه فرکانس ارتعاش با زمان تغییر میکند.)

شکل ۱۲. پارامترهای ورودی و مثالی از پروفیل شتاب خروجی برای تابع ضربه اولیه
اگر پاسخ فرکانسی موتور محدود باشد، یک روش جایگزین برای پیادهسازی، شروع با یک سیگنال محرک با شدت کامل در فرکانس رزونانس و کاهش آن به کمترین فرکانس ممکن است که هنوز قابل درک باشد. این رویکرد ممکن است نیاز به افزایش شدت سیگنال محرک در فرکانس پایینتر داشته باشد تا لرزش احساس شود.
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۳۰۰ میلیثانیه تحمل: 20 میلی ثانیه |
| شتاب خروجی اوج | هدف: 0.25 گرم محدودیت: بین ۰.۲ گرم و ۰.۵ گرم |
| فرکانس | هدف: ۱/۲ تا ۱/۳ فرکانس رزونانس جایگزین: ۱x تا ۱/۲ فرکانس رزونانس |
چرخش اولیه
این چرخش، یک تکانه چرخشی سریع به بالا و پایین را با کمی تأکید در مرکز شبیهسازی میکند. چرخش را میتوان با جابجایی مستقل دامنه و فرکانس، در جهتهای مخالف و به دنبال آن حرکت معکوس پیادهسازی کرد. استفاده از محدوده فرکانس پایینتر (ترجیحاً کمتر از ۱۰۰ هرتز) مهم است. شکل ۱۳ پارامترهای ورودی و یک نمونه از مشخصات شتاب خروجی را برای این پیادهسازی نشان میدهد. (خط قرمز با برچسبهای دامنه در سمت چپ مطابقت دارد و نشان میدهد که چگونه دامنه ارتعاش با زمان تغییر میکند. خط آبی با برچسبهای فرکانس در سمت راست مطابقت دارد و نشان میدهد که چگونه فرکانس ارتعاش با زمان تغییر میکند.)
ما توصیه کردیم که برای دستیابی به حس چرخشی و ناپایدار، نماد اولیه چرخش دو بار پشت سر هم یا در قطعات موسیقی سه بار خوانده شود.
اگر پاسخ فرکانسی موتور محدود باشد، یک پیادهسازی جایگزین، انجام یک حرکت سینوسی سریع از ۱/۲ برابر فرکانس رزونانس به ۱ برابر و برعکس است. رزونانس موتور به طور خودکار به سیگنال در وسط، یک تشدید میدهد.

شکل ۱۳. پارامترهای ورودی و مثالی از پروفیل شتاب خروجی برای شکل اولیه اسپین
| پارامتر | راهنما |
|---|---|
| مدت زمان | هدف: ۱۵۰ میلیثانیه تحمل: 20 میلی ثانیه |
| شتاب خروجی اوج | هدف: 0.5 گرم محدودیت: بین ۰.۲۵ گرم و ۰.۷۵ گرم |
| فرکانس | هدف: ۲/۳ تا ۱/۳، سپس بازگشت به ۱/۲ فرکانس رزونانس جایگزین: ۲/۳ تا ۱x، سپس بازگشت به ۱/۲ فرکانس رزونانس |