رایج ترین محرک های ارتعاشی در دستگاه های اندرویدی ، محرک های تشدید خطی (LRAs) هستند. LRAها احساس کلیک روی یک دکمه را شبیه سازی می کنند که در غیر این صورت یک سطح شیشه ای بی پاسخ است. یک سیگنال بازخورد کلیک واضح و واضح معمولا بین 10 تا 20 میلی ثانیه طول می کشد. این حس باعث می شود که تعامل با کاربر طبیعی تر شود. برای صفحه کلیدهای مجازی، این بازخورد کلیک می تواند سرعت تایپ را افزایش داده و خطاها را کاهش دهد.
LRA ها دارای چند فرکانس تشدید مشترک هستند:
- برخی از LRAها دارای فرکانس تشدید در محدوده 200 تا 300 هرتز بودند که با فرکانسی که پوست انسان در آن بیشترین حساسیت را به ارتعاش دارد همزمان است. احساس ارتعاشات در این محدوده فرکانس معمولاً به صورت صاف، تیز و نافذ توصیف می شود.
- مدلهای دیگر LRA فرکانسهای تشدید پایینتری دارند، در حدود 150 هرتز. احساس از نظر کیفی نرمتر و پرتر (از نظر ابعاد) است.
با توجه به ولتاژ ورودی یکسان در دو فرکانس مختلف، دامنه خروجی ارتعاش می تواند متفاوت باشد. هر چه فرکانس از فرکانس تشدید LRA دورتر باشد، دامنه ارتعاش آن کمتر است.
جلوه های لمسی یک دستگاه خاص از محرک لرزش و درایور آن استفاده می کند. درایورهای هپتیک که شامل ویژگیهای ترمز بیش از حد و فعال هستند، میتوانند زمان خیز و زنگ LRA را کاهش دهند و منجر به لرزش واضحتر و واکنشپذیرتر شوند.
هموارسازی شکل موج پیش فرض در دستگاه ها
برای مثال، نحوه رفتار یک الگوی شکل موج سفارشی در یک دستگاه عمومی را در نظر بگیرید:
کاتلین
val timings: LongArray = longArrayOf(50, 50, 50, 50, 50, 100, 350, 250)
val amplitudes: IntArray = intArrayOf(77, 79, 84, 99, 143, 255, 0, 255)
val repeatIndex = -1 // Don't repeat.
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))
جاوا
long[] timings = new long[] { 50, 50, 50, 50, 50, 100, 350, 250 };
int[] amplitudes = new int[] { 77, 79, 84, 99, 143, 255, 0, 255 };
int repeatIndex = -1 // Don't repeat.
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));
نمودارهای زیر شکل موج ورودی و شتاب خروجی مربوط به قطعه کد قبلی را نشان می دهد. توجه داشته باشید که شتاب به تدریج افزایش مییابد، نه ناگهانی، هر زمان که دامنه تغییر پلهای در الگو وجود دارد - یعنی در 0ms، 150ms، 200ms، 250ms و 700ms. همچنین در هر مرحله تغییر دامنه، یک افزایش بیش از حد وجود دارد و زمانی که دامنه ورودی ناگهان به 0 می رسد، زنگ قابل مشاهده ای وجود دارد که حداقل 50 میلی ثانیه طول می کشد.
الگوی لمسی بهبود یافته
برای جلوگیری از بیش از حد و کاهش زمان زنگ، دامنه ها را به تدریج تغییر دهید. شکل زیر نمودارهای شکل موج و شتاب نسخه اصلاح شده را نشان می دهد:
کاتلین
val timings: LongArray = longArrayOf(
25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
300, 25, 25, 150, 25, 25, 25
)
val amplitudes: IntArray = intArrayOf(
38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
0, 85, 170, 255, 170, 85, 0
)
val repeatIndex = -1 // Do not repeat.
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))
جاوا
long[] timings = new long[] {
25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
300, 25, 25, 150, 25, 25, 25
};
int[] amplitudes = new int[] {
38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
0, 85, 170, 255, 170, 85, 0
};
int repeatIndex = -1; // Do not repeat.
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));
جلوه های لمسی پیچیده تری ایجاد کنید
عناصر دیگر در یک پاسخ کلیک رضایتبخش پیچیدهتر هستند و به دانش LRA مورد استفاده در دستگاه نیاز دارند. برای بهترین نتیجه، از شکل موج های از پیش ساخته شده دستگاه و ثابت های ارائه شده توسط پلت فرم استفاده کنید که به شما امکان می دهد کارهای زیر را انجام دهید:
- جلوه های واضح و ابتدایی را اجرا کنید.
- آنها را به هم متصل کنید تا جلوه های لمسی جدید بسازید.
این ثابت های لمسی و اولیه از پیش تعریف شده می توانند در عین ایجاد جلوه های لمسی با کیفیت بالا، سرعت کار شما را تا حد زیادی افزایش دهند.