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

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

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

  • उपलब्धता, व्यवहार के फ़ॉलबैक की योजना बनाते समय खास तौर पर अहम होती है. साथ ही, यह ज़रूरी है कि अलग-अलग डिवाइसों पर इस सुविधा के काम करने की जांच की जाए.
  • साफ़-साफ़ महसूस होने वाली स्पर्श, उपयोगकर्ताओं को साफ़ और सटीक तरीके से महसूस होती है.
  • रिच हैप्टिक्स की मदद से, ज़्यादा बेहतर तरीके से जानकारी दी जा सकती है. हालांकि, इसके लिए ज़्यादा सुविधाओं वाले हार्डवेयर की ज़रूरत होती है.
एपीआई का प्लैटफ़ॉर्म उपलब्धता हप्टिक्स की सुविधा बंद करना बेहतर हैप्टिक
HapticFeedbackConstants Android 1.5+
(हर कॉन्स्टेंट के हिसाब से)
पहले से तय वाइब्रेशन इफ़ेक्ट 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() को कॉल करें.

बेसिक एन्वेलप बिल्डर

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

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

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

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

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

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

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

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

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

VibrationEffect कंपोज़िशन

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

काम करने की शर्तें

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

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

वाइब्रेशन प्राइमिटिव के साथ काम करने की सुविधा की जांच करना

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

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

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

वाइब्रेशन की सुविधा को चालू या बंद करना, एक बार वाइब्रेट करना, और वाइब्रेशन की गति बदलना

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

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

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

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

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

काम करने की शर्तें

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

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

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

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

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

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

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

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

Notification APIs

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

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

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

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

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

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

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

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

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

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

AudioAttributes बनाने के बारे में, क्लास के दस्तावेज़ में बताया गया है. इसे साउंड के बजाय वाइब्रेशन माना जाना चाहिए.

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

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

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

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

लिफ़ाफ़े के इफ़ेक्ट के लिए सहायता

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