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

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

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

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

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