ثابت ها و اعداد اولیه را پیاده سازی کنید

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

فلوچارت اجرای لمسی فرآیند

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

فلوچارت مراحل پیاده سازی بدوی ها

شکل 3. پیاده سازی اولیه

ثابت ها را پیاده سازی کنید

ثابت های هپتیک در 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 .

فلوچارت مراحل آزمایش لمسی بازخورد

شکل 4. پیاده سازی ثابت های بازخورد

ثابت های هپتیک در 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 هستند.

  • چیرپ‌های اولیه: اولیه‌هایی با دامنه و فرکانس متغیر، معمولاً با مدت طولانی‌تری نسبت به نمونه‌های اولیه کوتاه. اینها عبارتند از SLOW_RISE , QUICK_RISE , QUCK_FALL , THUD و SPIN .

ابتدایی های کوتاه

اولیه های کوتاه را می توان با مشخصات شتاب خروجی موتور ویبراتور توصیف کرد. فرکانس مطلق مورد استفاده برای هر یک از روش های اولیه بسته به فرکانس تشدید محرک متفاوت است. برای اطلاعات بیشتر در مورد راه اندازی سخت افزار و ابزارهای اندازه گیری خروجی ، به تنظیم تجهیزات تست مراجعه کنید.

یک معیار کیفیت با ارزش برای ارتعاشات کوتاه، نسبت پالس به حلقه (PRR) است که در شکل 5 نشان داده شده است. PRR به عنوان نسبت بین پالس اصلی تعریف می شود که توسط سیگنال داخل پنجره مدت زمان که دامنه به 10% دامنه پیک کاهش می یابد و پالس حلقه در جایی که amplitude% با علامت دامنه 0 کاهش می یابد تعریف می شود. به کمتر از 1٪ از دامنه پیک. فرمول PRR این است:

$$ \text{Pulse to ring ratio (PRR)} = 20log_{10}\frac{\text{RMS (main pulse)}}{\text{RMS (ring)}} $$

برای اطلاعات بیشتر در مورد PRR، به تجزیه و تحلیل شکل موج و برای اطلاعات بیشتر در مورد تجزیه و تحلیل و مقایسه نتایج، به مقایسه نتایج با استفاده از نقشه عملکرد مراجعه کنید.

نسبت پالس به حلقه

شکل 5. تعریف نسبت پالس به حلقه

برای ایجاد بافت‌های نرم، از کلیدهای اولیه کوتاه به عنوان بازخورد ورودی کاربر استفاده کنید یا در ترکیب‌های طولانی‌تر پخش کنید. این بدان معنی است که آنها معمولاً به طور مکرر تحریک می شوند و به سرعت پخش می شوند. شدت درک شده از یک نمونه اولیه کوتاه می تواند شدت اثر بزرگتر را ترکیب کند. به همین دلیل، یک تیک منفرد یا تیک اولیه را با ترکیب بزرگتر، مثلاً 100 تیک متوالی، کالیبره کنید.

روی primitive کلیک کنید

کلیک اولیه یک اثر قوی و واضح است که معمولاً نزدیک به فرکانس تشدید دستگاه عمل می کند تا در مدت زمان کوتاهی به حداکثر خروجی برسد. قوی‌تر و عمیق‌تر از دیگر نمونه‌های اولیه است و با حداکثر شدت عمل می‌کند.

اگر در دسترس است، از اوردرایو موتور در ابتدا و از ترمز فعال در انتها استفاده کنید تا به زمان کوتاهی برای بالا و پایین رفتن موتور برسید. برای برخی از موتورها، استفاده از موج مربعی به جای موج سینوسی می تواند به شتاب سریعتری دست یابد. شکل 6 نمونه ای از مشخصات شتاب خروجی را برای کلیک اولیه نشان می دهد:

روی نمایه شتاب خروجی اولیه کلیک کنید

شکل 6. نمونه ای از مشخصات شتاب خروجی برای کلیک اولیه

پارامتر راهنما
مدت زمان

هدف: 12 میلی‌ثانیه

محدودیت: <30 میلی ثانیه

حداکثر شتاب خروجی

هدف: 2 گرم

محدودیت: > 1 گرم

فرکانس تقریباً در فرکانس تشدید

تیک ابتدایی (تیک سبک)

تیک اولیه یک اثر تیز و کوتاه است که معمولاً در محدوده فرکانس بالاتر عمل می کند. این اولیه را می توان به عنوان یک کلیک با شدت متوسط ​​در فرکانس بالاتر با دم کوتاه نیز توصیف کرد. همین دستورالعمل برای دستیابی به یک زمان خیز کوتاه با استفاده از اوردرایو موتور یا موج مربعی برای شروع اولیه و ترمز فعال در زمان افست اعمال می شود. شکل 7 نمونه ای از مشخصات شتاب خروجی را برای تیک اولیه نشان می دهد:

نمایه شتاب خروجی اولیه را علامت بزنید

شکل 7. نمونه ای از مشخصات شتاب خروجی برای تیک اولیه

پارامتر راهنما
مدت زمان

هدف: 5 میلی‌ثانیه

محدودیت: < 20 میلی ثانیه

حداکثر شتاب خروجی

هدف: نیمی از CLICK ، 1 گرم

حد: بین 0.5 گرم و 1 گرم

فرکانس

هدف: فرکانس تشدید 2 برابر

محدودیت: < 500 هرتز

تیک کم اولیه

کم تیک اولیه یک نسخه نرمتر و ضعیف تر از یک تیک سبک است که در محدوده فرکانس پایین تری کار می کند تا بدنه بیشتری را به اثر ارائه دهد. این اولیه را می‌توان به عنوان یک کلیک با شدت متوسط ​​در فرکانس پایین‌تر نیز توصیف کرد که برای استفاده مکرر برای بازخورد پویا در نظر گرفته شده است. همین دستورالعمل برای دستیابی به یک زمان خیز کوتاه با استفاده از اوردرایو موتور یا موج مربعی برای شروع اولیه اعمال می شود. شکل 8 نمونه ای از مشخصات شتاب خروجی را برای تیک ابتدایی کم نشان می دهد:

مشخصات شتاب خروجی اولیه با تیک کم

شکل 8. نمونه ای از مشخصات شتاب خروجی برای تیک ابتدایی کم

پارامتر راهنما
مدت زمان

هدف: 12 میلی‌ثانیه

محدودیت: <30 میلی ثانیه

حداکثر شتاب خروجی

هدف: 1/4 TICK ، 0.25 گرم

حد: بین 0.2 G و 0.5 G

فرکانس

هدف: فرکانس تشدید 2/3

محدودیت: < 100 هرتز

صدای جیر جیر بدوی ها

چیرپ های اولیه را می توان با سیگنال های ورودی برای سطح ولتاژ و فرکانس ارتعاش توصیف کرد. شتابی که موتور می‌تواند در محدوده‌های فرکانس مختلف تولید کند، بسته به منحنی پاسخ فرکانسی محرک متفاوت است. محدوده فرکانس و سطوح ولتاژ باید بر اساس هر دستگاه تنظیم شود.

خیز آهسته بدوی

افزایش آهسته دامنه و فرکانس حرکتی آهسته به سمت بالا با شروع نرم و افزایش مداوم شدت ارتعاش در سراسر جارو است. می توان آن را با یک جاروی مداوم دامنه و فرکانس، با استفاده از محدوده فرکانس پایین تر که خارج از رزونانس عمل می کند، پیاده سازی کرد. شکل 9 پارامترهای ورودی و نمونه ای از مشخصات شتاب خروجی را برای این پیاده سازی نشان می دهد. (خط قرمز با برچسب‌های دامنه در سمت چپ مطابقت دارد و نشان می‌دهد که چگونه دامنه ارتعاش با زمان تغییر می‌کند. خط آبی با برچسب‌های فرکانس سمت راست مطابقت دارد و نشان‌دهنده تغییر فرکانس ارتعاش با زمان است.)

پارامترهای ورودی و مشخصات شتاب خروجی برای ابتدایی افزایش آهسته

شکل 9. پارامترهای ورودی و نمونه پروفیل شتاب خروجی برای آهسته افزایش اولیه

اگر پاسخ فرکانسی موتور محدود باشد (به اندازه کافی از فرکانس رزونانس آن قوی نباشد)، یک روش جایگزین، جارو کردن سینوسی از 1/2 برابر به 1 برابر فرکانس تشدید است. رزونانس موتور به رسیدن به اوج سیگنال در پایان کمک می کند.

پارامتر راهنما
مدت زمان

هدف: 500 میلی‌ثانیه

میزان تحمل: 20 میلی‌ثانیه

حداکثر شتاب خروجی

هدف: 0.5 گرم

حد: بین 0.5 گرم و 1 گرم

فرکانس

هدف: 1/2 تا 2/3 فرکانس تشدید

جایگزین: 1/2 به فرکانس تشدید

ظهور سریع اولیه

افزایش سریع دامنه و فرکانس حرکت سریع‌تر به سمت بالا با شروع نرم و افزایش مداوم شدت ارتعاش در سراسر جارو است. شتاب خروجی و اهداف فرکانس ارتعاش باید مشابه با افزایش آهسته اولیه باشد که در مدت زمان کوتاه‌تری به دست می‌آید. شکل 10 پارامترهای ورودی ارتعاش و نمونه ای از مشخصات شتاب خروجی را برای خیز اولیه آهسته نشان می دهد. (خط قرمز با برچسب‌های دامنه در سمت چپ مطابقت دارد و نشان می‌دهد که چگونه دامنه ارتعاش با زمان تغییر می‌کند. خط آبی با برچسب‌های فرکانس سمت راست مطابقت دارد و نشان‌دهنده تغییر فرکانس ارتعاش با زمان است.)

پارامترهای ورودی و مشخصات شتاب خروجی برای افزایش سریع اولیه

شکل 10. پارامترهای ورودی و نمونه مشخصات شتاب خروجی برای افزایش سریع اولیه

پارامتر راهنما
مدت زمان

هدف: 150 میلی‌ثانیه

میزان تحمل: 20 میلی‌ثانیه

حداکثر شتاب خروجی

هدف: مانند SLOW_RISE

محدودیت: مانند SLOW_RISE

فرکانس

هدف: مانند SLOW_RISE

جایگزین: مانند SLOW_RISE

ابتدایی سقوط سریع

سقوط سریع یک حرکت رو به پایین دامنه و فرکانس سریع با شروع نرم است. شما می توانید از فرکانس بالاتر به عنوان نقطه شروع استفاده کنید در حالی که موتور در حال افزایش است تا به حداکثر شتاب خروجی برسد. فرکانس باید به طور مداوم در سراسر جارو کردن کاهش یابد، حتی در زمان افزایش. شکل 11 پارامترهای ورودی و نمونه ای از مشخصات شتاب خروجی را برای این پیاده سازی نشان می دهد. (خط قرمز با برچسب‌های دامنه در سمت چپ مطابقت دارد و نشان می‌دهد که چگونه دامنه ارتعاش با زمان تغییر می‌کند. خط آبی با برچسب‌های فرکانس سمت راست مطابقت دارد و نشان‌دهنده تغییر فرکانس ارتعاش با زمان است.)

پارامترهای ورودی و مشخصات شتاب خروجی برای سقوط سریع اولیه

شکل 11. پارامترهای ورودی و نمونه مشخصات شتاب خروجی برای سقوط سریع اولیه

پارامتر راهنما
مدت زمان

هدف: 100 میلی‌ثانیه

میزان تحمل: 20 میلی‌ثانیه

حداکثر شتاب خروجی

هدف: 1 گرم

حد: بین 0.5 G و 2 G

فرکانس

هدف: 2 برابر تا 1 برابر فرکانس تشدید

تاد بدوی

ضربه ضربان یک اثر ضربه‌ای، کم و ضربی است که حس فیزیکی ضربه زدن به چوب توخالی را شبیه‌سازی می‌کند. این بدوی در محدوده فرکانس پایین، مشابه با تیک ابتدایی پایین، عمل می کند تا بدنه بیشتری را به اثر ارائه دهد. شما می توانید thud primitive را به عنوان یک دامنه و فرکانس رو به پایین در محدوده فرکانس پایین تر (ترجیحا کمتر از 100 هرتز) پیاده سازی کنید. شکل 12 پارامترهای ورودی و نمونه ای از مشخصات شتاب خروجی را برای این پیاده سازی نشان می دهد. (خط قرمز با برچسب‌های دامنه در سمت چپ مطابقت دارد و نشان می‌دهد که چگونه دامنه ارتعاش با زمان تغییر می‌کند. خط آبی با برچسب‌های فرکانس سمت راست مطابقت دارد و نشان‌دهنده تغییر فرکانس ارتعاش با زمان است.)

پارامترهای ورودی و مشخصات شتاب خروجی برای thud primitive

شکل 12. پارامترهای ورودی و نمونه مشخصات شتاب خروجی برای thud primitive

اگر پاسخ فرکانس موتور محدود باشد، یک پیاده سازی جایگزین این است که با یک سیگنال درایو با شدت کامل در فرکانس تشدید شروع شود و به پایین ترین فرکانس ممکن که هنوز قابل درک است کاهش یابد. این رویکرد ممکن است نیاز به افزایش شدت سیگنال درایو در فرکانس پایین تر داشته باشد تا لرزش احساس شود.

پارامتر راهنما
مدت زمان

هدف: 300 میلی‌ثانیه

میزان تحمل: 20 میلی‌ثانیه

حداکثر شتاب خروجی

هدف: 0.25 گرم

حد: بین 0.2 G و 0.5 G

فرکانس

هدف: 1/2 تا 1/3 فرکانس تشدید

جایگزین: 1x تا 1/2 فرکانس تشدید

بدوی

چرخش یک تکانه چرخشی چرخش سریع بالا و پایین را با تأکیدی جزئی در مرکز شبیه‌سازی می‌کند. چرخش را می توان با جارو کردن دامنه و فرکانس به طور مستقل، در جهت مخالف و به دنبال آن حرکت معکوس اجرا کرد. استفاده از محدوده فرکانس کمتر (ترجیحا کمتر از 100 هرتز) مهم است. شکل 13 پارامترهای ورودی و نمونه ای از مشخصات شتاب خروجی را برای این پیاده سازی نشان می دهد. (خط قرمز با برچسب‌های دامنه در سمت چپ مطابقت دارد و نشان می‌دهد که چگونه دامنه ارتعاش با زمان تغییر می‌کند. خط آبی با برچسب‌های فرکانس سمت راست مطابقت دارد و نشان‌دهنده تغییر فرکانس ارتعاش با زمان است.)

ما توصیه می کنیم که اسپین اولیه دو بار پشت سر هم یا سه بار در ترکیبات نامیده شود تا به یک حس چرخش و ناپایدار برسد.

اگر پاسخ فرکانس موتور محدود باشد، یک اجرای جایگزین انجام یک جارو کردن سینوسی سریع از 1/2 برابر به 1 برابر فرکانس رزونانس و برگشت است. رزونانس موتور به طور خودکار به سیگنال در وسط تأکید می کند.

پارامترهای ورودی و مشخصات شتاب خروجی برای spin primitive

شکل 13. پارامترهای ورودی و نمونه مشخصات شتاب خروجی برای اسپین اولیه

پارامتر راهنما
مدت زمان

هدف: 150 میلی‌ثانیه

میزان تحمل: 20 میلی‌ثانیه

حداکثر شتاب خروجی

هدف: 0.5 گرم

حد: بین 0.25 G و 0.75 G

فرکانس

هدف: 2/3 تا 1/3، سپس به 1/2 فرکانس تشدید بازگشت

جایگزین: 2/3 به 1x، سپس به 1/2 فرکانس رزونانس بازگشت