वर्चुअल या ऑगमेंटेड रिएलिटी वेब ऐप्लिकेशन पर काम करने वाले डेवलपर, DeviceOrientationEvent
के बारे में अच्छी तरह से जानते हैं.
अगर आपको इस बारे में जानकारी नहीं है, तो “इस इवेंट की आखिरी स्थिति: डिवाइस के ओरिएंटेशन का इस्तेमाल करना” लेख में इस बारे में बेहतर जानकारी दी गई है कि deviceorientation
इवेंट की पहचान करने वाला टूल, डिवाइस के घूमने-फिरने पर कैसे जवाब दे सकता है.
Chrome के पुराने वर्शन में, DeviceOrientationEvent
में शामिल alpha
,
beta
, और gamma
वैल्यू, धरती के कोऑर्डिनेट फ़्रेम के हिसाब से absolute
डिग्री के तौर पर दी गई थीं. डिग्री की सटीक जानकारी देने के लिए, धरती के चुंबकीय क्षेत्र का पता लगाने के लिए, डिवाइस के मैग्नेटोमीटर सेंसर का इस्तेमाल करना ज़रूरी होता है. साथ ही, आस-पास के चुंबकीय क्षेत्र में होने वाले उतार-चढ़ाव से भी रीडिंग में गड़बड़ी हो सकती है. आम तौर पर, आस-पास मौजूद चुंबक की वजह से, वेब ऐप्लिकेशन में कई DeviceOrientationEvent
रजिस्टर हो सकते हैं. भले ही, डिवाइस असल में हिल न रहा हो. वर्चुअल रिएलिटी ऐप्लिकेशन के लिए, यह मैग्नेटिक नॉइज़ बुरी खबर है. इस ऐप्लिकेशन में सिर्फ़ ऑरिएंटेशन में होने वाले बदलावों को ट्रैक किया जाता है.
क्या बदलाव होने वाले हैं?
Chrome 50 से, DeviceOrientationEvent
में शामिल डिग्री, डिफ़ॉल्ट रूप से पृथ्वी के कोऑर्डिनेट फ़्रेम के हिसाब से सटीक नहीं होती हैं. इसका मतलब है कि DeviceOrientationEvent
सिर्फ़ तब ट्रिगर होने चाहिए, जब डिवाइस के एक्सलरोमीटर और जाइरोस्कोप के कॉम्बिनेशन से, असल गतिविधि का पता चलता हो. मैग्नेटोमीटर और मैग्नेटिक फ़ील्ड में उतार-चढ़ाव की वजह से गलत रीडिंग की समस्या नहीं होती.
लेकिन मुझे अब भी डिग्री की ज़रूरत है!
अगर आपको किसी ऐसे JavaScript कोड को लिखना है जिसमें ऐब्सोलूट डिग्री का इस्तेमाल करना है, तो आपके पास इसके लिए कई विकल्प हैं. जैसे, ऑगमेंटेड रिएलिटी वेब ऐप्लिकेशन का हिस्सा, जिसे सीधे तौर पर असल दुनिया में मैप करना है. डिवाइस के मैग्नेटोमीटर पर निर्भर रहने वाला पिछला व्यवहार, नए deviceorientationabsolute
इवेंट के ज़रिए उपलब्ध है.
डेवलपर के हिसाब से, यह मौजूदा DeviceOrientationEvent
के जैसा ही है. साथ ही, यह गारंटी भी है कि absolute
प्रॉपर्टी true
पर सेट हो जाएगी.
यह पता लगाना कि कौनसी सुविधाएं काम करती हैं
जो डेवलपर डिग्री के सटीक मान का इस्तेमाल करना चाहते हैं वे सुविधा का पता लगाने की सुविधा का इस्तेमाल करके यह पता लगा सकते हैं कि वे ऐसे ब्राउज़र का इस्तेमाल कर रहे हैं या नहीं जो नए DeviceOrientationAbsoluteEvent
इवेंट के साथ काम करता है:
if ('ondeviceorientationabsolute' in window) {
// We can listen for the new deviceorientationabsolute event.
} else if ('ondeviceorientation' in window) {
// We can still listen for deviceorientation events.
// The `absolute` property of the event tells us whether
// or not the degrees are absolute.
}
अलग-अलग ब्राउज़र के साथ काम करना
DeviceOrientationEvent
में रिपोर्ट की गई वैल्यू कभी भी एक जैसी नहीं रही हैं.
iOS पर Safari और Firefox, डिग्री के लिए रिलेटिव वैल्यू का इस्तेमाल करते हैं. यह वैल्यू, Chrome 50 में लागू किए गए बदलाव से मेल खाती है. इस बदलाव से, iOS के लिए लिखे गए वेब ऐप्लिकेशन के साथ ज़्यादा संगतता बनेगी.
Firefox (iOS के अलावा अन्य प्लैटफ़ॉर्म पर), Edge, और Chrome के 50 से पहले के वर्शन, DeviceOrientationEvent
के लिए डिग्री की सटीक वैल्यू का इस्तेमाल करते हैं. ऐसा तब होता है, जब इन्हें सही सेंसर वाले डिवाइसों पर चलाया जाता है.
फ़िलहाल, Chrome 50 पहला ऐसा ब्राउज़र है जो नए DeviceOrientationAbsoluteEvent
के साथ काम करता है.
DeviceMotionEvent की मदद से, ओरिएंटेशन की बेहतर ट्रैकिंग
बोरिस स्मूस ने DeviceOrientationEvent
का इस्तेमाल करने से जुड़ी कुछ समस्याओं के बारे में बहुत अच्छी तरह से जानकारी दी है. साथ ही, DeviceMotionEvent
का इस्तेमाल करके, सेंसर फ़्यूज़न को लागू करने का तरीका भी बताया है.
ये ऐक्सीलेरोमीटर और जायरोस्कोप को लो-लेवल का ऐक्सेस देते हैं. इससे, आपके उपयोगकर्ताओं को वर्चुअल रिएलिटी का ज़्यादा सटीक अनुभव मिल सकता है.