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

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

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

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

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

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

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

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

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

पहली इमेज. ऐम्प्लिट्यूड के हिसाब से, एचएएल कॉन्स्टैंट की रेंज.

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

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

दूसरी इमेज. एचएएल-एपीआई कॉन्स्टैंट मैपिंग: डिस्क्रीट मॉडल.

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

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

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

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

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

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

चौथी इमेज. एचएएल-एपीआई कॉन्स्टैंट मैपिंग: कंटीन्यूअस मॉडल.

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

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

वैरिएशन 1 में बढ़ोतरी

बढ़ता हुआ वैरिएशन
2

पांचवीं इमेज. ऐम्प्लिट्यूड स्केलेबिलिटी के साथ, बढ़ोतरी.

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