पीसवाइज़ लीनियर एनवलप (पीडब्ल्यूएलई) इफ़ेक्ट, समय के साथ कंपन की फ़्रीक्वेंसी और त्वरण तय करने वाले पॉइंट के क्रम होते हैं. पीडब्ल्यूएलई, बेहतर और ज़्यादा डाइनैमिक हैप्टिक फ़ीडबैक देते हैं.
Android 16 और इसके बाद के वर्शन में, ऐप्लिकेशन डेवलपर के लिए दो एपीआई उपलब्ध होते हैं. इनकी मदद से, पीडब्ल्यूएलई इफ़ेक्ट बनाए जा सकते हैं:
- सामान्य PWLE API: यह आसान है, लेकिन इसमें कुछ सीमाएं हैं. जल्दी शुरू करने के लिए अच्छा है. यह
BasicEnvelopeBuilder
पर उपलब्ध है. - बेहतर PWLE API: ज़्यादा कंट्रोल और सुविधाओं के लिए, आपको haptics के बारे में जानकारी और हार्डवेयर के बारे में कुछ जानकारी होनी चाहिए. यह
WaveformEnvelopeBuilder
पर उपलब्ध है.
इन एपीआई के साथ काम करने के लिए, डिवाइसों को ये एचएएल एपीआई लागू करने होंगे:
- फ़्रीक्वेंसी से आउटपुट ऐक्सेलरेशन मैपिंग (एफ़ओएएम): डिवाइस के लिए, वाइब्रेशन फ़्रीक्वेंसी से लेकर ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन तक की मैपिंग उपलब्ध कराता है.
- पीडब्ल्यूएलई बनाना: यह वाइब्रेशन की वेवफ़ॉर्म के पीडब्ल्यूएलई से तय किया गया वाइब्रेशन चलाता है.
बुनियादी PWLE API
हार्डवेयर या मनुष्य की परसेप्शन के बारे में ज़्यादा जानकारी के बिना, पीडब्ल्यूएलई इफ़ेक्ट बनाने के लिए, डेवलपर बुनियादी पीडब्ल्यूएलई एपीआई का इस्तेमाल कर सकते हैं. इस एपीआई को इन पैरामीटर का इस्तेमाल करके तय किया जाता है:
- [0, 1] की रेंज में मौजूद इंटेंसिटी वैल्यू से, वाइब्रेशन की अनुमानित तीव्रता का पता चलता है. उदाहरण के लिए, 0.5 वैल्यू का मतलब है कि डिवाइस पर, ग्लोबल तौर पर ज़्यादा से ज़्यादा इंटेंसिटी का आधा हिस्सा है.
- शार्पनेस वैल्यू, [0, 1] की रेंज में होती है. इससे कंपन की तीव्रता का पता चलता है. कम वैल्यू से वाइब्रेशन कम होते हैं, जबकि ज़्यादा वैल्यू से वाइब्रेशन ज़्यादा होते हैं.
- कुल समय, पिछले पीडब्ल्यूएलई पॉइंट (यानी, तीव्रता और तीक्ष्णता के पेयर) से नए पॉइंट पर जाने में लगने वाला समय होता है. इसे मिलीसेकंड में मेज़र किया जाता है.
यहां एक उदाहरण के तौर पर वेवफ़ॉर्म दिया गया है, जो 500 मिलीसेकंड में कम पिच से ज़्यादा पिच वाले ज़्यादा से ज़्यादा वाइब्रेशन तक तीव्रता बढ़ाता है. इसके बाद, 100 मिलीसेकंड में 0 (बंद) तक तीव्रता कम करता है:
VibrationEffect effect = new VibrationEffect.BasicEnvelopeBuilder()
.setInitialSharpness(0.0f)
.addControlPoint(1.0f, 1.0f, 500)
.addControlPoint(0.0f, 1.0f, 100)
.build();
कंस्ट्रेंट
बेहतर और आसानी से काम करने वाला हैप्टिक अनुभव देने के लिए, PWLE इफ़ेक्ट की शुरुआत और आखिर में तीव्रता 0.0 होनी चाहिए. एपीआई, शुरू होने की इंटेंसिटी को 0 पर सेट करके, इस शर्त को लागू करता है. साथ ही, अगर खत्म होने की इंटेंसिटी 0 नहीं है, तो वह एक अपवाद दिखाता है. इस सीमित वैल्यू की वजह से, ऐम्प्ल्यट्यूड में होने वाली रुकावटों की वजह से, वाइब्रेशन में अनचाहे डाइनैमिक इफ़ेक्ट नहीं होते. इन इफ़ेक्ट से, उपयोगकर्ता की स्पर्श से जुड़ी संवेदनाओं पर बुरा असर पड़ सकता है.
Android नेटवर्क पर पीडब्ल्यूएलई इफ़ेक्ट को एक जैसा रेंडर करने के लिए, फ़्रेमवर्क के मुताबिक, इस सुविधा वाले डिवाइसों में पीडब्ल्यूएलई पॉइंट के बीच कम से कम 10 एमएस और पीडब्ल्यूएलई इफ़ेक्ट के लिए कम से कम 16 पॉइंट होने चाहिए. इन ज़रूरी शर्तों को VTS टेस्ट के ज़रिए लागू किया जाता है. इससे यह पक्का करने में मदद मिलती है कि Android डिवाइसों पर, भरोसेमंद PWLE इफ़ेक्ट काम करें.
बेहतर PWLE API
हैप्टिक्स के बारे में ज़्यादा जानकारी वाले डेवलपर, इन शर्तों का इस्तेमाल करके पीडब्ल्यूएलई इफ़ेक्ट तय कर सकते हैं:
- [0, 1] की रेंज में मौजूद ऐम्प्ल्यट्यूड वैल्यू से पता चलता है कि किसी दी गई फ़्रीक्वेंसी पर कितनी ऐंप्ल्यट्यूड हासिल की जा सकती है. यह वैल्यू, डिवाइस के एफ़ओएएम से तय होती है. उदाहरण के लिए, 0.5 वैल्यू से, तय फ़्रीक्वेंसी पर ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन का आधा हिस्सा जनरेट होता है.
- फ़्रीक्वेंसी को सीधे हर्ट्ज में बताया जाता है.
- कुल समय, पिछले पीडब्ल्यूएलई पॉइंट से नए पॉइंट पर ट्रांज़िशन में लगने वाला समय होता है. इसे मिलीसेकंड में मेज़र किया जाता है.
यहां एक उदाहरण के तौर पर वेवफ़ॉर्म दिया गया है, जो 100 मिलीसेकंड में वाइब्रेटर को बंद से 120 हर्ट्ज़ पर फ़ुल ऐम्प्ल्यट्यूड पर ले जाता है. यह उस स्थिति में 200 मिलीसेकंड तक बना रहता है और फिर 100 मिलीसेकंड में वापस कम हो जाता है:
VibrationEffect effect = new VibrationEffect.WaveformEnvelopeBuilder()
.addControlPoint(1.0f, 120f, 100)
.addControlPoint(1.0f, 120f, 200)
.addControlPoint(0.0f, 120f, 100)
.build();
कंस्ट्रेंट
फ़्रेमवर्क, डेवलपर की ओर से अनुरोध की गई फ़्रीक्वेंसी और ऐम्प्ल्यट्यूड की वैल्यू में बदलाव नहीं करता. हालांकि, यह ट्रांज़िशन को आसान बनाने के लिए, ऐम्प्ल्यट्यूड के शुरुआती पॉइंट के तौर पर 0 जोड़ता है.
डेवलपर यह पक्का करने के लिए ज़िम्मेदार हैं कि उनके PWL इफ़ेक्ट में बताई गई फ़्रीक्वेंसी, डिवाइस के फ़ोम के मुताबिक डिवाइस के साथ काम करने वाली रेंज में हो. अगर वैल्यू इन सीमाओं से ज़्यादा होती हैं, तो डिवाइस नहीं वाइब्रेट करता.
फ़्रीक्वेंसी टू आउटपुट ऐक्सेलरेशन मैपिंग (एफ़ओएएम)
PWLE API के साथ काम करने के लिए, यह ज़रूरी है कि डिवाइस की फ़्रीक्वेंसी को गति बढ़ाने की सुविधाओं के हिसाब से दिखाया जाए. इस सेक्शन में, इस डेटा के महत्व के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि PWLE API इसका इस्तेमाल कैसे करते हैं और इसे जनरेट करने की प्रोसेस क्या है.
मैपिंग को समझना
PWLE इफ़ेक्ट के साथ काम करने वाले डिवाइसों को, गति का मैप (एफ़ओएएम) आउटपुट करने के लिए फ़्रीक्वेंसी देनी होगी. FOAM, HAL से जनरेट किया गया डेटा स्ट्रक्चर है. यह कंपन की फ़्रीक्वेंसी (हर्ट्ज़ में) को उस फ़्रीक्वेंसी पर ऐक्चुएटर के ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन (जी पीक में) से मैप करता है. यह मैप, यह समझने के लिए ज़रूरी है कि काम करने वाली फ़्रीक्वेंसी रेंज के लिए, वाइब्रेशन आउटपुट में क्या फ़र्क़ होता है. साथ ही, यह बुनियादी PWLE API तय करने के लिए भी ज़रूरी है.
नीचे दिए गए प्लॉट में, सामान्य रेज़ोनेंट ऐक्चुएटर के लिए फ़्लोर ऑप्टिमाइज़ेशन ऐल्गोरिदम (एफ़ओएएम) का उदाहरण दिया गया है. इसमें मोटर को सुरक्षित रखने के लिए, इनपुट वोल्टेज को रेज़ोनेंट फ़्रीक्वेंसी के आस-पास सीमित किया गया है:
पहली इमेज. सामान्य रेज़ोनेंट ऐक्चुएटर के लिए फ़ोम का उदाहरण.
FOAM का इस्तेमाल इन तीन मुख्य कामों के लिए किया जाता है:
- पूरी फ़्रीक्वेंसी रेंज तय करना: FOAM, डिवाइस की पूरी फ़्रीक्वेंसी रेंज तय करता है. इसके लिए, वह वाइब्रेशन की कम से कम और ज़्यादा से ज़्यादा फ़्रीक्वेंसी तय करता है.
- इंटेंसिटी और शार्पनेस वैल्यू तय करना: बुनियादी PWLE API, इंटेंसिटी और शार्पनेस के लिए, इंसान की परसेप्शन स्केल पर काम करता है. इसके बाद, FOAM में आउटपुट ऐक्सेलरेशन वैल्यू का इस्तेमाल करके, हार्डवेयर फ़्रीक्वेंसी और ऐम्प्ल्यट्यूड पैरामीटर पर मैप किया जाता है. इस मैपिंग से यह पक्का करने में मदद मिलती है कि हाप्टिक इफ़ेक्ट, हार्डवेयर की क्षमताओं के हिसाब से रेंडर किए जाएं. कम से कम पता चलने वाली थ्रेशोल्ड से, शार्पनेस रेंज तय होती है. यह उन फ़्रीक्वेंसी से जुड़ी होती है जिन पर डिवाइस, उपयोगकर्ताओं को महसूस होने वाले हैप्टिक इफ़ेक्ट जनरेट कर सकता है. यह फ़्रेमवर्क, चुनी गई फ़्रीक्वेंसी पर टारगेट आउटपुट ऐक्सेलरेशन के आधार पर, इंटेंसिटी वैल्यू को ऐम्प्ल्यट्यूड पर मैप करता है. इससे यह पक्का करने में मदद मिलती है कि डिवाइस की क्षमताओं के हिसाब से, चुना गया इंटेंसिटी लेवल हासिल किया जा सके.
- हार्डवेयर की सुविधाओं को एक्सपोज़ करना:
VibratorFrequencyProfile
में, डेवलपर के लिए FOAM को एक्सपोज़ किया जाता है. इससे, डिवाइस की कुछ हैप्टिक सुविधाओं के बारे में जानकारी देने वाले ऐक्सेलरेशन डेटासेट को आउटपुट करने के लिए पूरी फ़्रीक्वेंसी मिलती है. इस डेटा की मदद से, डेवलपर बेहतर PWLE API का इस्तेमाल करके, वाइब्रेशन के ऐसे कस्टम इफ़ेक्ट बना सकते हैं जो फ़्रेमवर्क की तय की गई बुनियादी इंटेंसिटी और शार्पनेस रेंज से ज़्यादा बेहतर हों.
FOAM और बुनियादी PWLE API
वाइब्रेशन इफ़ेक्ट को बेहतर बनाने में फ़ोम की अहम भूमिका होती है. इसका इस्तेमाल, बुनियादी एनवलप एपीआई के लिए, साउंड की क्वालिटी की रेंज का हिसाब लगाने के लिए किया जाता है. इससे यह पक्का किया जाता है कि उपयोगकर्ता को वाइब्रेशन महसूस हो. यह रेंज उन फ़्रीक्वेंसी से जुड़ी होती है जिनमें हर फ़्रीक्वेंसी के लिए, आउटपुट ऐक्सेलरेशन, इंसान की परसेप्शन डिटेक्शन थ्रेशोल्ड (यानी, कम से कम परसेप्शन लेवल) से 10 dB से ज़्यादा होता है. इससे यह पक्का होता है कि वाइब्रेशन की तीव्रता इतनी हो कि उसे महसूस किया जा सके.
इसके अलावा, फ़्रेमवर्क, FOAM डेटा का इस्तेमाल करके, बुनियादी PWLE API में इस्तेमाल की गई तीव्रता और तीक्ष्णता की वैल्यू को उनके एम्प्लitude और फ़्रीक्वेंसी वैल्यू के साथ मैप करता है. इस मैपिंग से, अलग-अलग डिवाइसों पर, हैप्टिक फ़ीडबैक को बेहतर तरीके से महसूस किया जा सकता है.
वीटीएस टेस्ट की सुविधा, यह पक्का करने के लिए है कि जिन डिवाइसों पर इनवेलप इफ़ेक्ट काम करते हैं उनमें ऐसी फ़्रीक्वेंसी रेंज हो जो वाइब्रेशन पैदा करती हो. इससे यह पक्का करने में मदद मिलती है कि डिवाइस, उपयोगकर्ताओं को साफ़ तौर पर महसूस हो सकने वाली ज़रूरत के हिसाब से वाइब्रेशन पैदा कर सकता है.
एडवांस PWLE API और FOAM
VibratorFrequencyProfile
, डेवलपर को FOAM की जानकारी देता है. इसमें यह जानकारी शामिल होती है:
- फ़्रीक्वेंसी रेंज: डेवलपर, डिवाइस की कम से कम और ज़्यादा से ज़्यादा फ़्रीक्वेंसी को हर्ट्ज़ में
getMinFrequencyHz
औरgetMaxFrequencyHz
का इस्तेमाल करके, क्रमशः हासिल कर सकते हैं. - ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन:
getMaxOutputAccelerationGs
की मदद से, डिवाइस के ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन (G में) के बारे में पता चलता है. - फ़्रीक्वेंसी से ऐक्सेलरेशन मैपिंग आउटपुट करने की सुविधा:
getFrequenciesOutputAcceleration
, फ़्रीक्वेंसी से ऐक्सेलरेशन मैपिंग आउटपुट करने की सुविधा देता है, जैसा कि एचएएल में लागू किया गया है.
डेवलपर, बेहतर PWLE API की मदद से, एनवलप इफ़ेक्ट बनाते समय इस जानकारी का इस्तेमाल कर सकते हैं. उदाहरण के लिए, G में आउटपुट एक्सेलेरेशन की जानकारी देते समय, डिवाइस के ज़्यादा से ज़्यादा आउटपुट एक्सेलेरेशन के हिसाब से, [0.0, 1.0] की रेंज में वैल्यू को सामान्य करना ज़रूरी है.
बेहतर PWLE API की मदद से, डेवलपर पूरी फ़्रीक्वेंसी रेंज का इस्तेमाल कर सकते हैं. इसलिए, यह ज़रूरी है कि दिया गया FOAM डेटा, वाइब्रेटर के लिए सुरक्षित हो और उसकी क्षमताओं से ज़्यादा न हो.
मानवीय समझ की पहचान करने के लिए थ्रेशोल्ड
मानवीय समझ के आधार पर पता लगाने के थ्रेशोल्ड का मतलब, कंपन के उस कम से कम ऐक्सेलरेशन से है जिसे कोई व्यक्ति भरोसेमंद तरीके से पता लगा सकता है. यह लेवल, कंपन की फ़्रीक्वेंसी के हिसाब से अलग-अलग होता है.
नीचे दिया गया प्लॉट, समय के साथ फ़्रीक्वेंसी के फ़ंक्शन के तौर पर, मानव के स्पर्श से जुड़ी संवेदनाओं का पता लगाने की सीमा1 को दिखाता है:
दूसरी इमेज. ह्यूमन हैप्टिक परसेप्शन डिटेक्शन थ्रेशोल्ड.
उपयोगकर्ता लगातार हैप्टिक इफ़ेक्ट महसूस कर सकें, इसके लिए वीटीएस टेस्ट की मदद से पुष्टि की जाती है कि एनवलप की सुविधा वाले डिवाइसों की फ़्रीक्वेंसी रेंज ऐसी हो जिससे वाइब्रेशन ऐम्प्लिटी, मानवीय संवेदनशीलता के थ्रेशोल्ड से 10 dB ज़्यादा हो.
वाइब्रेशन की तीव्रता बनाम वाइब्रेशन एक्सेलेरेशन ऐम्प्लitude
वाइब्रेशन की इंटेंसिटी (एक परसेप्शन मेज़र) के लिए, इंसान की परसेप्शन, वाइब्रेशन के ऐम्प्ल्यफ़िड (एक फ़िज़िकल पैरामीटर) के साथ लीनियर तरीके से नहीं बढ़ती. PWLE API यह मानता है कि जब कोई डिज़ाइनर या डेवलपर, वाइब्रेशन की तीव्रता में बदलाव करने के बारे में सोचता है, तो वह यह उम्मीद करता है कि वाइब्रेशन की तीव्रता, PWLE के हिसाब से हो. महसूस की गई तीव्रता को, सेंसेशन लेवल (एसएल) से दिखाया जाता है. इसे उसी फ़्रीक्वेंसी पर, डिटेक्शन थ्रेशोल्ड से ऊपर डीबी के तौर पर दिखाया जाता है. इसलिए, कंपन के ऐक्सेलरेशन ऐम्प्ल्यूड (G पीक में) का हिसाब इस तरह लगाया जा सकता है:
\(Amplitude(G) =10^\frac{Amplitude(db)}{20}\)
यहां, किसी खास फ़्रीक्वेंसी पर, ऐम्प्ल्यट्यूड डीबी, एसएल और डिटेक्शन थ्रेशोल्ड (नीचे दिए गए प्लॉट में ऑर्डिनेट के साथ मौजूद वैल्यू) का कुल योग होता है.
इस तरह, PWLE API यह पक्का करता है कि कंट्रोल पॉइंट के एक-दूसरे के बाद के पेयर के बीच, अनुमानित तीव्रता में लीनियर तरीके से बदलाव होता है.
नीचे दिए गए प्लॉट में, 10, 20, 30, 40, और 50 dB SL पर वाइब्रेशन एक्सेलेरेशन लेवल2 दिखाए गए हैं. साथ ही, इसमें समय के हिसाब से फ़्रीक्वेंसी के फ़ंक्शन के तौर पर, इंसान की स्पर्श से जुड़ी संवेदनाओं का पता लगाने की थ्रेशोल्ड (0 dB SL) भी दिखाई गई है.
तीसरी इमेज. वाइब्रेशन ऐक्सेलरेशन लेवल.
फ़्रीक्वेंसी को ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन कर्व से तय करना
इस सेक्शन में, डिवाइस से फ़्रीक्वेंसी से लेकर मैक्सिमम आउटपुट ऐक्सेलरेशन कर्व पाने का सामान्य तरीका बताया गया है. इसका इस्तेमाल, FOAM डेटा जनरेट करने के लिए किया जाता है.
ज़्यादा से ज़्यादा वोल्टेज कर्व (V) पाना
V
वह ज़्यादा से ज़्यादा वोल्टेज है जिसे वाइब्रेटर की ऑपरेटिंग फ़्रीक्वेंसी रेंज में सुरक्षित तरीके से लागू किया जा सकता है. इससे यह पक्का होता है कि वाइब्रेटर सुरक्षित सीमाओं के अंदर काम करे. इससे, वाइब्रेटर को नुकसान पहुंचने से बचाने के साथ-साथ, वाइब्रेशन आउटपुट को बढ़ाने में मदद मिलती है.
अगर हार्डवेयर में वोल्टेज की सीमा तय करने की सुविधा शामिल है, तो इसका इस्तेमाल करके, काम करने वाली फ़्रीक्वेंसी रेंज में, सीधे तौर पर ज़्यादा से ज़्यादा वोल्टेज का पता लगाएं.
सबसे ज़्यादा त्वरण (M) का हिसाब लगाना
M
, ज़्यादा से ज़्यादा एक्सेलरेशन है. इसकी गिनती अलग-अलग तरीकों से की जा सकती है. इस सेक्शन में, लीनियर रेज़ॉनैंट ऐक्चुएटर (एलआरए) का इस्तेमाल करने वाले डिवाइसों के लिए एक तरीका बताया गया है.
यह तरीका, किसी तय फ़्रीक्वेंसी पर लागू किए गए ज़्यादा से ज़्यादा वोल्टेज को, उससे जुड़ी ज़्यादा से ज़्यादा ऐक्सेलरेशन वैल्यू में बदल देता है. इसे जी पीक में दिखाया जाता है.
इस कन्वर्ज़न के लिए इस्तेमाल किया जाने वाला मुख्य समीकरण यह है:
\(\text{Accel}(w)= (\text{Vsys}\times\text{BLsys}\times\text{Loc_coeff}/\text{Rsys}/\text{MPhone})\times{w^2}/\text{Psys_abs}/{9.81}\)
यहां:
Vsys
: हैप्टिक ऐक्चुएटर पर लागू किया गया असल वोल्टेज लेवल
BLsys
: वाइब्रेशन मोटर के चुंबकीय क्षेत्र की क्षमता (B
) और कंडक्टर की लंबाई (L
) का प्रॉडक्ट
Loc_coeff
: मॉड्यूल लेवल के ऐक्सेलरेशन को फ़ोन लेवल के ऐक्सेलरेशन में बदलने के लिए जगह का गुणांक
Rsys
: वाइब्रेशन मोटर कॉइल का इलेक्ट्रिकल रेज़िस्टेंस
MPhone
: डिवाइस का वज़न (उदाहरण के लिए, फ़ोन)
w
: ड्राइविंग सिग्नल की ऐंगल फ़्रीक्वेंसी (रेडियन प्रति सेकंड), जिसे इस तरह से कैलकुलेट किया जाता है:
\(w = 2 \pi f\)
Psys_abs
: दूसरे ऑर्डर के द्रव्यमान, डैम्पर, और स्प्रिंग सिस्टम के आयाम रिस्पॉन्स का हिसाब इस तरह लगाया जाता है:
\(\text{Psys_abs} = (\text{Wnsys}^2-w^2)^2+({w}\times(\text{Wnsys}/\text{Qsys}))^2\)
Wnsys
: वाइब्रेट करने वाले सिस्टम की नेचुरल फ़्रीक्वेंसी
Qsys
: वाइब्रेशन सिस्टम की क्वालिटी फ़ैक्टर
Loc_coeff
, फ़ोन लेवल पर मापे गए ऐक्सेलरेशन और मॉड्यूल लेवल पर मापे गए ऐक्सेलरेशन का अनुपात होता है. इस अनुपात का इस्तेमाल, मॉड्यूल-लेवल की ऐक्सेलरेशन रीडिंग को फ़ोन-लेवल की ऐक्सेलरेशन रीडिंग में बदलने के लिए किया जाता है. फ़ोन के लेवल पर, मॉड्यूल की गति के ऐंगलर ऐक्सेलरेशन की वजह से, ऐक्सेलरेशन बढ़ जाता है. इस तरह के असर के लिए, यह गुणांक ज़रूरी होता है. इसका हिसाब इस तरह लगाया जाता है:
\(\text{Loc_coeff} = \text{phone_acceleration} / \text{module_acceleration}\)
उदाहरण के लिए, अगर मॉड्यूल का ऐक्सेलरेशन 1 g है और फ़ोन का ऐक्सेलरेशन
2.5 g है, तो Loc_coeff
= 2.5 होगा. इससे पता चलता है कि 2.5 गुना ज़्यादा लोगों ने आपके विज्ञापन देखे.
Android फ़्रेमवर्क, फ़्रीक्वेंसी को हर्ट्ज की यूनिट में लेता है. इसलिए, एचएएल को फ़ोम डेटा जनरेट करते समय, फ़्रीक्वेंसी यूनिट को रेडियन प्रति सेकंड से हर्ट्ज में बदलना पड़ता है.
फ़ोम कर्व जनरेट करना
FOAM कर्व का पता लगाने के लिए, सबसे ज़्यादा वोल्टेज कर्व (V
) और ऐक्सेलरेशन कैलकुलेशन (M
) को जोड़ें:
- अपनी पसंद की रेंज में हर फ़्रीक्वेंसी (
f
) के लिए, ज़्यादा से ज़्यादा वोल्टेज कर्व से उससे जुड़ा ज़्यादा से ज़्यादा वोल्टेजV(f)
ढूंढें. - ऊपर दिए गए समीकरण का इस्तेमाल करके, उस फ़्रीक्वेंसी पर ज़्यादा से ज़्यादा त्वरण का हिसाब लगाएं. इसके लिए,
Vsys
के लिएV(f)
औरw
के लिए उससे जुड़ेf
का इस्तेमाल करें. इससे आपकोM(V(f), f)
मिलता है. - इस हिसाब से, त्वरण की वैल्यू आपकी
FOAM(f)
वैल्यू होती है.
FOAM डेटा को एक्सपोज़ करना
FOAM कर्व जनरेट होने के बाद, HAL उस कर्व को FrequencyAccelerationMapEntry
ऑब्जेक्ट की सूची के तौर पर दिखाता है. हर एंट्री, मैपिंग में एक पॉइंट तय करती है. इसमें फ़्रीक्वेंसी (हर्ट्ज़ में) और उससे जुड़ा ज़्यादा से ज़्यादा आउटपुट ऐक्सेलरेशन (जी पीक में) तय किया जाता है.
फ़्लोर एरिया ऑब्जेक्ट ऐक्सेस मेथड (एफ़ओएएम) के रिज़ॉल्यूशन के लिए कोई ज़रूरी शर्त नहीं है. हालांकि, हमारा सुझाव है कि कर्व को एक सबसे ज़्यादा पीक के साथ तय करें. वाइब्रेशन इफ़ेक्ट को मैप करने के लिए, बेसिक एन्वलप एपीआई में सिर्फ़ पहले पीक का इस्तेमाल किया जाता है. हमारा सुझाव है कि आप ऐक्सेलरेशन की बीच की वैल्यू तय करते समय, लीनियर इंटरपोलेशन की सटीक जानकारी पाने के लिए, पीक के आस-पास हाई फ़्रीक्वेंसी रिज़ॉल्यूशन तय करें. उदाहरण के लिए, सबसे ज़्यादा फ़्रीक्वेंसी के +/- 10 Hz की रेंज में, 1 Hz के स्टैप का इस्तेमाल करें.
डिवाइस की सुविधाएं और सीमाएं
Android 16 और इसके बाद के वर्शन के लिए, डेवलपर अपने PWLE इफ़ेक्ट को ऑप्टिमाइज़ कर सकें और यह पक्का कर सकें कि ऐप्लिकेशन सभी डिवाइसों पर काम करता है, इसके लिए Android में HAL API शामिल किए गए हैं. इनकी मदद से, डिवाइस की PWLE क्षमताओं के बारे में क्वेरी की जा सकती है. इन तरीकों से, डिवाइस की सीमाओं के बारे में जानकारी मिलती है. जैसे, PWLE प्राइमिटिव की कम से कम या ज़्यादा से ज़्यादा अवधि और PWLE कॉम्पोज़िशन में प्राइमिटिव की अनुमति वाली संख्या.
एचएएल एपीआई में ये शामिल हैं:
CAP_COMPOSE_PWLE_EFFECTS_V2
:IVibrator.getCapabilities
के ज़रिए तब दिखाया जाता है, जब डिवाइस पर यह सुविधा काम करती हो.getFrequencyToOutputAccelerationMap
: FOAM डेटा को वापस लाता है.getPwleV2PrimitiveDurationMinMillis
: किसी भी प्रिमिटिव PWLE के लिए, मिलीसेकंड में कम से कम अनुमति वाली अवधि को वापस लाता है.getPwleV2PrimitiveDurationMaxMillis
: किसी भी प्राइमटिव PWLE के लिए, मिलीसेकंड में तय की गई ज़्यादा से ज़्यादा अवधि को दिखाता है.getPwleV2CompositionSizeMax
:IVibrator.composePwleV2
के साथ काम करने वाले ज़्यादा से ज़्यादा PWLE प्राइमिटिव को वापस लाता है.
यह जानकारी डेवलपर के लिए उपलब्ध कराई जाती है, ताकि वे टारगेट डिवाइस की खास सुविधाओं के हिसाब से अपने इफ़ेक्ट को बेहतर बना सकें. खास तौर पर, बेहतर PWLE API का इस्तेमाल करते समय.
फ़्रेमवर्क, बेसिक एपीआई से बनाए गए इफ़ेक्ट को मैनेज करते समय भी इन एपीआई का इस्तेमाल करता है. अगर कोई इफ़ेक्ट, डिवाइस की सीमाओं से ज़्यादा है, तो फ़्रेमवर्क, इफ़ेक्ट को अनुमति वाली सीमाओं में फ़िट करने के लिए अपने-आप अडजस्ट हो जाता है. उदाहरण के लिए, बहुत ज़्यादा पीडब्ल्यूएलई पॉइंट या ज़्यादा से ज़्यादा अवधि. अडजस्टमेंट की इस प्रोसेस में, डिज़ाइन के मूल मकसद और स्टाइल को ज़्यादा से ज़्यादा बनाए रखने की कोशिश की जाती है.
-
थ्रेशोल्ड डेटा को Bolanowski Jr. के फ़िगर 1 में मौजूद डिसप्लेसमेंट थ्रेशोल्ड से बदला जाता है, एस॰ J., et al.. "चार चैनल, टच के मैकेनिकल पहलुओं को कंट्रोल करते हैं." जर्नल ऑफ़ द एकाउस्टिकल सोसाइटी ऑफ़ अमेरिका 84(5): 1680-1694 (1988). इस ऑनलाइन ट्यूटोरियल में, ऐक्सेलरेशन ऐम्प्लitude और डिसप्लेसमेंट ऐम्प्लitude के बीच कन्वर्ज़न के बारे में बताया गया है. ↩
-
यह डेटा, Verrillo, R. के फ़िगर 8 से अनुमानित है. टी. et al.. "वाइब्रेशन और टैक्टाइल स्टिम्युलस की संवेदनशीलता." Perception & Psychophysics 6: 366-372 (1969). ↩