Android haptics API का रेफ़रंस

इस सेक्शन में, Android में उपलब्ध अलग-अलग हैप्टिक एपीआई के बारे में बताया गया है. इसमें यह भी बताया गया है कि डिवाइस पर हैप्टिक इफ़ेक्ट की सुविधा है या नहीं, यह कब और कैसे पता लगाया जा सकता है. इससे यह पक्का किया जा सकता है कि हैप्टिक इफ़ेक्ट आपकी उम्मीद के मुताबिक काम कर रहे हैं.

हैप्टिक इफ़ेक्ट बनाने के कई तरीके हैं. इनमें से कोई तरीका चुनते समय, Android हैप्टिक डिज़ाइन के सिद्धांतों को ध्यान में रखना ज़रूरी है. यहां दी गई टेबल में, हर तरीके के इन हाई लेवल एट्रिब्यूट के बारे में खास जानकारी दी गई है:

  • उपलब्धता, व्यवहार फ़ॉलबैक की योजना बनाते समय खास तौर पर ज़रूरी होती है. साथ ही, इसे यह देखने के साथ जोड़ा जाना चाहिए कि कोई डिवाइस इस सुविधा के साथ काम करता है या नहीं.
  • साफ़ हैप्टिक, साफ़ और सटीक एहसास होते हैं. ये उपयोगकर्ताओं के लिए कम परेशान करने वाले होते हैं.
  • ज़्यादा बेहतर हैप्टिक से ज़्यादा बेहतर अनुभव मिलता है. इसके लिए, अक्सर ज़्यादा सुविधाओं वाले हार्डवेयर की ज़रूरत होती है.
एपीआई सरफ़ेस उपलब्धता हैप्टिक इफ़ेक्ट हटाएं रिच हैप्टिक
HapticFeedbackConstants Android 1.5+
(हर कॉन्स्टेंट के लिए)
Predefined VibrationEffect Android 10 या इसके बाद के वर्शन
VibrationEffect Composition Android 11 और इसके बाद के वर्शन (हर कॉन्स्टेंट के लिए)
चालू/बंद करने, एक बार वाइब्रेट होने, और वेवफ़ॉर्म वाइब्रेशन की सुविधा Android 1

इसके अलावा, इस पेज पर बताए गए सूचना एपीआई की मदद से, आपको आने वाली सूचनाओं के लिए हैप्टिक इफ़ेक्ट को पसंद के मुताबिक बनाने की सुविधा मिलती है.

इस पेज पर, एपीआई के अलग-अलग प्लैटफ़ॉर्म पर लागू होने वाले अन्य कॉन्सेप्ट के बारे में भी बताया गया है:

  • क्या डिवाइस में वाइब्रेटर है?
  • ऐम्प्लिट्यूड कंट्रोल की मदद से, हैप्टिक इफ़ेक्ट को ज़्यादा बेहतर और आसानी से महसूस किया जा सकता है. हालांकि, यह सुविधा सभी डिवाइसों पर काम नहीं करती.
  • VibrationAttributes() से, वाइब्रेशन को उसके इस्तेमाल के आधार पर कैटगरी में बांटने में मदद मिलती है. इससे यह पक्का किया जा सकता है कि उपयोगकर्ता की सही सेटिंग लागू की गई हैं. साथ ही, उपयोगकर्ता को कोई हैरानी नहीं होगी.

HapticFeedbackConstants

HapticFeedbackConstants क्लास, कार्रवाई पर आधारित कॉन्स्टेंट उपलब्ध कराती है. इससे ऐप्लिकेशन, हैप्टिक फ़ीडबैक जोड़ सकते हैं. यह फ़ीडबैक, डिवाइस के अनुभव के हिसाब से एक जैसा होता है. ऐसा इसलिए, ताकि सामान्य कार्रवाइयों के लिए हर ऐप्लिकेशन में अलग-अलग इफ़ेक्ट न हों.

डिवाइस से जुड़ी शर्तें और अन्य ज़रूरी शर्तें

इन कॉन्स्टेंट के साथ View.performHapticFeedback तरीके का इस्तेमाल करने के लिए, ऐप्लिकेशन को किसी खास अनुमति की ज़रूरत नहीं होती. यह View.hapticFeedbackEnabled प्रॉपर्टी के तहत आता है. अगर इसे false पर सेट किया जाता है, तो व्यू पर हैप्टिक फ़ीडबैक के सभी कॉल बंद हो जाएंगे. इनमें डिफ़ॉल्ट कॉल भी शामिल हैं. इससे जुड़ी मुख्य सेटिंग View.hapticFeedbackEnabled प्रॉपर्टी है. अगर इसे false पर सेट किया जाता है, तो व्यू पर हैप्टिक फ़ीडबैक के सभी कॉल बंद हो जाएंगे. इनमें डिफ़ॉल्ट कॉल भी शामिल हैं. यह तरीका, टच फ़ीडबैक की सुविधा चालू करने के लिए उपयोगकर्ता की सिस्टम सेटिंग का भी पालन करता है.

एसडीके-लेवल पर, कार्रवाई के लिए तय की गई खास कॉन्स्टेंट वैल्यू के साथ काम करने की सुविधा ही ज़रूरी है.

HapticFeedbackConstants का इस्तेमाल करते समय, फ़ॉलबैक व्यवहार की जानकारी देने की ज़रूरत नहीं है.

HapticsFeedbackConstants के इस्तेमाल के आंकड़े

HapticFeedbackConstants का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, इवेंट में हैप्टिक फ़ीडबैक जोड़ना लेख पढ़ें.

पहले से तय VibrationEffect

VibrationEffect क्लास, पहले से तय किए गए कई कॉन्स्टेंट उपलब्ध कराती है. जैसे, CLICK, TICK, और DOUBLE_CLICK. इन इफ़ेक्ट को डिवाइस के हिसाब से ऑप्टिमाइज़ किया जा सकता है.

डिवाइस से जुड़ी शर्तें और अन्य ज़रूरी शर्तें

किसी भी VibrationEffect को चलाने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में VIBRATE की अनुमति होना ज़रूरी है.

पहले से तय किए गए VibrationEffect का इस्तेमाल करते समय, फ़ॉलबैक व्यवहार देने की कोई ज़रूरत नहीं होती. ऐसा इसलिए, क्योंकि जिन कॉन्स्टेंट में डिवाइस के लिए ऑप्टिमाइज़ किया गया तरीका लागू नहीं होता वे स्टैंडर्ड प्लैटफ़ॉर्म फ़ॉलबैक पर वापस आ जाते हैं.

Vibrator.areEffectsSupported और Vibrator.areAllEffectsSupported एपीआई का इस्तेमाल यह पता लगाने के लिए किया जाता है कि डिवाइस के हिसाब से ऑप्टिमाइज़ किया गया कोई लागू करने का तरीका मौजूद है या नहीं. ऑप्टिमाइज़ किए गए तरीके से लागू किए बिना भी, पहले से तय किए गए इफ़ेक्ट का इस्तेमाल किया जा सकता है. साथ ही, यह स्टैंडर्ड प्लैटफ़ॉर्म फ़ॉलबैक का इस्तेमाल करता है. इसलिए, इन areEffectsSupported एपीआई की ज़रूरत सिर्फ़ तब होती है, जब किसी ऐप्लिकेशन को यह देखना हो कि इफ़ेक्ट को डिवाइस के लिए ऑप्टिमाइज़ किया गया है या नहीं.

असर की जांच करने वाले तरीके, इनमें से कोई एक वैल्यू दिखा सकते हैं:

  • VIBRATION_EFFECT_SUPPORT_YES से पता चलता है कि डिवाइस पर इस इफ़ेक्ट को ऑप्टिमाइज़ किया गया है.
  • VIBRATION_EFFECT_SUPPORT_NO इससे पता चलता है कि डिवाइस पर ऑप्टिमाइज़ की गई सुविधा काम नहीं करती. हालांकि, यह अब भी प्लैटफ़ॉर्म फ़ॉलबैक का इस्तेमाल करता है.
  • VIBRATION_EFFECT_SUPPORT_UNKNOWN से पता चलता है कि सिस्टम को यह नहीं पता कि लागू करने का तरीका ऑप्टिमाइज़ किया गया है या नहीं.

UNKNOWN वैल्यू से पता चलता है कि जांच करने वाला एपीआई उपलब्ध नहीं है. इसलिए, आम तौर पर यह वैल्यू सभी इफ़ेक्ट के लिए या किसी भी इफ़ेक्ट के लिए नहीं दिखाई जाती. ये डिवाइस, डाइनैमिक तौर पर फ़ॉल बैक करते हैं.

पहले से तय किए गए VibrationEffect का इस्तेमाल

पहले से तय किए गए VibrationEffect का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, हैप्टिक फ़ीडबैक जनरेट करने के लिए, पहले से तय किए गए VibrationEffect का इस्तेमाल करना लेख पढ़ें.

Envelope VibrationEffect

एनवेलप पर आधारित वाइब्रेशन की मदद से, कंट्रोल पॉइंट का क्रम तय करके, समय के साथ वाइब्रेशन के ऐम्प्लिट्यूड और फ़्रीक्वेंसी को सटीक तरीके से कंट्रोल किया जा सकता है. इससे डेवलपर को, हैप्टिक फ़ीडबैक के ज़्यादा बेहतर और बारीकी से अनुभव बनाने में मदद मिलती है. इन वाइब्रेशन को BasicEnvelopeBuilder और WaveformEnvelopeBuilder क्लास का इस्तेमाल करके बनाया जा सकता है.

डिवाइस से जुड़ी शर्तें और अन्य ज़रूरी शर्तें

वाइब्रेशन वाले किसी भी इफ़ेक्ट को चलाने के लिए, आपके ऐप्लिकेशन को ऐप्लिकेशन मेनिफ़ेस्ट में VIBRATE अनुमति का एलान करना होगा.

यह सुविधा उपलब्ध है या नहीं, यह जानने के लिए Vibrator.areEnvelopeEffectsSupported() पर कॉल करें.

Basic Envelope Builder

बेहतर हैप्टिक अनुभव देने के लिए, एनवलप इफ़ेक्ट की शुरुआत और अंत \( 0.0 \)की इंटेंसिटी के साथ होना चाहिए. एपीआई, इस नियम को लागू करता है. इसके लिए, वह शुरुआती इंटेंसिटी को शून्य पर सेट करता है. साथ ही, अगर आखिरी इंटेंसिटी शून्य नहीं होती है, तो एक अपवाद दिखाता है. इस पाबंदी की वजह से, ऐंप्लीट्यूड में अचानक होने वाले बदलावों की वजह से, वाइब्रेशन में अनचाहे डाइनैमिक इफ़ेक्ट नहीं होते. इससे उपयोगकर्ता की हैप्टिक परसेप्शन पर बुरा असर पड़ सकता है.

सभी डिवाइसों पर एक जैसा एनवेलप इफ़ेक्ट रेंडर करने के लिए, फ़्रेमवर्क को यह ज़रूरी है कि इस सुविधा के साथ काम करने वाले डिवाइस, कंट्रोल पॉइंट के बीच कम से कम 20 मि॰से॰ और एनवेलप इफ़ेक्ट के लिए कम से कम 16 पॉइंट हैंडल कर सकें.

वेवफ़ॉर्म एन्वेलप बिल्डर

यह फ़्रेमवर्क, डेवलपर की ओर से दी गई फ़्रीक्वेंसी और ऐम्प्लिट्यूड की वैल्यू में बदलाव नहीं करता. हालांकि, एपीआई ट्रांज़िशन को आसान बनाने के लिए, शुरुआती ऐम्प्लिट्यूड को शून्य पर सेट करता है.

Android, डिवाइस की ज़रूरी क्षमताओं के बारे में क्वेरी करने के लिए एपीआई उपलब्ध कराता है. इससे आपको अपने ऐप्लिकेशन के वेवफ़ॉर्म एनवेलप इफ़ेक्ट को ऑप्टिमाइज़ करने और सभी डिवाइसों पर कंपैटिबिलिटी उपलब्ध कराने में मदद मिलती है. इन तरीकों से, डिवाइस की सीमाओं के बारे में जानकारी मिलती है. जैसे, कंट्रोल पॉइंट के बीच ट्रांज़िशन की ज़्यादा से ज़्यादा और कम से कम अवधि. साथ ही, एक इफ़ेक्ट के लिए ज़्यादा से ज़्यादा कंट्रोल पॉइंट इस्तेमाल किए जा सकते हैं:

getMaxSize()
यह फ़ंक्शन, किसी एनवलप इफ़ेक्ट के लिए इस्तेमाल किए जा सकने वाले कंट्रोल पॉइंट की ज़्यादा से ज़्यादा संख्या को वापस लाता है.
getMinControlPointDurationMillis()
यह फ़ंक्शन, एनवलप इफ़ेक्ट में दो कंट्रोल पॉइंट के बीच की कम से कम अवधि को मिलीसेकंड में दिखाता है.
getMaxControlPointDurationMillis()
यह फ़ंक्शन, दो कंट्रोल पॉइंट के बीच, एनवलप इफ़ेक्ट के लिए इस्तेमाल की जा सकने वाली ज़्यादा से ज़्यादा अवधि को मिलीसेकंड में दिखाता है.
getMaxDurationMillis()
यह फ़ंक्शन, किसी एनवेलप इफ़ेक्ट के लिए ज़्यादा से ज़्यादा अवधि को मिलीसेकंड में दिखाता है.

अगर कोई इफ़ेक्ट, डिवाइस की सीमाओं से ज़्यादा है, जैसे कि बहुत ज़्यादा कंट्रोल पॉइंट या तय सीमा से ज़्यादा अवधि, तो फ़्रेमवर्क, इफ़ेक्ट को अपने-आप अडजस्ट कर देता है, ताकि वह तय सीमाओं के अंदर आ जाए. इस प्रोसेस में, डिज़ाइन के ओरिजनल मकसद और लुक को ज़्यादा से ज़्यादा बनाए रखने की कोशिश की जाती है.

Envelope VibrationEffects का इस्तेमाल

एनवेलप वेवफ़ॉर्म इफ़ेक्ट बनाने के बारे में जानकारी के लिए, एनवेलप की मदद से वाइब्रेशन वेवफ़ॉर्म बनाना लेख पढ़ें.

VibrationEffect कंपोज़िशन

VibrationEffect कंपोज़िशन, VibrationEffect.startComposition एपीआई का इस्तेमाल करके बनाया गया वाइब्रेशन इफ़ेक्ट है. इस एपीआई की मदद से, कस्टम देरी और इंटेंसिटी के साथ प्रिमिटिव का क्रम बनाकर, रिच हैप्टिक बनाए जा सकते हैं. हालांकि, इस बात का खास ध्यान रखें कि डिवाइस में, जोड़ी जा रही सुविधाओं के साथ काम करने की क्षमता हो. ऐसा न होने पर, आपको एक जैसा अनुभव नहीं मिलेगा.

डिवाइस से जुड़ी शर्तें और अन्य ज़रूरी शर्तें

किसी भी VibrationEffect को चलाने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में VIBRATE की अनुमति होना ज़रूरी है.

सभी डिवाइसों पर, कंपोज़िशन एपीआई की सभी सुविधाएं काम नहीं करती हैं. इसलिए, यह ज़रूरी है कि प्रिमिटिव उपलब्ध हों.

वाइब्रेशन प्रिमिटिव की सुविधा काम करती है या नहीं, यह देखना

हर प्रिमिटिव के लिए सहायता से जुड़ी जानकारी, Vibrator.arePrimitivesSupported तरीके का इस्तेमाल करके वापस पाई जा सकती है. इसके अलावा, Vibrator.areAllPrimitivesSupported तरीके का इस्तेमाल करके, प्रिमिटिव के सेट की एक साथ जांच की जा सकती है. यह हर प्रिमिटिव के लिए AND करने के बराबर है.

VibrationEffect कंपोज़िशन का इस्तेमाल

VibrationEffect कंपोज़िशन इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, वाइब्रेशन कंपोज़िशन बनाना लेख पढ़ें.

वाइब्रेशन को चालू/बंद करने, एक बार वाइब्रेट होने, और वेवफ़ॉर्म वाइब्रेशन की सुविधा

Android पर वाइब्रेशन की सबसे पुरानी सुविधा, वाइब्रेटर को चालू और बंद करने के पैटर्न पर आधारित है. इसमें वाइब्रेशन की अवधि को कॉन्फ़िगर किया जा सकता है. ये एपीआई आम तौर पर, हैप्टिक डिज़ाइन के सिद्धांतों के मुताबिक नहीं होते, क्योंकि इनसे बज़ी हैप्टिक जनरेट हो सकते हैं. इसलिए, इन्हें आखिरी विकल्प के तौर पर ही इस्तेमाल करें.

वाइब्रेशन को चालू और बंद करने की सुविधा का सबसे ज़्यादा इस्तेमाल सूचनाओं के लिए किया जाता है. इसमें इस बात से कोई फ़र्क़ नहीं पड़ता कि वाइब्रेशन की ज़रूरत है या नहीं. वेवफ़ॉर्म वाइब्रेशन की मदद से, किसी पैटर्न को अनिश्चित काल तक दोहराया जा सकता है. जैसा कि रिंगटोन के लिए किया जाता है.

एक बार वाइब्रेट होने वाले पैटर्न का मतलब है कि डिवाइस N मिलीसेकंड के लिए एक बार वाइब्रेट होगा.

वेवफ़ॉर्म के पैटर्न दो तरह के होते हैं:

  • सिर्फ़ समय. इस तरह की वेवफ़ॉर्म, बंद रहने और चालू रहने की अवधि के बारे में बताती है. टाइमिंग की शुरुआत, बंद रहने की अवधि से होती है. इसलिए, वेवफ़ॉर्म पैटर्न अक्सर शून्य वैल्यू से शुरू होते हैं, ताकि वाइब्रेट होने की प्रोसेस तुरंत शुरू हो सके.
  • समय और ऐम्प्लिट्यूड. इस तरह के वेवफ़ॉर्म में, हर टाइमिंग फ़िगर से मैच करने के लिए, ऐम्प्लिट्यूड का एक और ऐरे होता है. इसमें पहले फ़ॉर्म की तरह, चालू और बंद होने की जानकारी नहीं होती. हालांकि, यह देखना ज़रूरी है कि डिवाइस में ऐंप्लीट्यूड कंट्रोल करने की सुविधा हो, ताकि यह पक्का किया जा सके कि आवाज़ को ज़रूरत के हिसाब से बढ़ाया जा सकता है.

डिवाइस से जुड़ी शर्तें और अन्य ज़रूरी शर्तें

वाइब्रेशन को चालू और बंद करने की सुविधा, वाइब्रेशन की सबसे पुरानी सुविधा है. इसलिए, यह सुविधा वाइब्रेटर वाले लगभग सभी डिवाइसों पर काम करती है. इसके बारे में इस पेज पर बाद में बताया गया है.

किसी भी VibrationEffect या पुराने स्टाइल के vibrate कॉल को चलाने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में VIBRATE अनुमति होना ज़रूरी है.

वेवफ़ॉर्म में अलग-अलग ऐम्प्लिट्यूड वैल्यू का इस्तेमाल करते समय, हमारा सुझाव है कि आप यह पक्का कर लें कि डिवाइस में ऐम्प्लिट्यूड कंट्रोल की सुविधा काम करती हो.

देखें कि एंप्लीट्यूड कंट्रोल की सुविधा काम करती है या नहीं

जिन डिवाइसों पर ऐम्प्लिट्यूड कंट्रोल करने की सुविधा नहीं होती है उन पर, ऐम्प्लिट्यूड की वैल्यू को 100% पर राउंड अप कर दिया जाता है. इसलिए, यह देखना ज़रूरी है कि Vibrator.hasAmplitudeControl का इस्तेमाल करके, यह सुविधा उपलब्ध है या नहीं. ज़्यादा जानकारी के लिए, आवाज़ कम या ज़्यादा करने की सुविधा देखें.

आपको यह ध्यान से देखना चाहिए कि ऐम्प्लिट्यूड कंट्रोल के बिना, आपके इफ़ेक्ट की क्वालिटी अच्छी है या नहीं. वाइब्रेशन को चालू या बंद करने के लिए, साफ़ तौर पर डिज़ाइन किए गए फ़ॉलबैक का इस्तेमाल करना बेहतर हो सकता है.

वाइब्रेशन को चालू और बंद करने की सुविधा का इस्तेमाल

एसडीके के नए लेवल में, वाइब्रेशन के सभी मोड को एक ही VibrationEffect क्लास में शामिल कर दिया गया है. इस क्लास में, VibrationEffect.createOneshot या VibrationEffect.createWaveform का इस्तेमाल करके, सामान्य वाइब्रेशन बनाए जाते हैं.

सूचना देने वाले एपीआई

ऐप्लिकेशन की सूचनाओं को पसंद के मुताबिक बनाने के लिए, यहां दिए गए किसी एक एपीआई का इस्तेमाल किया जा सकता है. इससे हर सूचना चैनल के साथ एक पैटर्न जोड़ा जा सकता है:

इन सभी फ़ॉर्म में, चालू-बंद होने का सामान्य वेवफ़ॉर्म पैटर्न होता है. इसके बारे में पहले बताया जा चुका है. इसमें पहली एंट्री, वाइब्रेटर चालू होने से पहले की देरी होती है.

सामान्य कॉन्सेप्ट

ऊपर बताए गए एपीआई के सभी वर्शन पर कई कॉन्सेप्ट लागू होते हैं.

क्या डिवाइस में वाइब्रेटर है?

context.getSystemService(Vibrator.class) से, नॉन-नल Vibrator क्लास को हासिल किया जा सकता है. अगर डिवाइस में वाइब्रेटर नहीं है, तो वाइब्रेशन एपीआई को कॉल करने से कोई असर नहीं पड़ता. इसलिए, ऐप्लिकेशन को किसी शर्त के आधार पर, सभी हैप्टिक को गेट करने की ज़रूरत नहीं होती. हालांकि, अगर ज़रूरत हो, तो कोई ऐप्लिकेशन hasVibrator() को कॉल करके यह पता लगा सकता है कि यह असली वाइब्रेटर (true) है या स्टब (false).

क्या उपयोगकर्ता ने टच हैप्टिक की सुविधा बंद कर दी है?

कुछ कस्टम इंप्लीमेंटेशन के लिए, यह मैन्युअल तरीके से जांच करना ज़रूरी हो सकता है कि उपयोगकर्ता ने Android की टच फ़ीडबैक सेटिंग को पूरी तरह से बंद कर दिया है या नहीं. अगर ऐसा है, तो टच फ़ीडबैक के इफ़ेक्ट को बंद कर देना चाहिए. इस सेटिंग के बारे में HAPTIC_FEEDBACK_ENABLED कुंजी का इस्तेमाल करके क्वेरी की जा सकती है. इसमें शून्य वैल्यू का मतलब है कि यह सेटिंग बंद है.

वाइब्रेशन एट्रिब्यूट

वाइब्रेशन एट्रिब्यूट (फ़िलहाल, AudioAttributes के तौर पर उपलब्ध हैं) दिए जा सकते हैं. इससे सिस्टम को वाइब्रेशन के मकसद के बारे में जानकारी मिलती है. जब आपका ऐप्लिकेशन बैकग्राउंड में हो, तब वाइब्रेशन शुरू करने के लिए इसकी ज़रूरत होती है. ऐसा इसलिए, क्योंकि बैकग्राउंड में इस्तेमाल करने के लिए, सिर्फ़ अटेंशन हैप्टिक काम करते हैं.

AudioAttributes के बारे में क्लास के दस्तावेज़ में बताया गया है. इसे आवाज़ के बजाय कंपन के तौर पर देखा जाना चाहिए.

गाइड के तौर पर, ज़्यादातर मामलों में कॉन्टेंट टाइप CONTENT_TYPE_SONIFICATION होता है. साथ ही, इस्तेमाल की वैल्यू USAGE_ASSISTANCE_SONIFICATION हो सकती है. जैसे, फ़ोरग्राउंड में टच फ़ीडबैक के लिए या बैकग्राउंड में अलार्म के लिए USAGE_ALARM. ऑडियो फ़्लैग से वाइब्रेशन पर कोई असर नहीं पड़ता.

ऐंप्लीट्यूड कंट्रोल

अगर वाइब्रेटर में ऐम्प्लिट्यूड कंट्रोल करने की सुविधा है, तो अलग-अलग इंटेंसिटी के साथ वाइब्रेशन किया जा सकता है. यह बेहतर हैप्टिक बनाने के लिए एक ज़रूरी सुविधा है. साथ ही, इससे उपयोगकर्ता को डिफ़ॉल्ट हैप्टिक इंटेंसिटी को कंट्रोल करने की सुविधा भी मिल सकती है.

Vibrator.hasAmplitudeControl को कॉल करके, यह देखा जा सकता है कि आवाज़ कम-ज़्यादा करने की सुविधा काम कर रही है या नहीं. अगर वाइब्रेटर में ऐम्प्लिट्यूड की सुविधा नहीं है, तो ऐम्प्लिट्यूड की सभी वैल्यू को चालू/बंद पर मैप किया जाएगा. यह इस बात पर निर्भर करेगा कि वे शून्य/शून्य से ज़्यादा हैं या नहीं. इसलिए, अगर डिवाइस में ऐम्प्लिट्यूड कंट्रोल की सुविधा नहीं है, तो अलग-अलग ऐम्प्लिट्यूड के साथ रिच हैप्टिक का इस्तेमाल करने वाले ऐप्लिकेशन को उन्हें बंद करने के बारे में सोचना चाहिए.

एन्वेलप इफ़ेक्ट की सुविधा

इनमें एनवेलप इफ़ेक्ट की सुविधा होती है. इससे ज़्यादा डाइनैमिक और बारीकी से वाइब्रेशन जनरेट किए जा सकते हैं. साथ ही, हैप्टिक अनुभव को बेहतर बनाने के लिए, वाइब्रेशन की तीव्रता और शार्पनेस को ज़्यादा सटीक तरीके से कंट्रोल किया जा सकता है. Vibration.areEnvelopeEffectsSupported का इस्तेमाल करके पता लगाएं कि आपके डिवाइस पर यह सुविधा काम करती है या नहीं. अगर ऐसा नहीं होता है, तो एनवेलप के आधार पर वाइब्रेशन को अनदेखा कर दिया जाता है.