Android डिवाइसों पर, लीनियर रेज़ोनेंट ऐक्चुएटर (एलआरए) सबसे आम वाइब्रेशन ऐक्चुएटर होते हैं. एलआरए, बटन पर क्लिक करने की भावना को सिम्युलेट करते हैं. ऐसा तब होता है, जब ग्लास के सरफ़ेस पर बटन काम न कर रहा हो. आम तौर पर, क्लिक फ़ीडबैक का साफ़ और सटीक सिग्नल 10 से 20 मिलीसेकंड तक रहता है. इस सुविधा की मदद से, उपयोगकर्ताओं को इंटरैक्शन ज़्यादा स्वाभाविक लगते हैं. वर्चुअल कीबोर्ड के लिए, क्लिक फ़ीडबैक की सुविधा से टाइप करने की स्पीड बढ़ सकती है और गड़बड़ियां कम हो सकती हैं.
एलआरए में कुछ सामान्य रेज़ोनेंट फ़्रीक्वेंसी होती हैं:
- कुछ एलआरए की अनुनाद फ़्रीक्वेंसी 200 से 300 हर्ट्ज़ की रेंज में थी. यह फ़्रीक्वेंसी, उस फ़्रीक्वेंसी से मेल खाती है जिस पर इंसान की त्वचा, वाइब्रेशन के प्रति सबसे ज़्यादा संवेदनशील होती है. इस फ़्रीक्वेंसी रेंज में वाइब्रेशन की अनुभूति को आम तौर पर, स्मूद, तेज़, और अंदर तक पहुंचने वाला बताया जाता है.
- एलआरए के अन्य मॉडल की अनुनाद फ़्रीक्वेंसी कम होती है, जो करीब 150 Hz होती है. इसकी क्वालिटी बेहतर और डाइमेंशन में ज़्यादा होती है.
दो अलग-अलग फ़्रीक्वेंसी पर एक ही इनपुट वोल्टेज होने पर, वाइब्रेशन आउटपुट के ऐम्प्लच्यूड अलग-अलग हो सकते हैं. फ़्रीक्वेंसी, एलआरए की रेज़ोनेंट फ़्रीक्वेंसी से जितनी ज़्यादा दूर होगी, उसका वाइब्रेशन ऐम्प्ल्यट्यूड उतना ही कम होगा.
किसी डिवाइस के हैप्टिक इफ़ेक्ट, वाइब्रेशन ऐक्चुएटर और उसके ड्राइवर, दोनों का इस्तेमाल करते हैं. ओवरड्राइव और ऐक्टिव ब्रेकिंग की सुविधाओं वाले हैप्टिक ड्राइवर, एलआरए के रिज़न और रिंगिंग को कम कर सकते हैं. इससे, बेहतर और साफ़ वाइब्रेशन मिलता है.
डिवाइसों पर, वेवफ़ॉर्म को डिफ़ॉल्ट रूप से स्मूद करना
उदाहरण के लिए, देखें कि किसी सामान्य डिवाइस पर कस्टम वेवफ़ॉर्म पैटर्न कैसे काम करता है:
Kotlin
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))
Java
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));
नीचे दिए गए प्लॉट में, ऊपर दिए गए कोड स्निपेट से जुड़ा इनपुट वेवफ़ॉर्म और आउटपुट ऐक्सेलरेशन दिखाया गया है. ध्यान दें कि जब भी पैटर्न में ऐम्प्ल्यट्यूड में अचानक बदलाव होता है, तो ऐक्सेलरेशन अचानक नहीं, बल्कि धीरे-धीरे बढ़ता है. जैसे, 0 मि॰से॰, 150 मि॰से॰, 200 मि॰से॰, 250 मि॰से॰, और 700 मि॰से॰ पर. ऐम्प्ल्यट्यूड में हर चरण में बदलाव होने पर, ऐम्प्ल्यट्यूड में बढ़ोतरी भी होती है. साथ ही, इनपुट ऐम्प्ल्यट्यूड के अचानक 0 पर गिरने पर, कम से कम 50 मिलीसेकंड तक रिंगिंग दिखती है.
बेहतर हैप्टिक पैटर्न
ओवरशूट से बचने और रिंगिंग का समय कम करने के लिए, ऐम्प्लिटी को धीरे-धीरे बदलें. यहां, बदलाव किए गए वर्शन के वेवफ़ॉर्म और ऐक्सेलरेशन प्लॉट दिखाए गए हैं:
Kotlin
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))
Java
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));
ज़्यादा जटिल हैप्टिक इफ़ेक्ट बनाना
क्लिक रिस्पॉन्स के दूसरे एलिमेंट ज़्यादा जटिल होते हैं. इनके लिए, डिवाइस में इस्तेमाल किए गए एलआरए के बारे में कुछ जानकारी ज़रूरी होती है. बेहतर नतीजे पाने के लिए, डिवाइस पर पहले से मौजूद वेवफ़ॉर्म और प्लैटफ़ॉर्म से मिले कॉन्स्टेंट का इस्तेमाल करें. इनकी मदद से, ये काम किए जा सकते हैं:
- साफ़ इफ़ेक्ट और प्राइमिटिव लागू करें.
- नए हैप्टिक इफ़ेक्ट बनाने के लिए, उन्हें जोड़ें.
पहले से तय किए गए ये हैप्टिक कॉन्स्टेंट और प्राइमिटिव, अच्छी क्वालिटी के हैप्टिक इफ़ेक्ट बनाते समय आपके काम को तेज़ी से पूरा कर सकते हैं.