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

डिवाइस निर्माताओं को आमतौर पर प्रत्येक डिवाइस के लिए बनाई गई निजी संपत्तियों का मालिक माना जाता है। इस प्रकार, उनके इंजीनियरिंग प्रयास अक्सर प्रति-डिवाइस के आधार पर केंद्रित होते हैं; पारिस्थितिकी तंत्र में अन्य उपकरणों की स्थिरता के लिए बहुत कम या कोई प्रयास नहीं किया जाता है।

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

यह पृष्ठ एंड्रॉइड हैप्टिक्स एपीआई के सर्वोत्तम उपयोग के लिए हार्डवेयर अनुपालन स्थापित करने के लिए चरण-दर-चरण चेकलिस्ट प्रदान करता है।

नीचे दिया गया आंकड़ा डिवाइस निर्माताओं और डेवलपर्स के बीच सामान्य ज्ञान के निर्माण को दर्शाता है, जो एक सामंजस्यपूर्ण पारिस्थितिकी तंत्र बनाने में एक महत्वपूर्ण कदम है।

ऐप डेवलपर्स और डिवाइस निर्माताओं के लिए हैप्टिक्स उपयोग के मामलों का आरेख

चित्र 1. डिवाइस निर्माताओं और डेवलपर्स के बीच ज्ञान का निर्माण

हैप्टिक्स कार्यान्वयन चेकलिस्ट

  1. स्थिरांक लागू करें

    • हैप्टिक्स को लागू करने के लिए स्थिरांक की सूची।
  2. एचएएल और एपीआई के बीच मानचित्र स्थिरांक

  3. हार्डवेयर का आकलन करें

    • लक्ष्य हैप्टिक प्रभावों पर निर्देश. अपने हार्डवेयर पर त्वरित जांच करने के लिए इन निर्देशों का उपयोग करें।

हम नीचे इनमें से प्रत्येक चरण के बारे में अधिक विस्तार से जानेंगे।

चरण 1: स्थिरांक लागू करें

यह निर्धारित करने के लिए ये जांच करें कि आपका डिवाइस हैप्टिक्स को लागू करने के लिए न्यूनतम आवश्यकताओं को पूरा करता है या नहीं।

हैप्टिक्स कार्यान्वयन प्रक्रिया का फ़्लोचार्ट

चित्र 2. प्रभाव लागू करना

आदिमों को लागू करने के लिए चरणों का फ़्लोचार्ट

चित्र 3. आदिमों को लागू करना

निम्नलिखित हैप्टिक स्थिरांक की कार्यान्वयन स्थिति की जाँच करें।

हैप्टिक स्थिरांक स्थान और सारांश
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK VibrationEffect वर्ग
VibrationEffect में हैप्टिक स्थिरांक में इनपुट घटनाओं की कोई धारणा शामिल नहीं है, और कोई यूआई तत्व नहीं हैं। स्थिरांक में ऊर्जा स्तरों की धारणा शामिल होती है, जैसे कि EFFECT_CLICK और EFFECT_HEAVY_CLICK , जिन्हें createPredefined() कहा जाता है।
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD VibrationEffect.Composition वर्ग
VibrationEffect.Composition में हैप्टिक स्थिरांक को स्केलेबल तीव्रता रखने की अनुमति है, जिसे addPrimitive(int primitiveId, float scale, int delay) कहा जाता है।

नीचे वर्णित वैकल्पिक कंपन उन उपकरणों पर किए जाते हैं जो VibrationEffect स्थिरांक को लागू नहीं करते हैं। ऐसे उपकरणों पर सर्वोत्तम प्रदर्शन करने के लिए इन कॉन्फ़िगरेशन को अपडेट करने की अनुशंसा की जाती है।

  1. EFFECT_CLICK

    VibrationEffect.createWaveform के साथ वेवफॉर्म कंपन बनाया गया और frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern पर कॉन्फ़िगर किया गया समय।

  2. EFFECT_HEAVY_CLICK

    VibrationEffect.createWaveform के साथ वेवफॉर्म कंपन बनाया गया और frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern पर कॉन्फ़िगर किया गया समय।

  3. EFFECT_DOUBLE_CLICK

    VibrationEffect.createWaveform और समय (0, 30, 100, 30) के साथ तरंगरूप कंपन बनाया गया।

  4. EFFECT_TICK

    VibrationEffect.createWaveform के साथ वेवफॉर्म कंपन बनाया गया और frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern पर कॉन्फ़िगर किया गया समय।

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

चित्र 4. फीडबैक स्थिरांक लागू करना

निम्नलिखित सार्वजनिक फीडबैक स्थिरांक की स्थिति की जाँच करें।

हैप्टिक स्थिरांक स्थान और सारांश
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS , KEYBOARD_RELEASE , KEYBOARD_TAP , LONG_PRESS , TEXT_HANDLE_MOVE , VIRTUAL_KEY , VIRTUAL_KEY_RELEASE , पुष्टि करें , REJECT CONFIRM GESTURE_START , GESTURE_END HapticFeedbackConstants वर्ग
HapticFeedbackConstants में Haptic स्थिरांक कुछ UI तत्वों, जैसे KEYBOARD_PRESS और KEYBOARD_RELEASE के साथ इनपुट ईवेंट की सहायता करते हैं, जिन्हें performHapticFeedback() द्वारा कॉल किया जाता है।

चरण 2: एचएएल और एपीआई के बीच स्थिरांक को मैप करें

चरण 2 सार्वजनिक एचएएल स्थिरांक और एपीआई स्थिरांक के बीच अनुशंसित मैपिंग प्रस्तुत करता है। यदि चरण 1 में मूल्यांकन किया गया हार्डवेयर एचएएल स्थिरांक को लागू नहीं करता है, तो समान आउटपुट उत्पन्न करने के लिए चरण 1 में वर्णित फ़ॉलबैक पैटर्न को अपडेट करने के लिए चरण 2 का उपयोग किया जाना चाहिए। मैपिंग को दो अलग-अलग डिफ़ॉल्ट मॉडल द्वारा सहायता प्रदान की जाती है।

  • असतत मॉडल (सरल)

    • आयाम इस मॉडल का प्रमुख चर है। एचएएल में प्रत्येक इकाई एक अलग हैप्टिक आयाम का प्रतिनिधित्व करती है।
    • यह मॉडल बुनियादी हैप्टिक यूएक्स को लागू करने के लिए आवश्यक न्यूनतम आवश्यकता है।
    • अधिक उन्नत हैप्टिक यूएक्स के लिए उन्नत हार्डवेयर और एक उन्नत मॉडल (निरंतर मॉडल) की आवश्यकता होती है।
  • सतत मॉडल (उन्नत)

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

पृथक मॉडल

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

एचएएल स्थिरांक को परिभाषित करना एक हार्डवेयर-निर्भर प्रक्रिया है। उदाहरण के लिए, एक एंट्री-लेवल फोन में केवल एक हैप्टिक तरंग उत्पन्न करने की हार्डवेयर क्षमताएं हो सकती हैं। अधिक उन्नत हार्डवेयर घटकों वाले उपकरण अलग-अलग आयाम स्तरों की एक विस्तृत श्रृंखला का उत्पादन करते हैं, और एचएएल में कई हैप्टिक तरंगों को परिभाषित कर सकते हैं। एचएएल-एपीआई निरंतर मानचित्रण एचएएल स्थिरांक लेता है (आधार रेखा के रूप में मध्यम आयाम का उपयोग करके), फिर वहां से मजबूत या कमजोर प्रभावों की व्यवस्था करता है।

एचएएल निरंतर सीमा और फीडबैक आयाम का आरेख

चित्र 5. आयाम द्वारा एचएएल स्थिर सीमा

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

एचएएल-एपीआई निरंतर मानचित्रण के लिए अलग मॉडल

चित्र 6. एचएएल-एपीआई निरंतर मानचित्रण: पृथक मॉडल

यदि आपका उपकरण अलग-अलग आयामों के साथ केवल दो एचएएल स्थिरांक का समर्थन करता है, तो मध्यम और उच्च आयाम स्तर के एचएएल स्थिरांक को मर्ज करने पर विचार करें। व्यवहार में इस धारणा का एक उदाहरण EFFECT_CLICK और EFFECT_HEAVY_CLICK समान HAL स्थिरांक पर मैप करना होगा, जो कि मध्यम आयाम स्तर HAL स्थिरांक होगा। यदि आपका उपकरण अलग आयाम के साथ केवल एक एचएएल स्थिरांक का समर्थन करता है, तो सभी तीन स्तरों को एक में विलय करने पर विचार करें।

सतत मॉडल

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

बनावट और आयाम द्वारा एचएएल स्थिर सीमा

चित्र 7. बनावट के आधार पर HAL स्थिर सीमा (HAL_H0) और आयाम स्केल (S)

एचएएल-एपीआई निरंतर मानचित्रण के लिए सतत मॉडल

चित्र 8. एचएएल-एपीआई निरंतर मानचित्रण: सतत मॉडल

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

चित्र 7 आयाम मापनीयता के साथ एक एचएएल से कई एपीआई स्थिरांक तक भिन्नता बढ़ाकर निरंतर मानचित्रण को दर्शाता है।

बढ़ती भिन्नता 1

बढ़ती भिन्नता 2

चित्र 9. आयाम मापनीयता के साथ बढ़ती भिन्नता

VibrationEffect.Composition में PRIMITIVE_TICK और PRIMITIVE_CLICK जैसे सभी स्केलेबल एपीआई स्थिरांक के लिए, एपीआई स्थिरांक का ऊर्जा स्तर float scale पैरामीटर पर निर्भर करता है जब एपीआई स्थिरांक addPrimitive(int primitiveID, float scale, int delay) के माध्यम से घोषित किया जाता है। PRIMITIVE_TICK और PRIMITIVE_CLICK अलग-अलग HAL स्थिरांकों का उपयोग करके स्पष्ट अंतर के साथ डिज़ाइन किया जा सकता है। यदि आप बनावट में विविधता जोड़ना चाहते हैं तो इस दृष्टिकोण की अनुशंसा की जाती है।

चरण 3: हार्डवेयर का आकलन करें

हार्डवेयर मूल्यांकन में इस विशिष्ट मूल्यांकन के लिए प्रभाव 1, 2, और 3 लेबल वाले तीन हैप्टिक प्रभावों को परिभाषित करना शामिल है।

प्रभाव 1: पूर्वनिर्धारित लघु हैप्टिक स्थिरांक

VibrationEffect.EFFECT_CLICK स्थिरांक चरण 2 में प्रदान की गई HAL-API मैपिंग में बेसलाइन प्रभाव या सामान्य विभाजक है। इसे सबसे अधिक उपयोग किए जाने वाले प्रभाव, HapticFeedbackConstants.KEYBOARD_PRESS के साथ मैप किया गया है। इस प्रभाव का आकलन करने से स्पष्ट हैप्टिक्स के लिए आपके लक्षित डिवाइस की तैयारी निर्धारित करने में मदद मिलती है।

प्रभाव 2: लघु कस्टम हैप्टिक प्रभाव

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

लघु कस्टम हैप्टिक प्रभाव की तरंग

चित्र 10. लघु कस्टम हैप्टिक प्रभाव

प्रभाव 3: आयाम भिन्नता के साथ लंबा कस्टम हैप्टिक प्रभाव

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

आयाम भिन्नता के साथ हैप्टिक प्रभाव तरंग

चित्र 11. आयाम भिन्नता के साथ लंबा कस्टम हैप्टिक प्रभाव

प्रभाव 3 के लिए आयाम नियंत्रण की हार्डवेयर क्षमताओं की जांच करने के लिए, Vibrator.hasAmplitudeControl() विधि का उपयोग करें। जैसा कि इरादा था अलग-अलग आयाम के साथ VibrationEffect.createWaveform निष्पादित करने के लिए परिणाम true होना चाहिए।

व्यक्तिपरक हैप्टिक प्रभाव मूल्यांकन का फ़्लोचार्ट

चित्र 12. हैप्टिक प्रभाव 1, 2, और 3 का विषय मूल्यांकन

व्यक्तिपरक मूल्यांकन करें

त्वरित सुसंगतता जांच के लिए, पहले व्यक्तिपरक मूल्यांकन करें। व्यक्तिपरक मूल्यांकन का लक्ष्य यह निर्धारित करने के लिए हैप्टिक प्रभावों के आयाम का निरीक्षण करना है कि क्या उपकरण मानव-बोधगम्य आयामों के साथ हैप्टिक्स उत्पन्न कर सकता है।

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