हैप्टिक्स को लागू करना

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

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

यह पृष्ठ Android haptics API के सर्वोत्तम उपयोग के लिए हार्डवेयर अनुपालन सेट करने के लिए चरण-दर-चरण चेकलिस्ट प्रदान करता है।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

हैप्टिक स्थिरांक स्थान और सारांश
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK VibrationEffect वर्ग
VibrationEffect में हैप्टिक स्थिरांक में इनपुट ईवेंट की कोई धारणा शामिल नहीं है, और इसमें कोई UI तत्व नहीं है। स्थिरांक में इसके बजाय ऊर्जा स्तरों की धारणा शामिल है, जैसे कि 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

    वाइब्रेशनइफेक्ट.क्रिएटवेवफॉर्म और frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern पर कॉन्फ़िगर किए गए वेवफॉर्म VibrationEffect.createWaveform

  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 , CONFIRM GESTURE_END GESTURE_START REJECT

HapticFeedbackConstants class
HapticFeedbackConstants में Haptic स्थिरांक कुछ UI तत्वों, जैसे KEYBOARD_PRESS और KEYBOARD_RELEASE के साथ इनपुट ईवेंट की सहायता करते हैं, जिन्हें performHapticFeedback() द्वारा बुलाया जाता है।

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

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

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

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

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

असतत मॉडल

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

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

एचएएल निरंतर सीमा और प्रतिक्रिया आयाम का आरेख

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

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

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

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

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

सतत मॉडल

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

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

चित्रा 7. बनावट (HAL_H0) और आयाम पैमाने (एस) द्वारा एचएएल निरंतर सीमा

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

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

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

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

बढ़ती विविधता 1

बढ़ती विविधता 2

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

नोट: ऊपर दिया गया आंकड़ा निरंतर मानचित्रण का एक विशिष्ट उदाहरण दिखाता है, इसलिए नामकरण परंपराएं काल्पनिक हैं। इस प्रक्रिया को करना प्रत्येक डिवाइस निर्माता के लिए अद्वितीय है।

सभी स्केलेबल एपीआई स्थिरांक जैसे कि PRIMITIVE_TICK और PRIMITIVE_CLICK के लिए VibrationEffect.Composition में, एपीआई स्थिरांक का ऊर्जा स्तर 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 ms अनुशंसित अधिकतम सीमा है। 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 का विषय मूल्यांकन

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

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

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