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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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