हैप्टिक लागू करें

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

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

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

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

ऐप्लिकेशन डेवलपर और डिवाइस बनाने वाली कंपनियों के लिए, वाइब्रेशन की सुविधा के इस्तेमाल के उदाहरणों का डायग्राम

पहली इमेज. डिवाइस बनाने वाली कंपनियों और डेवलपर के बीच जानकारी शेयर करना

हैप्टिक्स को लागू करने से जुड़ी चेकलिस्ट

  1. कॉन्सटेंट लागू करना

    • हैप्टिक्स लागू करने के लिए, कॉन्स्टेंट की सूची.
  2. प्राइमिटिव लागू करना

    • एचएएल कंपोज़िशन प्राइमिटिव को लागू करने के लिए दिशा-निर्देश.
  3. HAL और एपीआई के बीच कॉन्स्टेंट मैप करना

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

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

हम इनमें से हर चरण के बारे में ज़्यादा जानकारी यहां देंगे.

पहला चरण: कॉन्स्टेंट लागू करना

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

हैप्टिक्स की सुविधा लागू करने की प्रोसेस का फ़्लोचार्ट

दूसरी इमेज. इफ़ेक्ट लागू करना

प्राइमिटिव लागू करने के तरीके का फ़्लोचार्ट

तीसरी इमेज. प्राइमिटिव लागू करना

यहां दिए गए हैप्टिक कॉन्स्टेंट के लागू होने की स्थिति देखें.

हैप्टिक कॉन्स्टेंट जगहें और खास जानकारी
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 पर कॉन्फ़िगर की गई टाइमिंग.

हैप्टिक फ़ीडबैक की जांच करने के चरणों का फ़्लोचार्ट

चौथी इमेज. फ़ीडबैक के लिए कॉन्स्टेंट लागू करना

यहां दिए गए सार्वजनिक सुझाव/राय/शिकायत वाले कॉन्स्टेंट की स्थिति देखें.

हैप्टिक कॉन्स्टेंट जगहें और खास जानकारी
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 हैं.

छोटे प्राइमिटिव

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

कम समय के लिए होने वाले वाइब्रेशन की क्वालिटी की अहम मेट्रिक, पल्स टू रिंग रेशियो (पीआरआर) है. इसे फ़िगर 5 में दिखाया गया है. पीआरआर को मुख्य पल्स और रिंग पल्स के बीच के अनुपात के तौर पर परिभाषित किया जाता है. मुख्य पल्स को अवधि की विंडो में मौजूद सिग्नल से तय किया जाता है, जहां ऐम्प्लitude, पीक ऐम्प्लitude के 10% तक कम हो जाता है. वहीं, रिंग पल्स को सिग्नल से तय किया जाता है, जहां ऐम्प्लitude, पीक ऐम्प्लitude के 10% से कम होकर, पीक ऐम्प्लitude के 1% से भी कम हो जाता है. पीआरआर के बारे में ज़्यादा जानने के लिए, वेवफ़ॉर्म का विश्लेषण करना लेख पढ़ें. साथ ही, नतीजों का विश्लेषण करने और उनकी तुलना करने के बारे में ज़्यादा जानने के लिए, परफ़ॉर्मेंस मैप का इस्तेमाल करके नतीजों की तुलना करना लेख पढ़ें.

पल्स रेट और रिंग रेट का अनुपात

पांचवीं इमेज. पल्स से रिंग रेशियो की परिभाषा

उपयोगकर्ता के इनपुट फ़ीडबैक के तौर पर छोटे प्राइमिटिव लागू करें या नरम टेक्सचर बनाने के लिए, लंबी रचनाओं में चलाएं. इसका मतलब है कि ये आम तौर पर बार-बार ट्रिगर होते हैं और तेज़ी से चलते हैं. एक छोटे प्रिमिटिव की अनुमानित इंटेंसिटी, बड़े इफ़ेक्ट की इंटेंसिटी को बढ़ा सकती है. इस वजह से, एक टिक या कम टिक प्रिमिटिव को बड़े कॉम्पोज़िशन के साथ कैलिब्रेट करें. उदाहरण के लिए, लगातार 100 टिक.

क्लिक प्रिमटिव

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

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

प्रिमिटिव आउटपुट ऐक्सेलरेशन प्रोफ़ाइल पर क्लिक करें

छठी इमेज. क्लिक प्रिमिटिव के लिए आउटपुट ऐक्सेलरेशन प्रोफ़ाइल का उदाहरण

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 12 मि॰से॰

सीमा: 30 मिलीसेकंड से कम

पीक आउटपुट ऐक्सेलरेशन

टारगेट: 2 G

सीमा: 1 जीबी से ज़्यादा

फ़्रीक्वेंसी अनुनाद फ़्रीक्वेंसी के आस-पास

टिक प्राइमिटिव (हल्का टिक)

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

प्रिमिटिव आउटपुट ऐक्सेलरेशन प्रोफ़ाइल पर सही का निशान लगाएं

सातवीं इमेज. टिक प्राइमिटिव के लिए आउटपुट ऐक्सेलरेशन प्रोफ़ाइल का उदाहरण

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 5 मि॰से॰

सीमा: 20 मिलीसेकंड से कम

पीक आउटपुट ऐक्सेलरेशन

टारगेट: CLICK का आधा, 1 G

सीमा: 0.5 G और 1 G के बीच

फ़्रीक्वेंसी

टारगेट: दोगुनी अनुनाद फ़्रीक्वेंसी

सीमा: 500 Hz से कम

कम टिक प्राइमिटिव

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

कम टिक प्रिमिटिव आउटपुट ऐक्सेलरेशन प्रोफ़ाइल

आठवीं इमेज. कम टिक प्रिमिटिव के लिए, आउटपुट एक्सेलेरेशन प्रोफ़ाइल का उदाहरण

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 12 मि॰से॰

सीमा: 30 मिलीसेकंड से कम

पीक आउटपुट ऐक्सेलरेशन

टारगेट: TICK का 1/4, 0.25 G

सीमा: 0.2 G से 0.5 G के बीच

फ़्रीक्वेंसी

टारगेट: दो-तिहाई अनुनाद फ़्रीक्वेंसी

सीमा: < 100 Hz

चिर्प प्राइमिटिव

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

धीरे-धीरे बढ़ने वाला प्राइमिटिव

धीरे-धीरे बढ़ने वाला वाइब्रेशन, धीरे-धीरे बढ़ने वाला ऐम्प्ल्यूड्यूड और फ़्रीक्वेंसी स्वीप होता है. इसमें वाइब्रेशन की शुरुआत धीमी होती है और स्वीप के दौरान वाइब्रेशन की तीव्रता लगातार बढ़ती रहती है. इसे ऐम्प्लitude और फ़्रीक्वेंसी, दोनों की लगातार स्वीप करके लागू किया जा सकता है. इसके लिए, कम फ़्रीक्वेंसी रेंज का इस्तेमाल किया जाता है, जो अनुनाद के बिना काम करती है. इस प्रोसेस को लागू करने के लिए, आंकड़ा 9 में इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल का उदाहरण दिया गया है. (लाल लाइन, बाईं ओर मौजूद ऐम्प्ल्यट्यूड लेबल से मेल खाती है. साथ ही, यह दिखाती है कि समय के साथ कंपन का ऐम्प्ल्यट्यूड कैसे बदलता है. नीली लाइन, दाईं ओर मौजूद फ़्रीक्वेंसी लेबल से मेल खाती है. साथ ही, यह दिखाती है कि समय के साथ वाइब्रेशन फ़्रीक्वेंसी में किस तरह बदलाव होता है.)

स्लो राइज़ प्रिमिटिव के लिए इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल

नौवीं इमेज. स्लो राइज़ प्रिमटिव के लिए, इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल का उदाहरण

अगर मोटर की फ़्रीक्वेंसी रिस्पॉन्स सीमित है (अपनी गुंजयमान फ़्रीक्वेंसी से ज़्यादा नहीं है), तो एक वैकल्पिक तरीका यह है कि गुंजयमान फ़्रीक्वेंसी के 1/2x से 1x तक साइन स्वीप किया जाए. मोटर के रेज़ोनेंस की वजह से, आखिर में सिग्नल की पीक तक पहुंचा जा सकता है.

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 500 मिलीसेकंड

टॉलरेंस: 20 मि॰से॰

पीक आउटपुट ऐक्सेलरेशन

टारगेट: 0.5 G

सीमा: 0.5 G और 1 G के बीच

फ़्रीक्वेंसी

टारगेट: अनुनाद फ़्रीक्वेंसी का 1/2 से 2/3

विकल्प: 1/2 से लेकर अनुनाद फ़्रीक्वेंसी तक

क्विक राइज़ प्रिमिटिव

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

क्विक राइज़ प्रिमिटिव के लिए इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल

10वीं इमेज. क्विक राइज़ प्रिमटिव के लिए, इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल का उदाहरण

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 150 मि॰से॰

टॉलरेंस: 20 मि॰से॰

पीक आउटपुट ऐक्सेलरेशन

टारगेट: SLOW_RISE जैसा ही

सीमा: SLOW_RISE जैसी ही

फ़्रीक्वेंसी

टारगेट: SLOW_RISE जैसा ही

अन्य विकल्प: SLOW_RISE के बराबर

क्विक फ़ॉल प्रिमिटिव

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

तेज़ी से गिरने वाले प्रिमिटिव के लिए इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल

11वीं इमेज. क्विक फ़ॉल प्रिमिटिव के लिए, इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल का उदाहरण

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 100 मि॰से॰

टॉलरेंस: 20 मि॰से॰

पीक आउटपुट ऐक्सेलरेशन

टारगेट: 1 G

सीमा: 0.5 G और 2 G के बीच

फ़्रीक्वेंसी

टारगेट: अनुनाद फ़्रीक्वेंसी के 2 गुने से 1 गुने तक

थपथप की आवाज़ वाला प्राइमटिव

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

थपथप प्रिमिटिव के लिए इनपुट पैरामीटर और आउटपुट एक्सेलेरेशन प्रोफ़ाइल

12वीं इमेज. थड प्राइमिटिव के लिए, इनपुट पैरामीटर और आउटपुट एक्सेलेरेशन प्रोफ़ाइल का उदाहरण

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

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 300 मिसे

टॉलरेंस: 20 मि॰से॰

पीक आउटपुट ऐक्सेलरेशन

टारगेट: 0.25 G

सीमा: 0.2 G से 0.5 G के बीच

फ़्रीक्वेंसी

टारगेट: अनुनाद फ़्रीक्वेंसी का 1/2 से 1/3

विकल्प: 1x से 1/2 गुना अनुनाद फ़्रीक्वेंसी

स्पिन प्राइमिटिव

स्पिन, तेज़ी से ऊपर और नीचे घूमने वाले स्पिन के मोमेंटम को सिम्युलेट करता है. इसमें बीच में थोड़ा ऐक्सेंट होता है. स्पिन को लागू करने के लिए, ऐम्प्लitude और फ़्रीक्वेंसी को अलग-अलग और विपरीत दिशाओं में स्वीप किया जा सकता है. इसके बाद, रिवर्स मोशन का इस्तेमाल किया जा सकता है. कम फ़्रीक्वेंसी रेंज (100 Hz से कम) का इस्तेमाल करना ज़रूरी है. इमेज 13 में, इस लागू करने की प्रोसेस के लिए इनपुट पैरामीटर और आउटपुट के उदाहरण के तौर पर ऐक्सेलरेशन प्रोफ़ाइल दिखाई गई है. (लाल लाइन, बाईं ओर मौजूद ऐम्प्ल्यूड्यूड लेबल से मेल खाती है. साथ ही, यह दिखाती है कि समय के साथ कंपन का ऐम्प्ल्यूड्यूड कैसे बदलता है. नीली लाइन, दाईं ओर मौजूद फ़्रीक्वेंसी लेबल से मेल खाती है. साथ ही, यह दिखाती है कि समय के साथ वाइब्रेशन फ़्रीक्वेंसी में किस तरह बदलाव होता है.)

हमारा सुझाव है कि स्पिन प्रिमिटिव को लगातार दो बार या कंपोजिशन में तीन बार इस्तेमाल करें, ताकि स्पिन और अस्थिरता का एहसास मिले.

अगर मोटर की फ़्रीक्वेंसी रिस्पॉन्स सीमित है, तो एक और तरीका अपनाया जा सकता है. इसके लिए, रेज़ोनेंट फ़्रीक्वेंसी के 1/2x से 1x तक और फिर वापस, तेज़ी से साइन स्वीप करें. मोटर के वाइब्रेशन की वजह से, सिग्नल के बीच में अपने-आप एक उच्चारण आ जाता है.

स्पिन प्रिमिटिव के लिए इनपुट पैरामीटर और आउटपुट ऐक्सेलरेशन प्रोफ़ाइल

13वीं इमेज. स्पिन प्रिमिटिव के लिए इनपुट पैरामीटर और आउटपुट एक्सेलेरेशन प्रोफ़ाइल का उदाहरण

पैरामीटर दिशा-निर्देश
कुल अवधि

टारगेट: 150 मि॰से॰

टॉलरेंस: 20 मि॰से॰

पीक आउटपुट ऐक्सेलरेशन

टारगेट: 0.5 G

सीमा: 0.25 G से 0.75 G के बीच

फ़्रीक्वेंसी

टारगेट: 2/3 से 1/3, फिर दोबारा 1/2 गुंजयमान फ़्रीक्वेंसी पर सेट करें

विकल्प: 2/3 से 1x, फिर दोबारा 1/2 गुना अनुनाद फ़्रीक्वेंसी पर सेट करें

तीसरा चरण: HAL और एपीआई के बीच कॉन्स्टेंट मैप करना

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

  • डिस्क्रीट मॉडल (सरल)

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

    • टेक्स्चर और ऐम्प्लिटीड्यून, इस मॉडल के मुख्य वैरिएबल हैं. HAL में हर इकाई, अलग-अलग हैप्टिक टेक्स्चर दिखाती है. हर HAL इकाई के ऐम्प्लitude को स्केल फ़ैक्टर (S) से कंट्रोल किया जाता है.
    • इस मॉडल के लिए बेहतर हार्डवेयर की ज़रूरत होती है. अगर OEM, VibrationEffect.Composition के साथ बेहतर हैप्टिक यूज़र एक्सपीरियंस (एचयूएक्स) का इस्तेमाल करना चाहते हैं, तो हमारा सुझाव है कि वे इस मॉडल का इस्तेमाल करके अपना हार्डवेयर लागू करें. ऐसा करने से, नए हैप्टिक एपीआई का बेहतर तरीके से इस्तेमाल किया जा सकता है.

डिस्क्रीट मॉडल

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

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

एचएएल की कॉन्सटेंट रेंज और फ़ीडबैक के ऐम्प्लच्यूड का डायग्राम

14वीं इमेज. आयाम के हिसाब से एचएएल की कॉन्स्टेंट रेंज

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

HAL-API के लिए, कॉन्स्टेंट मैपिंग का डिसक्रेट मॉडल

15वीं इमेज. HAL-API कॉन्स्टेंट मैपिंग: डिस्क्रेट मॉडल

अगर आपका डिवाइस, अलग-अलग ऐम्प्ल्यट्यूड वाले सिर्फ़ दो एचएएल कॉन्स्टेंट के साथ काम करता है, तो मध्यम और ज़्यादा ऐम्प्ल्यट्यूड लेवल के एचएएल कॉन्स्टेंट को मर्ज करें. इस सिद्धांत को लागू करने का उदाहरण यह है कि EFFECT_CLICK और EFFECT_HEAVY_CLICK को एक ही एचएएल कॉन्स्टेंट पर मैप किया जाए. यह एचएएल कॉन्स्टेंट, मीडियम ऐम्प्ल्यट्यूड लेवल का होगा. अगर आपके डिवाइस पर अलग-अलग ऐम्प्ल्यट्यूड के साथ सिर्फ़ एक एचएएल कॉन्स्टेंट काम करता है, तो तीनों लेवल को एक में मर्ज करें.

कंटीन्यूअस मॉडल

एएमप्ल्यट्यूड स्केलेबिलिटी वाले लगातार मॉडल का इस्तेमाल, एचएएल के कॉन्स्टेंट तय करने के लिए किया जा सकता है. स्केल किए गए एचएएल (HAL_H0 x S) बनाने के लिए, एचएएल के कॉन्स्टेंट (उदाहरण के लिए, HAL_H0, HAL_H1) पर स्केल फ़ैक्टर (S) लागू किया जा सकता है. इस मामले में, स्केल किए गए एचएएल को एपीआई कॉन्स्टेंट (HAL_H0 x S1 = H0S1 = EFFECT_TICK) तय करने के लिए मैप किया जाता है, जैसा कि फ़िगर 16 में दिखाया गया है. डिवाइस, ऐम्प्ल्यफ़िकेशन के स्केल किए जा सकने वाले कंटिन्यूअस मॉडल का इस्तेमाल करके, अलग-अलग टेक्स्चर के साथ कुछ एचएएल कॉन्स्टेंट सेव कर सकता है. साथ ही, स्केल फ़ैक्टर (S) में बदलाव करके, ऐम्प्ल्यफ़िकेशन में बदलाव कर सकता है. डिवाइस बनाने वाली कंपनियां, एचएएल कॉन्स्टेंट की संख्या तय कर सकती हैं. यह संख्या इस बात पर निर्भर करती है कि उन्हें कितने अलग-अलग हैप्टिक टेक्स्चर देने हैं.

टेक्स्चर और ऐम्प्लिटी के हिसाब से एचएएल की कॉन्स्टेंट रेंज

16वीं इमेज. टेक्स्चर (HAL_H0) और ऐम्प्ल्यट्यूड स्केल (S) के हिसाब से एचएएल की कॉन्सटेंट रेंज

HAL-API के लिए लगातार मैपिंग करने वाला मॉडल

17वीं इमेज. HAL-API कॉन्सटेंट मैपिंग: लगातार अपडेट होने वाला मॉडल

लगातार चलने वाले मॉडल में, अलग-अलग एएमपीलिटी के बजाय, अलग-अलग एचएएल कॉन्स्टेंट अलग-अलग हैप्टिक टेक्स्चर दिखाते हैं. स्केल फ़ैक्टर (S) से एएमप्लिटी को कॉन्फ़िगर किया जा सकता है. हालांकि, टेक्स्चर की परसेप्शन (उदाहरण के लिए, शार्पनेस) अवधि और ऐम्प्ल्यट्यूड की परसेप्शन से जुड़ी होती है. इसलिए, हमारा सुझाव है कि HAL-API मैपिंग की डिज़ाइन प्रोसेस में, टेक्स्चर और स्केल फ़ैक्टर को एक साथ जोड़ा जाए.

इमेज 18 में, एक एचएएल से कई एपीआई कॉन्स्टेंट में बदलाव करके, कॉन्स्टेंट मैपिंग को दिखाया गया है. साथ ही, इसमें एम्प्लitude स्केलेबिलिटी का इस्तेमाल किया गया है.

वैरिएशन बढ़ाना
1

वैरिएशन को बढ़ाना
2

18वीं इमेज. ऐम्प्लिटीड को स्केल करने की सुविधा की मदद से वैरिएशन बढ़ाना

VibrationEffect.Composition में मौजूद PRIMITIVE_TICK और PRIMITIVE_CLICK जैसे सभी स्केलेबल एपीआई कॉन्स्टेंट के लिए, एपीआई कॉन्स्टेंट का एनर्जी लेवल, float scale पैरामीटर पर निर्भर करता है. ऐसा तब होता है, जब एपीआई कॉन्स्टेंट को addPrimitive(int primitiveID, float scale, int delay) के ज़रिए एलान किया जाता है. अलग-अलग HAL कॉन्स्टेंट का इस्तेमाल करके, PRIMITIVE_TICK और PRIMITIVE_CLICK को साफ़ तौर पर अलग-अलग डिज़ाइन किया जा सकता है. अगर आपको टेक्स्चर में बदलाव करना है, तो हमारा सुझाव है कि आप इस तरीके का इस्तेमाल करें.

चौथा चरण: हार्डवेयर का आकलन करना

हार्डवेयर की जांच में, तीन हैप्टिक इफ़ेक्ट तय करने होते हैं. इस खास जांच के लिए, इन्हें इफ़ेक्ट 1, 2, और 3 के तौर पर लेबल किया जाता है.

पहला इफ़ेक्ट: पहले से तय किए गए छोटे हैप्टिक कॉन्स्टेंट

VibrationEffect.EFFECT_CLICK कंसटेंट, दूसरे चरण में दी गई एचएएल-एपीआई मैपिंग में बेसलाइन इफ़ेक्ट या कॉमन डेनोमिनेटर होता है. इसे सबसे ज़्यादा इस्तेमाल किए जाने वाले इफ़ेक्ट, HapticFeedbackConstants.KEYBOARD_PRESS के साथ मैप किया गया है. इस इफ़ेक्ट का आकलन करने से, यह तय करने में मदद मिलती है कि आपका टारगेट डिवाइस, साफ़-साफ़ महसूस होने वाले वाइब्रेशन के लिए तैयार है या नहीं.

दूसरा इफ़ेक्ट: पसंद के मुताबिक बनाया गया छोटा हैप्टिक इफ़ेक्ट

VibrationEffect.createOneShot(20,255) कांटस्टेंट, पसंद के मुताबिक हैप्टिक इफ़ेक्ट के लिए है. छोटे और एक बार के कस्टम इंपल्स के लिए, गति की अवधि तय करने के लिए ज़्यादा से ज़्यादा 20 मिलीसेकंड का थ्रेशोल्ड तय किया जा सकता है. एक बार में 20 मिलीसेकंड से ज़्यादा का इंपल्स इस्तेमाल करने का सुझाव नहीं दिया जाता, क्योंकि इसे ज़्यादा वाइब्रेशन के तौर पर महसूस किया जाता है.

पसंद के मुताबिक बनाए गए छोटे वाइब्रेशन इफ़ेक्ट का वेवफ़ॉर्म

19वीं इमेज. पसंद के मुताबिक बनाया गया छोटा हैप्टिक इफ़ेक्ट

तीसरा इफ़ेक्ट: ऐम्प्ल्यट्यूड में बदलाव के साथ, लंबे समय तक चलने वाला कस्टम हैप्टिक इफ़ेक्ट

VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) कंसटेंट, लंबे समय तक चलने वाले कस्टम इफ़ेक्ट के लिए है. इसमें ऐम्प्ल्यट्यूड में बदलाव होता है. ज़्यादा बेहतर वाइब्रेशन के लिए, डिवाइस की क्षमताओं का आकलन करने के लिए, पसंद के हिसाब से वाइब्रेशन के अलग-अलग ऐम्प्ल्यट्यूड जनरेट करने की सुविधा एक अहम इंडिकेटर है. सुझाए गए timings [] और amplitudes [] के लिए, {500, 500} और {128, 255} का सुझाव दिया गया है. इनसे पता चलता है कि 500 मिलीसेकंड के सैंपलिंग रेट के साथ, ऐम्प्ल्यट्यूड में 50% से 100% तक की बढ़ोतरी हुई है.

ऐम्प्ल्यट्यूड में बदलाव के साथ हैप्टिक इफ़ेक्ट वेवफ़ॉर्म

20वीं इमेज. ऐम्प्ल्यट्यूड में बदलाव के साथ लंबा कस्टम हैप्टिक इफ़ेक्ट

तीसरे इफ़ेक्ट के लिए, आवाज़ के लेवल को कंट्रोल करने वाले हार्डवेयर की क्षमताओं की जांच करने के लिए, Vibrator.hasAmplitudeControl() तरीका अपनाएं. VibrationEffect.createWaveform को ज़रूरत के हिसाब से अलग-अलग ऐम्प्ल्यट्यूड के साथ इस्तेमाल करने के लिए, नतीजा true होना चाहिए.

हैप्टिक इफ़ेक्ट के आकलन का फ़्लोचार्ट

21वीं इमेज. पहली, दूसरी, और तीसरी हैप्टिक इफ़ेक्ट के विषय का आकलन

अपने हिसाब से आकलन करना

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

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

बेहतर तरीके से आकलन करना

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