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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

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

चित्र 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 , CONFIRM , REJECT , GESTURE_START , GESTURE_END

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

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

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

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

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

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

असतत मॉडल

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

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

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

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

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

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

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

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

सतत मॉडल

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

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

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

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

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

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

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

बढ़ता हुआ वैरिएंट 1

बढ़ता हुआ रूप 2

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

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

VibrationEffect.Composition में सभी स्केलेबल API स्थिरांक जैसे PRIMITIVE_TICK और PRIMITIVE_CLICK के लिए, API स्थिरांक का ऊर्जा स्तर float scale पैरामाटर पर निर्भर करता है जब API स्थिरांक को 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 का विषय मूल्यांकन

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

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

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