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

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

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

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

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

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

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

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

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

चौदहवीं इमेज. आयाम के हिसाब से एचएएल की कॉन्स्टेंट रेंज

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

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

15वीं इमेज. HAL-API कॉन्स्टेंट मैपिंग: डिसक्रीट मॉडल

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

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

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

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

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

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

17वीं इमेज. HAL-API कॉन्सटेंट मैपिंग: लगातार काम करने वाला मॉडल

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

आकृति 18 में, एक एचएएल से कई एपीआई कॉन्स्टेंट तक एंप्लीट्यूड स्केलेबिलिटी के साथ वैरिएशन बढ़ाकर, कॉन्स्टेंट मैपिंग के बारे में बताया गया है.

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

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

18वीं इमेज. ऐम्प्लिट्यूड स्केलेबिलिटी की मदद से वेरिएशन बढ़ाना

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