इस सेक्शन में सेंसर ऐक्सिस, बेस सेंसर, और कंपोजिट सेंसर (गतिविधि, अटिट्यूड, अनकैलिब्रेटेड, और इंटरैक्शन) के बारे में बताया गया है.
सेंसर ऐक्सिस
कई सेंसर से मिले सेंसर इवेंट की वैल्यू, किसी खास फ़्रेम में दिखाई जाती हैं. यह फ़्रेम, डिवाइस के हिसाब से स्टैटिक होता है.
मोबाइल डिवाइस के ऐक्सिस
Sensor API सिर्फ़ स्क्रीन के सामान्य ओरिएंटेशन के हिसाब से काम करता है. जब डिवाइस की स्क्रीन का ओरिएंटेशन बदलता है, तो ऐक्सिस स्वैप नहीं होते.
वाहन के लिए ऐक्स
Android Automotive के लागू होने पर, ऐक्सिस को वाहन के बॉडी फ़्रेम के हिसाब से तय किया जाता है. वाहन रेफ़रंस फ़्रेम की शुरुआत, वाहन के पीछे के ऐक्सल के बीच में होती है. वाहन के रेफ़रंस फ़्रेम को इस तरह से दिखाया जाता है कि:
- X-ऐक्सिस दाईं ओर होता है और यह हॉरिज़ॉन्टल प्लैन पर होता है. यह वाहन के प्लैन के बिल्कुल उलट होता है.
- Y-ऐक्सिस आगे की ओर होता है और यह हॉरिज़ॉन्टल प्लैटफ़ॉर्म पर होता है.
वाहन का रेफ़रंस फ़्रेम, राइट-हैंडेड कोऑर्डिनेट सिस्टम है. इसलिए, Z-ऐक्सिस ऊपर की ओर होता है.
रेफ़रंस फ़्रेम का Z-ऐक्सिस, गुरुत्वाकर्षण के हिसाब से अलाइन होता है. इसका मतलब है कि X-ऐक्सिस और Y-ऐक्सिस, दोनों हॉरिज़ॉन्टल होते हैं. इस वजह से, ज़रूरी नहीं है कि Y-ऐक्सिस हमेशा सामने के ऐक्सल से होकर गुज़रे.
बेस सेंसर
बेस सेंसर टाइप का नाम, उन फ़िज़िकल सेंसर के नाम पर रखा जाता है जिन्हें वे दिखाते हैं. ये सेंसर, एक फ़िज़िकल सेंसर से डेटा रिले करते हैं. ये ऐसे कंपोजिट सेंसर नहीं होते जो दूसरे सेंसर से डेटा जनरेट करते हैं. बुनियादी सेंसर टाइप के उदाहरणों में ये शामिल हैं:
SENSOR_TYPE_ACCELEROMETER
SENSOR_TYPE_GYROSCOPE
SENSOR_TYPE_MAGNETOMETER
हालांकि, बेस सेंसर एक-दूसरे के बराबर नहीं होते और न ही उन्हें वहां मौजूद फ़िज़िकल सेंसर के साथ माना जाना चाहिए. बेस सेंसर से मिलने वाला डेटा, फ़िज़िकल सेंसर का रॉ आउटपुट नहीं होता, क्योंकि उसमें सुधार (जैसे, बायस और तापमान में बदलाव) लागू किए जाते हैं.
उदाहरण के लिए, इन इस्तेमाल के उदाहरणों में, बेस सेंसर की विशेषताएं, उसके अंदर मौजूद फ़िज़िकल सेंसर की विशेषताओं से अलग हो सकती हैं:
- एक जाइरोस्कोप चिप, जिसकी रेटिंग 1 डिग्री/सेकंड की बायस रेंज के लिए है.
- फ़ैक्ट्री कैलिब्रेशन, तापमान में बदलाव की वजह से होने वाली गड़बड़ी को ठीक करने की सुविधा, और गड़बड़ी को ठीक करने की सुविधा लागू होने के बाद, Android सेंसर की असल गड़बड़ी कम हो जाएगी. ऐसा हो सकता है कि गड़बड़ी 0.01 डिग्री/सेकंड से भी कम हो जाए.
- इस स्थिति में, हम कहते हैं कि Android सेंसर का पूर्वाग्रह 0.01 डिग्री/सेकंड से कम है. भले ही, उस सेंसर की डेटा शीट में 1 डिग्री/सेकंड बताया गया हो.
- 100 uW की पावर खपत वाला बैरोमीटर.
- जनरेट किए गए डेटा को चिप से एसओसी में भेजना पड़ता है. इसलिए, बैरोमीटर वाले Android सेंसर से डेटा इकट्ठा करने के लिए, असल में ज़्यादा बिजली खर्च हो सकती है. उदाहरण के लिए, 1,000 uW.
- इस स्थिति में, हम कहते हैं कि Android सेंसर की बिजली की खपत 1,000 uW है. भले ही, बैरोमीटर चिप के लीड से मेज़र की गई बिजली की खपत 100uW है.
- ऐसा मैग्नेटोमीटर जो कैलिब्रेट किए जाने पर 100uW की खपत करता है, लेकिन कैलिब्रेट करते समय, ज़्यादा बिजली की खपत करता है.
- कैलिब्रेशन के लिए, हो सकता है कि आपको गायरोस्कोप को चालू करना पड़े. इससे 5, 000 uW की खपत होती है. साथ ही, कुछ एल्गोरिदम चलाने पर 900 uW की खपत होती है.
- इस स्थिति में, हम कह सकते हैं कि (मैग्नेटोमीटर) Android सेंसर की ज़्यादा से ज़्यादा बिजली खपत 6,000 uW है.
- इस मामले में, औसत बिजली की खपत का आकलन करना ज़्यादा फ़ायदेमंद होता है. साथ ही, एचएएल की मदद से सेंसर की स्टैटिक विशेषताओं में यही जानकारी दी जाती है.
एक्सलरोमीटर
रिपोर्टिंग मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
वाइब्रेशन सेंसर के बजाय कोई दूसरा सेंसर दिखाता है
एक्सलरोमीटर सेंसर, तीन सेंसर ऐक्सिस के साथ डिवाइस के ऐक्सेलरेशन की जानकारी देता है. मेज़र किए गए ऐक्सलरेशन में, फ़िज़िकल ऐक्सलरेशन (वेग में बदलाव) और गुरुत्वाकर्षण, दोनों शामिल होते हैं. मेज़रमेंट की जानकारी, sensors_event_t.acceleration के x, y, और z फ़ील्ड में दी जाती है.
सभी वैल्यू एसआई यूनिट (m/s^2) में होती हैं. इनसे, डिवाइस के ऐक्सेलरेशन को मेज़र किया जाता है. इसके लिए, तीन सेंसर ऐक्सिस के साथ गुरुत्वाकर्षण के बल को घटाया जाता है.
यहां कुछ उदाहरण दिए गए हैं:
- फ़्री फ़ॉल में, (x, y, z) का नॉर्म 0 के करीब होना चाहिए.
- जब डिवाइस किसी टेबल पर सपाट हो और उसे बाईं ओर से दाईं ओर दबाया जाए, तो एक्स एक्सेलेरेशन की वैल्यू पॉज़िटिव होती है.
- जब डिवाइस किसी टेबल पर सपाट हो, तो z अक्ष के साथ त्वरण की वैल्यू +9.81 alo होती है. यह वैल्यू, डिवाइस के त्वरण (0 m/s^2) में गुरुत्वाकर्षण के बल (-9.81 m/s^2) को घटाने पर मिलती है.
- जब डिवाइस को टेबल पर सीधा रखा जाता है और उसे ऊपर की ओर धक्का दिया जाता है, तो ऐक्सेलरेशन की वैल्यू +9.81 से ज़्यादा होती है. यह वैल्यू, डिवाइस के ऐक्सेलरेशन (+A m/s^2) में गुरुत्वाकर्षण के बल (-9.81 m/s^2) को घटाने पर मिलती है.
रीडिंग को कैलिब्रेट करने के लिए, इनका इस्तेमाल किया जाता है:
- तापमान में बदलाव के हिसाब से कंपेनसेशन
- ऑनलाइन बायस कैलिब्रेशन
- ऑनलाइन स्केल कैलिब्रेशन
सेंसर के बंद होने पर ही, बायस और स्केल कैलिब्रेशन को अपडेट किया जाना चाहिए, ताकि स्ट्रीमिंग के दौरान वैल्यू में उतार-चढ़ाव न हो.
एक्सलरोमीटर यह भी रिपोर्ट करता है कि sensors_event_t.acceleration.status
के ज़रिए इसकी रीडिंग कितनी सटीक हो सकती है. इस फ़ील्ड की संभावित वैल्यू के बारे में ज़्यादा जानकारी के लिए,
SensorManager
के
SENSOR_STATUS_*
कॉन्स्टेंट देखें.
आस-पास का तापमान
रिपोर्टिंग मोड: बदलाव के दौरान
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
वाइब्रेशन सेंसर के बजाय कोई दूसरा सेंसर दिखाता है
यह सेंसर, कमरे के तापमान को डिग्री सेल्सियस में दिखाता है.
मैग्नेटिक फ़ील्ड सेंसर
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD)
न जगाने वाला सेंसर दिखाता है
SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD
मैग्नेटिक फ़ील्ड सेंसर (जिसे मैग्नेटोमीटर भी कहा जाता है) से, आस-पास के मैग्नेटिक फ़ील्ड की जानकारी मिलती है. इसे सेंसर के तीन ऐक्सिस के हिसाब से मेज़र किया जाता है.
मेज़रमेंट की जानकारी, sensors_event_t.magnetic
के x, y, और z फ़ील्ड में दी जाती है. साथ ही, सभी वैल्यू माइक्रो-टेस्ला (uT) में होती हैं.
मैग्नेटोमीटर यह भी बताता है कि sensors_event_t.magnetic.status
की मदद से, उसकी रीडिंग कितनी सटीक हो सकती है. इस फ़ील्ड की संभावित वैल्यू के बारे में ज़्यादा जानने के लिए,
SensorManager
के
SENSOR_STATUS_*
कॉन्सटेंट देखें.
रीडिंग को कैलिब्रेट करने के लिए, इनका इस्तेमाल किया जाता है:
- तापमान में बदलाव के हिसाब से कंपेनसेशन
- फ़ैक्ट्री (या ऑनलाइन) में सॉफ़्ट-आयरन कैलिब्रेशन
- ऑनलाइन हार्ड-आयरन कैलिब्रेशन
जाइरोस्कोप
रिपोर्टिंग-मोड: लगातार
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
वॉकी-अप सेंसर नहीं दिखाता
जाइरोस्कोप सेंसर, तीन सेंसर ऐक्सिस के आस-पास डिवाइस के रोटेशन की दर बताता है.
घड़ी की उलटी दिशा में घुमाने पर, रोटेशन की दिशा को पॉज़िटिव माना जाता है. इसका मतलब है कि अगर कोई व्यक्ति, ऑरिजिन पर मौजूद किसी डिवाइस के x, y या z ऐक्सिस पर किसी ऐसी जगह से देख रहा है जहां डिवाइस की स्थिति सही है, तो वह डिवाइस के घूमने की जानकारी को सही दिशा में घूमने के तौर पर रिपोर्ट करेगा. ऐसा तब होगा, जब डिवाइस को घड़ी की सुई के उलट दिशा में घूमते हुए देखा जा रहा हो. ध्यान दें कि यह, पोज़िटिव रोटेशन की स्टैंडर्ड मैथमैटिकल परिभाषा है. यह, ऐरोस्पेस के हिसाब से रोल की परिभाषा से मेल नहीं खाती.
मेज़रमेंट की जानकारी, sensors_event_t.gyro
के x, y, और z फ़ील्ड में दी जाती है. साथ ही, सभी वैल्यू हर सेकंड रेडियन (rad/s) में होती हैं.
रीडिंग को कैलिब्रेट करने के लिए, इनका इस्तेमाल किया जाता है:
- तापमान में बदलाव के हिसाब से कंपेनसेशन
- फ़ैक्ट्री (या ऑनलाइन) स्केल के मुआवज़े
- ऑनलाइन बायस कैलिब्रेशन (ड्रिफ़्ट हटाने के लिए)
जाइरोस्कोप से यह भी पता चलता है कि sensors_event_t.gyro.status
के ज़रिए इसकी रीडिंग कितनी सटीक हो सकती है. इस फ़ील्ड की संभावित वैल्यू के बारे में ज़्यादा जानकारी के लिए,
SensorManager
के
SENSOR_STATUS_*
कॉन्स्टेंट देखें.
जाइरोस्कोप को मैग्नेटोमीटर और एक्सीलरोमीटर के आधार पर एम्युलेट नहीं किया जा सकता, क्योंकि इससे स्थानीय स्थिरता और रिस्पॉन्सिवनेस में कमी आ सकती है. यह एक सामान्य gyroscopic चिप पर आधारित होना चाहिए.
धड़कन की दर
रिपोर्टिंग-मोड: बदलाव होने पर
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
वॉकी-अप सेंसर नहीं दिखाता
धड़कन की दर का पता लगाने वाला सेंसर, डिवाइस को छू रहे व्यक्ति की धड़कन की मौजूदा दर के बारे में जानकारी देता है.
धड़कन की मौजूदा दर, हर मिनट में धड़कनों की संख्या (बीपीएम) के हिसाब से sensors_event_t.heart_rate.bpm
में दिखती है. साथ ही, सेंसर की स्थिति sensors_event_t.heart_rate.status
में दिखती है. इस फ़ील्ड की संभावित वैल्यू के बारे में ज़्यादा जानकारी के लिए,
SensorManager
के
SENSOR_STATUS_*
कॉन्स्टेंट देखें. खास तौर पर, पहली बार चालू करने पर, अगर यह पता नहीं है कि डिवाइस, बॉडी पर है या नहीं, तो पहले इवेंट के स्टेटस फ़ील्ड को SENSOR_STATUS_UNRELIABLE
पर सेट करना होगा. इस सेंसर में बदलाव होने पर,
इवेंट तब और सिर्फ़ तब जनरेट होते हैं, जब पिछले इवेंट के बाद heart_rate.bpm
या
heart_rate.status
में बदलाव हुआ हो. इवेंट हर sampling_period
से ज़्यादा तेज़ी से जनरेट नहीं होते.
sensor_t.requiredPermission
हमेशा SENSOR_PERMISSION_BODY_SENSORS
होता है.
हल्का
रिपोर्टिंग-मोड: बदलाव होने पर
getDefaultSensor(SENSOR_TYPE_LIGHT)
न चालू करने वाला सेंसर दिखाता है
लाइट सेंसर, एसआई लक्स यूनिट में मौजूदा रोशनी की जानकारी देता है.
मेज़रमेंट को sensors_event_t.light
में रिपोर्ट किया जाता है.
निकटता
रिपोर्टिंग-मोड: बदलाव होने पर
आम तौर पर, इसे वेक-अप सेंसर के तौर पर दिखाया जाता है
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
वेक-अप सेंसर दिखाता है
प्रॉक्सिमिटी सेंसर, सेंसर से सबसे नज़दीक दिखने वाली सतह की दूरी की जानकारी देता है.
Android 4.4 तक, प्रॉक्सिमिटी सेंसर हमेशा वेक-अप सेंसर होते थे. ये सेंसर, डिवाइस के आस-पास के डिवाइसों की दूरी में बदलाव होने पर, SoC को चालू करते थे. Android 4.4 के बाद, हम सबसे पहले इस सेंसर के वेक-अप वर्शन को लागू करने की सलाह देते हैं, क्योंकि फ़ोन कॉल करते समय स्क्रीन को चालू या बंद करने के लिए इसी सेंसर का इस्तेमाल किया जाता है.
sensors_event_t.distance
में, मेज़रमेंट को सेंटीमीटर में रिपोर्ट किया गया है. ध्यान दें कि कुछ प्रॉक्सिमिटी सेंसर सिर्फ़ "पास" या "दूर" के बाइनरी मेज़रमेंट के साथ काम करते हैं.
इस मामले में, सेंसर "दूर" स्थिति में sensor_t.maxRange
की वैल्यू और "पास" स्थिति में sensor_t.maxRange
से कम वैल्यू दिखाता है.
दबाव
रिपोर्टिंग-मोड: लगातार
getDefaultSensor(SENSOR_TYPE_PRESSURE)
वॉकी-अप सेंसर नहीं दिखाता
प्रेशर सेंसर (जिसे बैरोमीटर भी कहा जाता है) से, वायुमंडल के दबाव की जानकारी हेक्टरपास्कल (hPa) में मिलती है.
रीडिंग को कैलिब्रेट करने के लिए,
- तापमान में बदलाव के हिसाब से कंपेनसेशन
- फ़ैक्ट्री बायस कैलिब्रेशन
- फ़ैक्ट्री स्केल कैलिब्रेशन
आम तौर पर, ऊंचाई में होने वाले बदलावों का अनुमान लगाने के लिए बैरोमीटर का इस्तेमाल किया जाता है. समुद्र के स्तर से ऊपर की ऊंचाई का अनुमान लगाने के लिए, समुद्र के स्तर पर दबाव (जो मौसम के हिसाब से बदलता रहता है) का इस्तेमाल रेफ़रंस के तौर पर किया जाना चाहिए.
रिलेटिव ह्यूमिडिटी
रिपोर्टिंग-मोड: बदलाव होने पर
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
वाइब्रेशन सेंसर के बजाय कोई दूसरा सेंसर दिखाता है
रिलेटिव ह्यूमिडिटी सेंसर, आस-पास की हवा की नमी को मापता है और उससे मिली वैल्यू को प्रतिशत में दिखाता है.
कंपोज़िट सेंसर के टाइप
कॉम्पोज़िट सेंसर, एक या एक से ज़्यादा फ़िज़िकल सेंसर से मिले डेटा को प्रोसेस करके और/या फ़्यूज़ करके डेटा जनरेट करता है. (जो सेंसर बेस सेंसर नहीं होता उसे कंपोज़िट सेंसर कहा जाता है.) कॉम्पोज़िट सेंसर के उदाहरणों में ये शामिल हैं:
- कदमों की गिनती करने वाला डिवाइस और ज़रूरी गतिविधि. आम तौर पर, ये ऐक्सीलेरोमीटर पर आधारित होते हैं. हालांकि, अगर बैटरी खपत और सटीक जानकारी मिलती है, तो इन्हें अन्य सेंसर पर भी आधारित किया जा सकता है.
- गेम रोटेशन वेक्टर, जो एक्सलरोमीटर और जाइरोस्कोप पर आधारित होता है.
- ऐसा जाइरोस्कोप जिसे कैलिब्रेट नहीं किया गया है. यह जाइरोस्कोप बेस सेंसर से मिलता-जुलता है. हालांकि, इसमें मेज़रमेंट में सुधार करने के बजाय, बायस कैलिब्रेशन की जानकारी अलग से दी जाती है.
बेस सेंसर की तरह ही, कॉम्पोज़िट सेंसर की विशेषताएं उनके आखिरी डेटा की विशेषताओं से मिलती हैं. उदाहरण के लिए, गेम रोटेशन वेक्टर की पावर की खपत, शायद एक्सलरोमीटर चिप, जाइरोस्कोप चिप, डेटा को प्रोसेस करने वाली चिप, और डेटा ट्रांसफ़र करने वाली बसों की कुल खपत के बराबर है. एक और उदाहरण के तौर पर, गेम के रोटेशन वेक्टर का ड्रिफ़्ट, कैलिब्रेशन एल्गोरिदम की क्वालिटी के साथ-साथ फ़िज़िकल सेंसर की विशेषताओं पर भी निर्भर करता है.
यहां दी गई टेबल में, उपलब्ध कंपोजिट सेंसर टाइप की सूची दी गई है. हर कंपोज़िट सेंसर, एक या कई फ़िज़िकल सेंसर के डेटा का इस्तेमाल करता है. नतीजों का अनुमान लगाने के लिए, अन्य फ़िज़िकल सेंसर का इस्तेमाल न करें. इससे उपयोगकर्ता को खराब अनुभव मिलता है.
सेंसर का टाइप | कैटगरी | डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर | रिपोर्टिंग मोड |
---|---|---|---|
ऐटिट्यूड |
एक्सलरोमीटर, जाइरोस्कोप, मैग्नेटोमीटर का इस्तेमाल नहीं करना चाहिए |
निरंतर |
|
नज़रिया |
एक्सलरोमीटर, मैग्नेटोमीटर, को जाइरोस्कोप का इस्तेमाल नहीं करना चाहिए |
निरंतर |
|
एक नज़र में जानकारी देखने की सुविधा | इंटरैक्शन |
तय नहीं |
एक शॉट |
ऐटिट्यूड |
एक्सलरोमीटर, जाइरोस्कोप |
निरंतर |
|
अनकैलिब्रेटेड |
जाइरोस्कोप |
निरंतर |
|
गतिविधि |
एक्सलरोमीटर, जाइरोस्कोप (अगर मौजूद है) या मैग्नेटोमीटर (अगर जाइरो मौजूद नहीं है) |
निरंतर |
|
कैलिब्रेट नहीं किया गया |
मैग्नेटोमीटर |
निरंतर |
|
ओरिएंटेशन (अब काम नहीं करता) |
ऐटिट्यूड |
एक्सलरोमीटर, मैग्नेटोमीटर, जाइरोस्कोप (अगर मौजूद हो) |
निरंतर |
इंटरैक्शन |
तय नहीं |
एक शॉट |
|
ऐटिट्यूड |
एक्सलरोमीटर, मैग्नेटोमीटर, जाइरोस्कोप |
निरंतर |
|
गतिविधि |
एक्सलरोमीटर (या कोई दूसरा सेंसर, बशर्ते उसकी खपत बहुत कम हो) |
एक शॉट |
|
गतिविधि |
एक्सलरोमीटर |
बदलाव होने पर |
|
गतिविधि |
एक्सलरोमीटर |
स्पेशल |
|
गतिविधि |
एक्सलरोमीटर |
स्पेशल |
|
इंटरैक्शन |
तय नहीं |
वन-शॉट |
= लो पावर सेंसर
गतिविधि के कॉम्पोज़िट सेंसर
लीनियर एक्सेलरेटर
शामिल फ़िज़िकल सेंसर: एक्सलरोमीटर और (अगर मौजूद है) जाइरोस्कोप (या जाइरोस्कोप मौजूद न होने पर मैग्नेटोमीटर)
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
वॉकी-अप सेंसर नहीं दिखाता
लीनियर ऐक्सेलरेशन सेंसर, सेंसर फ़्रेम में डिवाइस के लीनियर ऐक्सेलरेशन की जानकारी देता है. इसमें गुरुत्वाकर्षण शामिल नहीं होता.
आउटपुट सैद्धांतिक रूप से होता है: एक्सलरोमीटर के आउटपुट से गुरुत्व सेंसर के आउटपुट को घटा दिया जाता है. यह sensors_event_t.acceleration
के x, y, और z
फ़ील्ड में m/s^2 में रिपोर्ट किया जाता है.
डिवाइस के हिलने-डुलने पर, सभी ऐक्सिस पर रीडिंग 0 के आस-पास होनी चाहिए.
अगर डिवाइस में जाइरोस्कोप है, तो लीनियर ऐक्सेलरेशन सेंसर को इनपुट के तौर पर जाइरोस्कोप और एक्सलरोमीटर का इस्तेमाल करना चाहिए.
अगर डिवाइस में जाइरोस्कोप नहीं है, तो लीनियर ऐक्सेलरेशन सेंसर को इनपुट के तौर पर एक्सलरोमीटर और मैग्नेटोमीटर का इस्तेमाल करना होगा.
ज़्यादा गति
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर (या कम पावर वाला कोई अन्य सेंसर)
रिपोर्टिंग मोड: वन-शॉट
कम बैटरी
इस सेंसर का सिर्फ़ वेक-अप वर्शन लागू करें.
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
वेक-अप सेंसर दिखाता है
किसी अहम हलचल का पता चलने पर, एक अहम मोशन डिटेक्टर ट्रिगर होता है. इसमें ऐसी कोई गतिविधि होती है जिससे उपयोगकर्ता की जगह में बदलाव हो सकता है.
ऐसी अहम हलचल के उदाहरण यहां दिए गए हैं:
- पैदल या साइकल से
- चलती हुई कार, कोच या ट्रेन में बैठा व्यक्ति
ऐसी स्थितियों के उदाहरण जिनमें ज़्यादा मोशन ट्रिगर नहीं होता:
- फ़ोन पॉकेट में है और व्यक्ति हिल नहीं रहा है
- फ़ोन किसी टेबल पर रखा हो और आस-पास के ट्रैफ़िक या वॉशिंग मशीन की वजह से टेबल थोड़ा हिल रही हो
हाई लेवल पर, जगह की जानकारी का पता लगाने के लिए बिजली की खपत कम करने के लिए, बेहतर मोशन डिटेक्टर का इस्तेमाल किया जाता है. जब जगह की जानकारी देने वाले एल्गोरिदम को पता चलता है कि डिवाइस एक ही जगह पर है, तो वे कम बैटरी वाले मोड पर स्विच कर सकते हैं. इस मोड में, उपयोगकर्ता की जगह बदलने पर डिवाइस को चालू करने के लिए, ज़्यादा गति पर निर्भर किया जाता है.
इस सेंसर की बैटरी कम होनी चाहिए. यह बैटरी खर्च करने के लिए एक समझौता करता है, जिससे कुछ गलत नतीजे मिल सकते हैं. ऐसा कुछ वजहों से किया जाता है:
- इस सेंसर का मकसद, बैटरी बचाना है.
- जब उपयोगकर्ता की जगह बदलने की कोई गतिविधि नहीं होती है, तब इवेंट ट्रिगर करना (गलत पॉज़िटिव) बिजली के मामले में महंगा होता है. इसलिए, इससे बचना चाहिए.
- जब उपयोगकर्ता किसी जगह से दूसरी जगह जा रहा हो, तब इवेंट ट्रिगर न होना (गलत निगेटिव) तब तक स्वीकार किया जा सकता है, जब तक ऐसा बार-बार न हो. अगर उपयोगकर्ता 10 सेकंड से चल रहा है, तो इन 10 सेकंड के अंदर किसी इवेंट को ट्रिगर करना सही नहीं है.
हर सेंसर इवेंट, sensors_event_t.data[0]
में 1
की रिपोर्ट करता है.
कदमों की गिनती करने वाला डिवाइस
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर (+ कम बिजली होने पर, शायद अन्य भी)
रिपोर्टिंग-मोड: खास (हर चरण के लिए एक इवेंट)
बैटरी कम चार्ज है
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
वॉकी-अप सेंसर नहीं दिखाता
जब भी उपयोगकर्ता कोई कदम उठाता है, तब कदम का पता लगाने वाला डिवाइस एक इवेंट जनरेट करता है.
इवेंट sensors_event_t.timestamp
का टाइमस्टैंप,
उस समय से जुड़ा होता है जब पैर ज़मीन से टकराता है. इससे, ऐक्सेलरेशन में काफ़ी बदलाव होता है.
कदमों की गिनती करने वाले डिवाइस की तुलना में, कदमों का पता लगाने वाले डिवाइस की रिस्पॉन्स टाइम कम होना चाहिए (दो सेकंड से कम). स्टेप डिटेक्टर और स्टेप काउंटर, दोनों यह पता लगाते हैं कि उपयोगकर्ता कब चल रहा है, चल रहा है, और सीढ़ियों से ऊपर जा रहा है. ये सूचनाएं तब ट्रिगर नहीं होनी चाहिए, जब उपयोगकर्ता साइकल चला रहा हो, गाड़ी चला रहा हो या किसी अन्य वाहन में हो.
यह सेंसर कम पावर वाला होना चाहिए. इसका मतलब है कि अगर हार्डवेयर में, कदमों का पता लगाने की सुविधा काम नहीं करती, तो इस सेंसर को तय नहीं किया जाना चाहिए. खास तौर पर, जब चरण का पता लगाने वाला डिवाइस चालू हो और एक्सलरोमीटर चालू न हो, तो सिर्फ़ चरण से रुकावटें ट्रिगर होनी चाहिए, न कि एक्सलरोमीटर की हर रीडिंग से.
sampling_period_ns
से, कदमों की गिनती करने वाले डिवाइसों पर कोई असर नहीं पड़ता.
हर सेंसर इवेंट, sensors_event_t.data[0]
में 1
की रिपोर्ट करता है.
कदमों की गिनती करने वाला काउंटर
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर (+ कम बिजली होने पर, शायद अन्य भी)
रिपोर्टिंग मोड: बदलाव के बाद
कम पावर
getDefaultSensor(SENSOR_TYPE_STEP_COUNTER)
वाइब्रेशन सेंसर के बजाय कोई दूसरा सेंसर दिखाता है
गतिविधि काउंटर, चालू होने के बाद से उपयोगकर्ता के चले गए कदमों की संख्या दिखाता है.
sensors_event_t.step_counter
में यह मेज़रमेंट, uint64_t
के तौर पर रिपोर्ट किया जाता है.
सिस्टम को फिर से चालू करने पर, इसे शून्य पर रीसेट किया जाता है.
इवेंट का टाइमस्टैंप उस समय पर सेट होता है जब उस इवेंट के लिए आखिरी चरण पूरा किया गया था.
कदम की जानकारी देने वाले सेंसर टाइप देखें, ताकि आपको यह पता चल सके कि आपने कितनी देर पहले कदम उठाया था.
कदमों की गिनती करने वाले डिवाइस की तुलना में, कदमों की गिनती करने वाले डिवाइस में ज़्यादा देरी हो सकती है (ज़्यादा से ज़्यादा 10 सेकंड). इस वजह से, इस सेंसर की सटीकता बहुत ज़्यादा होती है. एक दिन के लिए, गतिविधि का डेटा इकट्ठा करने के बाद, चरण की गिनती, असल चरण की गिनती के 10% के अंदर होनी चाहिए. चरण का पता लगाने वाला डिवाइस और चरण की गिनती करने वाला डिवाइस, दोनों ही यह पता लगाते हैं कि उपयोगकर्ता पैदल चल रहा है, दौड़ रहा है, और सीढ़ियां चढ़ रहा है. ये तब ट्रिगर नहीं होने चाहिए, जब उपयोगकर्ता साइकल चला रहा हो, गाड़ी चला रहा हो या किसी अन्य वाहन में हो.
हार्डवेयर को यह पक्का करना होगा कि कदमों की संख्या कभी भी ओवरफ़्लो न हो. हार्डवेयर के इंटरनल काउंटर का कम से कम साइज़ 16 बिट होना चाहिए. जल्द ही ओवरफ़्लो होने पर (ज़्यादा से ज़्यादा हर ~2^16 चरणों में), SoC को चालू किया जा सकता है, ताकि ड्राइवर काउंटर का रखरखाव कर सके.
इंटरैक्शन में बताया गया है कि जब यह सेंसर काम करता है, तो यह किसी भी दूसरे सेंसर को परेशान नहीं करता. खास तौर पर, ऐक्सीलेरोमीटर को, जो शायद इस्तेमाल में हो.
अगर किसी डिवाइस पर, ये काम करने के तरीके काम नहीं करते, तो एचएएल से इस तरह के सेंसर की जानकारी नहीं भेजी जानी चाहिए. इसका मतलब है कि एचएएल में इस सेंसर को "इम्यूलेट" नहीं किया जा सकता.
यह सेंसर कम पावर वाला होना चाहिए. इसका मतलब है कि अगर कदमों का पता लगाने की सुविधा, हार्डवेयर में काम नहीं करती है, तो इस सेंसर को तय नहीं किया जाना चाहिए. खास तौर पर, जब चरण काउंटर चालू हो और एक्सलरोमीटर चालू न हो, तो सिर्फ़ चरण ही इंटरप्ट को ट्रिगर करने चाहिए (न कि एक्सलरोमीटर डेटा).
झुकाव का पता लगाने वाला डिवाइस
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर (+ कम बिजली होने पर, शायद अन्य भी)
रिपोर्टिंग-मोड: खास
कम बैटरी वाले डिवाइसों के लिए
इस सेंसर का सिर्फ़ वेक-अप वर्शन लागू करें.
getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR)
वॉकी-अप सेंसर दिखाता है
जब भी कोई झुकाव इवेंट का पता चलता है, तो झुकाव का पता लगाने वाला डिवाइस एक इवेंट जनरेट करता है.
टिल्ट इवेंट का मतलब है कि दो सेकंड की विंडो में, औसत गुरुत्वाकर्षण में कम से कम 35 डिग्री का बदलाव होना चाहिए. ऐसा सेंसर से मिलने वाले आखिरी इवेंट या चालू होने के बाद से होता है. यहां एल्गोरिदम दिया गया है:
reference_estimated_gravity
= चालू होने के बाद पहले सेकंड में, ऐक्सीलेरोमीटर से मिले डेटा का औसत या आखिरी टिल्ट इवेंट जनरेट होने के समय, गुरुत्वाकर्षण का अनुमानित डेटा.current_estimated_gravity
= पिछले दो सेकंड में एक्सलरोमीटर मेज़रमेंट का औसत.- तब ट्रिगर होता है, जब
angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees
फ़ोन के ओरिएंटेशन में बदलाव किए बिना, ज़्यादा तेज़ी से आगे बढ़ने पर,
टिल इवेंट ट्रिगर नहीं होना चाहिए. उदाहरण के लिए, कार चलाते समय अचानक मुड़ने या तेज़ी से आगे बढ़ने पर, झुकाव का इवेंट ट्रिगर नहीं होना चाहिए. भले ही, औसत तेज़ी का ऐंगल 35 डिग्री से ज़्यादा हो.
आम तौर पर, इस सेंसर को
सिर्फ़ एक्सीलरोमीटर की मदद से लगाया जाता है. अगर अन्य सेंसर से बैटरी खर्च में काफ़ी बढ़ोतरी नहीं होती है, तो उनका इस्तेमाल भी किया जा सकता है. यह कम पावर वाला सेंसर है, जिसकी मदद से SoC को निलंबित मोड में भेजा जा सकता है. एचएएल में इस सेंसर को एमुलेट न करें. हर सेंसर इवेंट, sensors_event_t.data[0]
में 1
की रिपोर्ट करता है.
ऐटीट्यूड कंपोज़िट सेंसर
रोटेशन वेक्टर
शामिल फ़िज़िकल सेंसर: एक्सलरोमीटर, मैग्नेटोमीटर, और जाइरोस्कोप
रिपोर्टिंग-मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR)
न चालू करने वाला सेंसर दिखाता है
रोटेशन वेक्टर सेंसर, पूर्व-उत्तर-ऊपर निर्देशांक फ़्रेम के सापेक्ष डिवाइस के ओरिएंटेशन की रिपोर्ट करता है. आम तौर पर, यह जानकारी ऐक्सलरोमीटर, जाइरोस्कोप, और मैग्नेटोमीटर की रीडिंग को इंटिग्रेट करके मिलती है. पूर्व-उत्तर-ऊपर निर्देशांक प्रणाली को डायरेक्ट ऑर्थोनॉर्मल बेसिस के तौर पर परिभाषित किया गया है, जहां:
- X, पूर्व की ओर है और ज़मीन से टैंगेंशियल है.
- Y, उत्तर की ओर है और यह ज़मीन से टैंगेंशियल है.
- Z, आसमान की ओर इशारा करता है और यह ज़मीन के लंबवत होता है.
फ़ोन के ओरिएंटेशन को घुमाने की ज़रूरत होती है, ताकि पूर्व-उत्तर-ऊपर के निर्देशांक को फ़ोन के निर्देशांक के साथ अलाइन किया जा सके. इसका मतलब है कि वर्ल्ड फ़्रेम (X,Y,Z) में रोटेशन लागू करने से,उन्हें फ़ोन के निर्देशांक (x,y,z) के साथ अलाइन किया जाएगा.
घुमाव को इस तरह देखा जा सकता है कि फ़ोन को अक्ष rot_axis
के चारों ओर, ऐंगल थीटा के हिसाब से घुमाया गया है, ताकि डिवाइस के रेफ़रंस (पूरब-उत्तर-ऊपर अलाइन) ओरिएंटेशन से, डिवाइस के मौजूदा ओरिएंटेशन पर पहुंचा जा सके. घुमाव को यूनिट क्वार्टरनियन के चार यूनिट-लेस
x, y, z, w कॉम्पोनेंट के तौर पर एन्कोड किया जाता है:
sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
sensors_event_t.data[3] = cos(theta/2)
कहाँ:
rot_axis
के x, y, और z फ़ील्ड, रोटेशन ऐक्सिस को दिखाने वाले इकाई लंबाई वाले वेक्टर के पूर्व-उत्तर-ऊपर निर्देशांक हैंtheta
, रोटेशन ऐंगल है
क्वाटर्नियन, यूनिट क्वाटर्नियन है: यह वैल्यू 1
में होना चाहिए.
ऐसा न करने पर, क्लाइंट का व्यवहार अनियमित हो जाएगा.
इसके अलावा, यह सेंसर हेडिंग की सटीक जानकारी का अनुमान भी देता है:
sensors_event_t.data[4] = estimated_accuracy
(रेडियन में)
हेडिंग में गड़बड़ी का प्रतिशत 95% समय के लिए estimated_accuracy
से कम होना चाहिए. इस सेंसर को ओरिएंटेशन में बदलाव के मुख्य इनपुट के तौर पर, जियोस्कोप का इस्तेमाल करना चाहिए.
जाइरोस्कोप ड्रिफ़्ट बनाने के लिए, यह सेंसर एक्सलरोमीटर और मैग्नेटोमीटर इनपुट का भी इस्तेमाल करता है. इसे सिर्फ़ एक्सलरोमीटर और मैग्नेटोमीटर का इस्तेमाल करके लागू नहीं किया जा सकता.
गेम के रोटेशन का वेक्टर
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर और जाइरोस्कोप (मैग्नेटोमीटर नहीं)
रिपोर्टिंग-मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
वॉकी-अप सेंसर नहीं दिखाता
गेम रोटेशन वेक्टर सेंसर, रोटेशन वेक्टर सेंसर से मिलता-जुलता है. हालांकि, इसमें भू-चुंबकीय क्षेत्र का इस्तेमाल नहीं किया जाता. इसलिए, Y ऐक्सिस उत्तर की ओर नहीं, बल्कि किसी दूसरे रेफ़रंस की ओर इशारा करता है. उस रेफ़रंस को उतना ही डिफ़्रैक्शन करने की अनुमति है जितना कि जीरोस्कोप, Z ऐक्सिस के आस-पास डिफ़्रैक्शन करता है.
sensors_event_t.data[0-3]
को सेट करने का तरीका जानने के लिए, रोटेशन वेक्टर सेंसर देखें. यह सेंसर,
हेडिंग के सटीक होने का अनुमान नहीं लगाता:
sensors_event_t.data[4]
रिज़र्व है और इसे 0
पर सेट किया जाना चाहिए.
आम तौर पर, अगर किसी फ़ोन को घुमाया जाता है और फिर उसे असल दुनिया के उसी ओरटेशन पर वापस लाया जाता है, तो गेम में घुमाव का वेक्टर भी वही होना चाहिए.
यह सेंसर, जाइरोस्कोप और एक्सलरोमीटर पर आधारित होना चाहिए. यह इनपुट के तौर पर मैग्नेटोमीटर का इस्तेमाल नहीं कर सकता. इसके अलावा, यह जाइरोस्कोप के पूर्वाग्रह का अनुमान लगाकर, इनपुट के तौर पर मैग्नेटोमीटर का इस्तेमाल करता है.
Gravity
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: एक्सलरोमीटर और (अगर मौजूद हो) जाइरोस्कोप (अगर जाइरोस्कोप मौजूद न हो, तो मैग्नेटोमीटर)
रिपोर्टिंग-मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_GRAVITY)
वाइब्रेशन सेंसर के बजाय कोई दूसरा सेंसर दिखाता है
गुरुत्वाकर्षण सेंसर, डिवाइस के निर्देशांक में गुरुत्वाकर्षण की दिशा और तीव्रता की जानकारी देता है.
गुरुत्वाकर्षण वेक्टर कॉम्पोनेंट को sensors_event_t.acceleration
के x, y, और z
फ़ील्ड में m/s^2 में रिपोर्ट किया जाता है.
जब डिवाइस गतिहीन हो, तो गुरुत्वाकर्षण सेंसर का आउटपुट, एक्सलरोमीटर के आउटपुट से मेल खाना चाहिए. पृथ्वी पर, गुरुत्वाकर्षण का मान 9.8 m/s^2 होता है.
अगर डिवाइस में जाइरोस्कोप है, तो गुरुत्वाकर्षण सेंसर को इनपुट के तौर पर, जाइरोस्कोप और एक्सलरोमीटर का इस्तेमाल करना चाहिए.
अगर डिवाइस में जाइरोस्कोप नहीं है, तो गुरुत्वाकर्षण सेंसर को इनपुट के तौर पर एक्सलरोमीटर और मैग्नेटोमीटर का इस्तेमाल करना चाहिए.
जियोमैग्नेटिक रोटेशन वेक्टर
अंदर मौजूद भौतिक सेंसर: एक्सलरोमीटर और मैग्नेटोमीटर (जाइरोस्कोप नहीं)
रिपोर्टिंग-मोड: कंटिन्यूअस
कम बैटरी वाले डिवाइसों के लिए
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
वॉकी-अप सेंसर नहीं दिखाता
जियोमैग्नेटिक रोटेशन वेक्टर, रोटेशन वेक्टर सेंसर से मिलता-जुलता है. हालांकि, इसमें मैग्नेटोमीटर का इस्तेमाल किया जाता है, न कि जाइरोस्कोप का.
यह सेंसर, मैग्नेटोमीटर पर आधारित होना चाहिए. इसे एक जियोस्कोप का इस्तेमाल करके लागू नहीं किया जा सकता. साथ ही, इस सेंसर में जियोस्कोप इनपुट का इस्तेमाल नहीं किया जा सकता.
sensors_event_t.data[0-4]
को सेट करने के तरीके के बारे में जानकारी पाने के लिए, रोटेशन वेक्टर सेंसर देखें.
रोटेशन वेक्टर सेंसर की तरह ही, हेडिंग से जुड़ी गड़बड़ी 95% बार
अनुमानित सटीक होने की संख्या (sensors_event_t.data[4]
) से कम होनी चाहिए.
इस सेंसर की बैटरी कम होनी चाहिए. इसलिए, इसे हार्डवेयर में लगाया जाना चाहिए.
ओरिएंटेशन (अब उपलब्ध नहीं है)
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: एक्सलरोमीटर, मैग्नेटोमीटर, और (अगर मौजूद हो) जाइरोस्कोप
रिपोर्टिंग-मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_ORIENTATION)
वॉकी-अप सेंसर नहीं दिखाता
ध्यान दें: यह पुराना सेंसर टाइप है, जिसे Android SDK टूल में बंद कर दिया गया है. इसे रोटेशन वेक्टर सेंसर से बदल दिया गया है, जो ज़्यादा साफ़ तौर पर बताया गया है. जब भी हो सके, ओरिएंटेशन सेंसर के बजाय रोटेशन वेक्टर सेंसर का इस्तेमाल करें.
ओरिएंटेशन सेंसर, डिवाइस के अटिट्यूड की जानकारी देता है. माप को डिग्री में दिखाया जाता है. ये डिग्री, sensors_event_t.orientation
के x, y, और z फ़ील्ड में होती हैं:
sensors_event_t.orientation.x
: अज़ीमुथ, यह Z ऐक्सिस (0<=azimuth<360
) के आस-पास, चुंबकीय उत्तर दिशा और Y ऐक्सिस के बीच का कोण होता है. 0=उत्तर, 90=पूर्व, 180=दक्षिण, 270=पश्चिम.sensors_event_t.orientation.y
: पिच, X ऐक्सिस के चारों ओर घुमाव (-180<=pitch<=180
). जब Z ऐक्सिस, Y ऐक्सिस की ओर बढ़ता है, तो इसकी वैल्यू पॉज़िटिव होती है.sensors_event_t.orientation.z
: रोल, Y ऐक्सिस के चारों ओर घुमाना (-90<=roll<=90
), जब X ऐक्सिस, Z ऐक्सिस की ओर बढ़ता है, तो पॉज़िटिव वैल्यू के साथ.
कृपया ध्यान दें कि पुरानी वजहों से, रोल ऐंगल, घड़ी की सुई के घूमने की दिशा में बढ़ता है. (गणित के हिसाब से, यह घड़ी की सुई के उलट दिशा में,
यह परिभाषा, एविएशन में इस्तेमाल होने वाले याव, पिच, और रोल से अलग है. एविएशन में, X ऐक्सिस, प्लेन के लंबे हिस्से (पूंछ से नाक तक) के साथ होता है.
स्क्रीन की दिशा बताने वाला सेंसर यह भी रिपोर्ट करता है कि sensors_event_t.orientation.status
के ज़रिए इसकी रीडिंग मिलने की उम्मीद
कितनी सटीक है. इस फ़ील्ड की संभावित वैल्यू के बारे में ज़्यादा जानकारी के लिए,
SensorManager
के
SENSOR_STATUS_*
कॉन्स्टेंट देखें.
कैलिब्रेट नहीं किए गए सेंसर
कैलिब्रेट नहीं किए गए सेंसर, ज़्यादा रॉ नतीजे देते हैं और इनमें कुछ गड़बड़ी हो सकती है. हालांकि, कैलिब्रेशन की मदद से किए गए सुधारों की वजह से, इनमें "जंप" भी कम होते हैं. कुछ ऐप्लिकेशन, कैलिब्रेट नहीं किए गए इन रिज़ल्ट को ज़्यादा बेहतर और भरोसेमंद मान सकते हैं. उदाहरण के लिए, अगर कोई ऐप्लिकेशन खुद से सेंसर फ़्यूज़न करने की कोशिश कर रहा है, तो कैलिब्रेशन की सुविधा जोड़ने से नतीजों में गड़बड़ी हो सकती है.
एक्सलरोमीटर अनकैलिब्रेटेड
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
न चालू करने वाला सेंसर दिखाता है
अनकैलिब्रेटेड एक्सलरोमीटर सेंसर, पूर्वाग्रह के अनुमान के साथ
बिना किसी पूर्वाग्रह के सुधार (फ़ैक्ट्री बायस
और तापमान की मुआवज़े की सुविधा लागू की जाती है) के साथ,
तीन सेंसर ऐक्सिस से डिवाइस की रफ़्तार की जानकारी देता है.
सभी वैल्यू एसआई यूनिट (m/s^2) में होती हैं और इन्हें sensors_event_t.uncalibrated_accelerometer
के फ़ील्ड में रिपोर्ट किया जाता है:
x_uncalib
: एक्स ऐक्सिस के साथ, ऐक्सेलरेशन (बिआस कम्पेंसेशन के बिना)y_uncalib
: Y ऐक्सिस के साथ, ऐक्सेलरेशन (बिआस कम्पेंसेशन के बिना)z_uncalib
: Z ऐक्सिस पर एक्सेलरेटर (बिना किसी पूर्वाग्रह के मुआवज़े के)x_bias
: X-ऐक्सिस के साथ अनुमानित बायसy_bias
: Y ऐक्सिस के साथ अनुमानित बायसz_bias
: ज़ेड ऐक्सिस के साथ अनुमानित बायस
जाइरोस्कोप को कैलिब्रेट नहीं किया गया है
बुनियादी फ़िज़िकल सेंसर: जाइरोस्कोप
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED)
वॉकी-अप सेंसर नहीं दिखाता
बिना कैलिब्रेट किए गए जाइरोस्कोप से, सेंसर के अक्षों के चारों ओर घूमने की दर का पता चलता है. साथ ही, इसमें पूर्वाग्रह का अनुमान और पूर्वाग्रह की भरपाई करने की सुविधा भी शामिल होती है. सभी
वैल्यू रेडियन/सेकंड में होती हैं और इन्हें sensors_event_t.uncalibrated_gyro
के फ़ील्ड में रिपोर्ट किया जाता है:
x_uncalib
: X ऐक्सिस के आस-पास ऐंगुलर स्पीड (ड्रिफ़्ट कम्पेंसेशन के बिना)y_uncalib
: Y ऐक्सिस के आस-पास ऐंगुलर स्पीड (ड्रिफ़्ट कम्पेंसेशन के बिना)z_uncalib
: Z ऐक्सिस के आस-पास ऐंगुलर स्पीड (ड्रिफ़्ट कम्पेंसेशन के बिना)x_bias
: X ऐक्सिस के आस-पास अनुमानित ड्रिफ़्टy_bias
: Y ऐक्सिस के आस-पास अनुमानित ड्रिफ़्टz_bias
: ज़ेड ऐक्सिस के आस-पास अनुमानित ड्रिफ़्ट
सिद्धांत रूप से, कैलिब्रेट नहीं की गई मेज़रमेंट, कैलिब्रेट की गई
मेज़रमेंट और पूर्वाग्रह के अनुमान का योग होती है: _uncalibrated = _calibrated + _bias
.
बायस का अनुमान बदलते ही, x_bias
,
y_bias
, और z_bias
की वैल्यू में उछाल आ सकता है. हालांकि, बाकी समय ये वैल्यू स्थिर रहती हैं.
इस्तेमाल किए गए निर्देशांक सिस्टम के बारे में जानकारी पाने के लिए, जाइरोस्कोप सेंसर की परिभाषा देखें.
मापों पर फ़ैक्ट्री कैलिब्रेशन और तापमान में बदलाव की वजह से होने वाली गड़बड़ी को ठीक करने की सुविधा लागू की जानी चाहिए. साथ ही, जाइरोस्कोप ड्रिफ़्ट अनुमान को लागू किया जाना चाहिए, ताकि
x_bias
,
y_bias
, और z_bias
में उचित अनुमान रिपोर्ट किए जा सकें. अगर लागू करने की प्रोसेस से ड्रिफ़्ट का अनुमान नहीं लगाया जा सकता, तो इस सेंसर को लागू नहीं किया जाना चाहिए.
अगर यह सेंसर मौजूद है, तो उससे जुड़ा घिरौंसे सेंसर भी मौजूद होना चाहिए. साथ ही, दोनों सेंसर में एक ही sensor_t.name
और sensor_t.vendor
वैल्यू होनी चाहिए.
मैग्नेटिक फ़ील्ड को कैलिब्रेट नहीं किया गया है
बुनियादी फ़िज़िकल सेंसर: मैग्नेटोमीटर
रिपोर्टिंग-मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED)
वॉकी-अप सेंसर नहीं दिखाता
कैलिब्रेट नहीं किया गया मैग्नेटिक फ़ील्ड सेंसर, ऐंबियंट मैग्नेटिक फ़ील्ड के साथ-साथ, हार्ड आयरन कैलिब्रेशन के अनुमान की जानकारी देता है. सभी वैल्यू माइक्रो-टेंसल (uT) में होती हैं और इन्हें sensors_event_t.uncalibrated_magnetic
के फ़ील्ड में रिपोर्ट किया जाता है:
x_uncalib
: X ऐक्सिस के साथ-साथ मैग्नेटिक फ़ील्ड (हार्ड-आयरन कंपेनसेशन के बिना)y_uncalib
: Y ऐक्सिस पर मैग्नेटिक फ़ील्ड (हार्ड आयरन मुआवज़ा के बिना)z_uncalib
: Z ऐक्सिस पर मैग्नेटिक फ़ील्ड (हार्ड आयरन मुआवज़ा के बिना)x_bias
: X ऐक्सिस के साथ अनुमानित हार्ड-आयरन बायसy_bias
: Y ऐक्सिस पर हार्ड-आयरन पूर्वाग्रहz_bias
: ज़ेड ऐक्सिस के साथ अनुमानित हार्ड-आयरन बायस
सैद्धांतिक तौर पर, कैलिब्रेट नहीं किए गए मेज़रमेंट, कैलिब्रेट किए गए मेज़रमेंट और बायस के अनुमान का कुल योग होता है: _uncalibrated = _calibrated + _bias
.
कैलिब्रेट नहीं किए गए मैग्नेटोमीटर की मदद से, बेहतर एल्गोरिदम,
हार्ड आयरन के गलत अनुमान को मैनेज कर सकते हैं. हार्ड-आयरन में बदलाव होने के तुरंत बाद,
x_bias
, y_bias
, और z_bias
की वैल्यू में बढ़ोतरी हो सकती है. इसके बाद, ये वैल्यू बाकी समय के लिए स्थिर रहती हैं.
मापों पर सॉफ़्ट-आयरन कैलिब्रेशन और तापमान में बदलाव के लिए, साथ ही, सटीक अनुमान लगाने की सुविधा को लागू करना ज़रूरी है, ताकि x_bias
,
y_bias
, और
z_bias
में सही अनुमान दिए जा सकें. अगर लागू करने के दौरान, पूर्वाग्रह का अनुमान नहीं लगाया जा सकता,
तो इस सेंसर को लागू नहीं किया जाना चाहिए.
अगर यह सेंसर मौजूद है, तो उससे जुड़ा मैग्नेटिक फ़ील्ड सेंसर भी मौजूद होना चाहिए. साथ ही, दोनों सेंसर की sensor_t.name
और
sensor_t.vendor
वैल्यू एक ही होनी चाहिए.
हिंज ऐंगल
रिपोर्टिंग-मोड: बदलाव होने पर
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
जागने के लिए सेंसर दिखाता है
हिंज ऐंगल सेंसर, डिवाइस के दो इंटिग्रल हिस्सों के बीच के कोण को डिग्री में मापता है. इस सेंसर टाइप से मापे गए कब्ज़ों की हलचल से, उपयोगकर्ता के डिवाइस से इंटरैक्ट करने के तरीकों में बदलाव होने की उम्मीद होती है. जैसे, डिसप्ले को अनफ़ोल्ड करके या उसे दिखाकर.
इंटरैक्शन कंपोज़िट सेंसर
कुछ सेंसर का इस्तेमाल ज़्यादातर, उपयोगकर्ता के साथ इंटरैक्शन का पता लगाने के लिए किया जाता है. हम यह तय नहीं करते कि इन सेंसर को कैसे लागू किया जाना चाहिए. हालांकि, इनकी बिजली खपत कम होनी चाहिए. साथ ही, डिवाइस बनाने वाली कंपनी की यह ज़िम्मेदारी है कि वह उपयोगकर्ता अनुभव के हिसाब से इनकी क्वालिटी की पुष्टि करे.
डिवाइस को चालू करने के लिए हाथ का जेस्चर
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: तय नहीं किया गया (कम पावर वाले सेंसर)
रिपोर्टिंग मोड: वन-शॉट
कम पावर
इस सेंसर का सिर्फ़ वेक-अप वर्शन लागू करें.
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
वॉकी-अप सेंसर दिखाता है
जगाने वाला जेस्चर सेंसर, डिवाइस की खास गति के आधार पर डिवाइस को सक्रिय करने की सुविधा देता है. जब यह सेंसर ट्रिगर होता है, तो डिवाइस इस तरह काम करता है जैसे पावर बटन को दबाया गया हो और स्क्रीन चालू हो जाए. इस सेंसर के ट्रिगर होने पर, स्क्रीन चालू होने पर, उपयोगकर्ता डिवाइस की सेटिंग में जाकर इस व्यवहार को बंद कर सकता है. सेटिंग में होने वाले बदलावों से सेंसर के काम करने के तरीके पर कोई असर नहीं पड़ता. सिर्फ़ यह होता है कि फ़्रेमवर्क ट्रिगर होने पर स्क्रीन चालू करता है या नहीं. यह तय नहीं किया गया है कि किस जेस्चर का पता लगाया जाए. डिवाइस बनाने वाली कंपनी, इसे चुन सकती है.
इस सेंसर की बैटरी कम होनी चाहिए, क्योंकि यह हर समय चालू हो सकता है.
हर सेंसर इवेंट, sensors_event_t.data[0]
में 1
की रिपोर्ट करता है.
हाथ का जेस्चर
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: तय नहीं किया गया (कम पावर वाले सेंसर)
रिपोर्टिंग मोड: वन-शॉट
कम बैटरी वाले डिवाइसों के लिए
इस सेंसर का सिर्फ़ वेक-अप वर्शन लागू करें.
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
वॉकी-अप सेंसर दिखाता है
डिवाइस को उठाने पर, डिवाइस उठाने के जेस्चर से जुड़ा सेंसर ट्रिगर होता है. इससे कोई फ़र्क़ नहीं पड़ता कि डिवाइस पहले कहां था (डेस्क, पॉकेट, बैग).
हर सेंसर इवेंट, sensors_event_t.data[0]
में 1
की रिपोर्ट करता है.
एक नज़र में जानकारी देखने का जेस्चर
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: तय नहीं किया गया (कम पावर वाले सेंसर)
रिपोर्टिंग-मोड: वन-शॉट
कम बैटरी वाले डिवाइसों के लिए
इस सेंसर का सिर्फ़ वेक-अप वर्शन लागू करें.
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
वॉकी-अप सेंसर दिखाता है
एक नज़र डालने के जेस्चर सेंसर की मदद से, स्क्रीन थोड़ी देर के लिए चालू की जा सकती है. इससे उपयोगकर्ता किसी खास हलचल के आधार पर स्क्रीन पर कॉन्टेंट देख सकता है. जब यह सेंसर ट्रिगर होता है, तो डिवाइस कुछ समय के लिए स्क्रीन चालू कर देगा. इससे उपयोगकर्ता, डिवाइस के लॉक होने पर भी सूचनाएं या अन्य कॉन्टेंट देख सकता है. हालांकि, डिवाइस तब भी इंटरैक्टिव नहीं होता. इसके बाद, स्क्रीन फिर से बंद हो जाएगी. डिवाइस की सेटिंग में जाकर, उपयोगकर्ता इस व्यवहार को बंद कर सकता है. सेटिंग में किए गए बदलावों से, सेंसर के काम करने के तरीके पर कोई असर नहीं पड़ता. इन बदलावों से सिर्फ़ यह तय होता है कि ट्रिगर होने पर, फ़्रेमवर्क स्क्रीन को कुछ समय के लिए चालू करेगा या नहीं. डिवाइस पर किस तरह के जेस्चर का पता लगाया जाए, यह तय नहीं किया गया है. डिवाइस बनाने वाली कंपनी यह तय कर सकती है.
यह सेंसर कम पावर वाला होना चाहिए, क्योंकि यह 24/7 चालू रह सकता है.
हर सेंसर इवेंट, sensors_event_t.data[0]
में 1
की रिपोर्ट करता है.
सीमित ऐक्सिस वाले IMU सेंसर
सीमित ऐक्सिस वाले IMU सेंसर, Android 13 के साथ उपलब्ध हैं. ये ऐसे सेंसर होते हैं जिनका इस्तेमाल उन मामलों में किया जा सकता है जहां तीनों ऐक्सिस (x, y, z) उपलब्ध नहीं होते. Android में स्टैंडर्ड IMU टाइप (जैसे कि
SENSOR_TYPE_ACCELEROMETER
और
SENSOR_TYPE_GYROSCOPE
) के लिए, यह माना जाता है कि तीनों ऐक्सिस काम करते हैं. हालांकि, सभी फ़ॉर्म फ़ैक्टर और डिवाइसों पर, तीन ऐक्सिस वाले ऐक्सीलरॉमीटर और तीन ऐक्सिस वाले गायरोस्कोप काम नहीं करते.
एक्सलरोमीटर सीमित ऐक्सिस
बुनियादी फ़िज़िकल सेंसर: एक्सलरोमीटर
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
न चालू करने वाला सेंसर दिखाता है
एक्सलरोमीटर के सीमित ऐक्सिस सेंसर का मतलब TYPE_ACCELEROMETER
से है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो ऐक्सिस काम नहीं करते.
सेंसर से रिपोर्ट की गई सेंसर इवेंट की पिछली तीन वैल्यू से पता चलता है कि
x, y, और z ऐक्सिस के लिए, एक्सेलेरेशन वैल्यू का इस्तेमाल किया जा सकता है या नहीं. 1.0
वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल किया जा सकता है. वहीं, 0
वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल नहीं किया जा सकता. डिवाइस बनाने वाली कंपनियां, बिल्ड के समय काम करने वाले ऐक्सिस की पहचान करती हैं. साथ ही, रनटाइम के दौरान वैल्यू नहीं बदलती हैं.
डिवाइस बनाने वाली कंपनियों को, इस्तेमाल न किए गए ऐक्सिस के लिए, ऐक्सेलरेशन वैल्यू को 0
पर सेट करना चाहिए.
जाइरोस्कोप सीमित ऐक्सिस
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: जाइरोस्कोप
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
वाइब्रेशन सेंसर के बजाय कोई दूसरा सेंसर दिखाता है
सीमित अक्ष वाला जाइरोस्कोप सेंसर, TYPE_GYROSCOPE
के बराबर होता है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो अक्ष काम नहीं करते.
सेंसर से रिपोर्ट की गई सेंसर इवेंट की पिछली तीन वैल्यू से पता चलता है कि
x, y, और z ऐक्सिस के लिए ऐंगलर स्पीड की वैल्यू काम करती है या नहीं. 1.0
वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल किया जा सकता है. वहीं, 0
वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल नहीं किया जा सकता. डिवाइस बनाने वाली कंपनियां, बिल्ड के समय काम करने वाले ऐक्सिस की पहचान करती हैं. साथ ही, रनटाइम के दौरान वैल्यू नहीं बदलती हैं.
डिवाइस बनाने वाली कंपनियों को इस्तेमाल नहीं किए गए ऐक्सिस के लिए, ऐंगलर स्पीड की वैल्यू को
0
पर सेट करना होगा.
एक्सलरोमीटर के सीमित ऐक्सिस को कैलिब्रेट नहीं किया गया है
शामिल फ़िज़िकल सेंसर: एक्सलरोमीटर
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
वॉकी-अप सेंसर नहीं दिखाता
एक्सलरोमीटर के सीमित अक्षों वाला बिना कैलिब्रेट किया गया सेंसर,
TYPE_ACCELEROMETER_UNCALIBRATED
के बराबर होता है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो अक्ष काम नहीं करते.
सेंसर से रिपोर्ट की गई सेंसर इवेंट की पिछली तीन वैल्यू से पता चलता है कि x, y, और z ऐक्सिस के लिए, ऐक्सेलरेशन और बायस वैल्यू काम करती हैं या नहीं. 1.0
की वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल किया जा सकता है. वहीं, 0
की वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल नहीं किया जा सकता. डिवाइस बनाने वाली कंपनियां, बिल्ड के समय काम करने वाले ऐक्सिस की पहचान करती हैं. साथ ही, रनटाइम के दौरान वैल्यू नहीं बदलती हैं.
डिवाइस बनाने वाली कंपनियों को, इस्तेमाल न किए गए ऐक्सिस के लिए, ऐक्सेलरेशन और बायस की वैल्यू 0
पर सेट करनी चाहिए.
जाइरोस्कोप के कुछ ऐक्सिस कैलिब्रेट नहीं किए गए हैं
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: जाइरोस्कोप
रिपोर्टिंग मोड: लगातार
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED)
वॉकी-अप सेंसर नहीं दिखाता
कैलिब्रेट नहीं किया गया ऐसा सेंसर जिसका ऐक्सिस सीमित है, वह TYPE_GYROSCOPE_UNCALIBRATED
के बराबर होता है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो ऐक्सिस काम नहीं करते.
सेंसर से रिपोर्ट की गई सेंसर इवेंट की पिछली तीन वैल्यू से पता चलता है कि x, y, और z ऐक्सिस के लिए ऐंगलर स्पीड और ड्रिफ़्ट वैल्यू काम करती हैं या नहीं. 1.0
की वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल किया जा सकता है. वहीं, 0
की वैल्यू से पता चलता है कि ऐक्सिस का इस्तेमाल नहीं किया जा सकता. डिवाइस बनाने वाली कंपनियां
बिल्ड के समय इस्तेमाल किए जा सकने वाले ऐक्सिस की पहचान करती हैं और रनटाइम के दौरान, वैल्यू
नहीं बदलती हैं.
डिवाइस बनाने वाली कंपनियों को इस्तेमाल नहीं किए गए ऐक्सिस के लिए, कोणीय रफ़्तार और ड्रिफ़्ट वैल्यू को 0
पर सेट करना होगा.
कंपोज़िट लिमिटेड ऐक्सिस IMU
डिवाइस में मौजूद फ़िज़िकल सेंसर: 3-ऐक्सिस एक्सलरोमीटर, 3-ऐक्सिस जाइरोस्कोप, कैलिब्रेट नहीं किए गए 3-ऐक्सिस एक्सलरोमीटर, और कैलिब्रेट नहीं किए गए 3-ऐक्सिस जाइरोस्कोप सेंसर का कोई भी कॉम्बिनेशन.
रिपोर्टिंग मोड: लगातार
कॉम्पोज़िट लिमिटेड ऐक्सिस IMU सेंसर, लिमिटेड ऐक्सिस IMU सेंसर के बराबर होता है. हालांकि, यह एचएएल पर काम करने के बजाय, तीन ऐक्सिस सेंसर के डेटा को लिमिटेड ऐक्सिस वाले वैरिएंट में बदल देता है. ये कंपोजिट सेंसर सिर्फ़ वाहन से जुड़े डिवाइसों के लिए चालू होते हैं.
नीचे दी गई टेबल में, स्टैंडर्ड 3-ऐक्सिस ऐक्सीलेरोमीटर से, कम ऐक्सिस वाले कंपोजिट ऐक्सीलेरोमीटर में बदलाव का उदाहरण दिया गया है.
SENSOR_TYPE_ACCELEROMETER के लिए SensorEvent की वैल्यू | SENSOR_TYPE_ACCELEROMETER SensorEvent का उदाहरण | कंपोजिट SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent |
---|---|---|
values[0] | से 0.065 |
-0.065 |
values[1] | 0.078 |
0.078 |
values[2] | 9.808 |
9.808 |
मान[3] | लागू नहीं |
1.0 |
values[4] | लागू नहीं |
1.0 |
values[5] | लागू नहीं |
1.0 |
वाहन से जुड़े सेंसर
वाहन से जुड़े इस्तेमाल के उदाहरणों के लिए सेंसर.
हेडिंग
डिवाइस में पहले से मौजूद फ़िज़िकल सेंसर: जीपीएस, मैग्नेटोमीटर, एक्सलरोमीटर, और जाइरोस्कोप का कोई भी कॉम्बिनेशन.
रिपोर्टिंग-मोड: कंटिन्यूअस
getDefaultSensor(SENSOR_TYPE_HEADING)
न चालू करने वाला सेंसर दिखाता है
Android 13 में उपलब्ध हेडिंग सेंसर, डिग्री में यह मेज़र करता है कि डिवाइस, 'सही उत्तर' के मुकाबले किस दिशा में है. हेडिंग सेंसर में दो SensorEvent
वैल्यू शामिल होती हैं.
एक, डिवाइस की हेडिंग के लिए और एक, दी गई हेडिंग की वैल्यू के सटीक होने के लिए.
इस सेंसर से रिपोर्ट की गई हेडिंग वैल्यू,
0.0
(शामिल) और 360.0
(शामिल नहीं) के बीच होनी चाहिए. इसमें,
0
उत्तर, 90
पूर्व, 180
दक्षिण, और
270
पश्चिम को दिखाता है.
इस सेंसर के लिए, सटीक जानकारी देने का कॉन्फ़िडेंस लेवल 68 प्रतिशत है. अगर आंकड़ों का डिस्ट्रिब्यूशन गौसियन नॉर्मल है, तो सटीक जानकारी का मतलब एक स्टैंडर्ड डिविएशन होता है. उदाहरण के लिए, अगर हेडिंग सेंसर, हेडिंग की वैल्यू 60 डिग्री और सटीक वैल्यू के तौर पर 10 डिग्री दिखाता है, तो सही हेडिंग के 50 डिग्री और 70 डिग्री के बीच होने की संभावना 68 प्रतिशत होगी.