सेंसर के टाइप

इस सेक्शन में सेंसर ऐक्सिस, बेस सेंसर, और कंपोज़िट सेंसर (गतिविधि, ऐटिट्यूड, अनकैलिब्रेटेड, और इंटरैक्शन) के बारे में बताया गया है.

सेंसर ऐक्सिस

कई सेंसर से मिली सेंसर इवेंट वैल्यू को एक खास फ़्रेम में दिखाया जाता है. यह फ़्रेम, डिवाइस के हिसाब से स्टैटिक होता है.

मोबाइल डिवाइस के ऐक्सिस

Sensor API, सिर्फ़ स्क्रीन के नैचुरल ओरिएंटेशन के हिसाब से काम करता है. डिवाइस की स्क्रीन का ओरिएंटेशन बदलने पर, ऐक्सिस स्वैप नहीं होते.

मोबाइल डिवाइसों के लिए सेंसर एपीआई का कोऑर्डिनेट सिस्टम

पहली इमेज. सेंसर एपीआई, मोबाइल डिवाइस के हिसाब से किस कोऑर्डिनेट सिस्टम का इस्तेमाल करता है

ऑटोमोटिव ऐक्स

Android Automotive में, ऐक्सिस को वाहन के बॉडी फ़्रेम के हिसाब से तय किया जाता है. वाहन के रेफ़रंस फ़्रेम का ओरिजन, पीछे के ऐक्सल का सेंटर होता है. वाहन के रेफ़रंस फ़्रेम को इस तरह से ओरिएंट किया जाता है कि:

  • X-ऐक्सिस दाईं ओर होता है और हॉरिज़ॉन्टल प्लेन पर होता है. यह वाहन के सिमिट्री प्लेन के लंबवत होता है.
  • Y-ऐक्सिस आगे की ओर होता है और हॉरिज़ॉन्टल प्लेन पर होता है.
ऑटोमोटिव डिवाइसों के लिए सेंसर एपीआई का कोऑर्डिनेट सिस्टम

दूसरी इमेज. Sensor API के ज़रिए इस्तेमाल किया गया कोऑर्डिनेट सिस्टम (ऑटोमोटिव डिवाइस के हिसाब से)

वाहन का रेफ़रंस फ़्रेम, राइट-हैंडेड कोऑर्डिनेट सिस्टम होता है. इसलिए, Z-ऐक्सिस ऊपर की ओर होता है.

रेफ़रंस फ़्रेम का Z-ऐक्सिस, गुरुत्वाकर्षण के साथ अलाइन होता है. इसका मतलब है कि X-ऐक्सिस और Y-ऐक्सिस, दोनों हॉरिज़ॉन्टल होते हैं. इस वजह से, हो सकता है कि Y-ऐक्सिस हमेशा फ्रंट ऐक्सल से न गुज़रे.

बेस सेंसर

सेंसर के बुनियादी टाइप के नाम, उन फ़िज़िकल सेंसर के नाम पर रखे जाते हैं जिनसे वे जुड़े होते हैं. ये सेंसर, किसी एक फ़िज़िकल सेंसर से डेटा भेजते हैं. कंपोज़िट सेंसर, दूसरे सेंसर से डेटा जनरेट करते हैं. सेंसर के बुनियादी टाइप के उदाहरणों में ये शामिल हैं:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

हालांकि, बेस सेंसर, फ़िज़िकल सेंसर के बराबर नहीं होते हैं और इन्हें फ़िज़िकल सेंसर के साथ भ्रमित नहीं किया जाना चाहिए. बेसिक सेंसर से मिलने वाला डेटा, फ़िज़िकल सेंसर का रॉ आउटपुट नहीं होता है. ऐसा इसलिए, क्योंकि इसमें कुछ सुधार किए जाते हैं. जैसे, पूर्वाग्रह की वजह से होने वाली गड़बड़ी और तापमान की वजह से होने वाली गड़बड़ी को ठीक करना.

उदाहरण के लिए, इन मामलों में बेस सेंसर की विशेषताएं, उसके फ़िज़िकल सेंसर की विशेषताओं से अलग हो सकती हैं:

  • जाइरोस्कोप चिप की रेटिंग 1 डिग्री/सेकंड की बायस रेंज के लिए है.
    • फ़ैक्ट्री कैलिब्रेशन के बाद, तापमान और बायस में बदलाव को ठीक करने की सुविधा लागू की जाती है. इससे Android सेंसर का असल बायस कम हो जाएगा. ऐसा हो सकता है कि बायस को इस हद तक कम कर दिया जाए कि वह 0.01 डिग्री/सेकंड से कम हो जाए.
    • इस स्थिति में, हम कहते हैं कि Android सेंसर में 0.01 डिग्री/सेकंड से कम का पूर्वाग्रह है. भले ही, सेंसर की डेटा शीट में 1 डिग्री/सेकंड लिखा हो.
  • ऐसा बैरोमीटर जिसकी पावर की खपत 100 uW है.
    • जनरेट किए गए डेटा को चिप से SoC तक ले जाना होता है. इसलिए, Android डिवाइस के बैरोमीटर सेंसर से डेटा इकट्ठा करने की असल लागत काफ़ी ज़्यादा हो सकती है. उदाहरण के लिए, 1000 uW.
    • इस स्थिति में, हम कहते हैं कि Android सेंसर की बिजली की खपत 1,000 uW है. भले ही, बैरोमीटर चिप के लीड पर मापी गई बिजली की खपत 100uW हो.
  • एक मैग्नेटोमीटर, जिसे कैलिब्रेट करने पर 100uW की खपत होती है. हालांकि, कैलिब्रेट करते समय यह ज़्यादा खपत करता है.
    • इसके कैलिब्रेशन रूटीन के लिए, जायरोस्कोप को चालू करने की ज़रूरत पड़ सकती है. इससे 5, 000 uW की खपत होती है. साथ ही, कुछ एल्गोरिदम चलाने से 900 uW की खपत होती है.
    • इस स्थिति में, हम कहते हैं कि Android सेंसर (मैग्नेटोमीटर) की ज़्यादा से ज़्यादा बिजली की खपत 6000 uW है.
    • इस मामले में, बिजली की औसत खपत ज़्यादा काम की होती है. साथ ही, HAL के ज़रिए सेंसर की स्टैटिक विशेषताओं में यही रिपोर्ट की जाती है.

एक्सलरोमीटर

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) returns a non-wake-up sensor

एक्सलरोमीटर सेंसर, डिवाइस के ऐक्सलरेशन की जानकारी देता है. यह जानकारी, सेंसर के तीनों ऐक्सिस के हिसाब से होती है. मेजर किए गए ऐक्सलरेशन में, फ़िज़िकल ऐक्सलरेशन (वेलोसिटी में बदलाव) और ग्रैविटी, दोनों शामिल होती हैं. मेज़रमेंट को sensors_event_t.acceleration के x, y, और z फ़ील्ड में रिपोर्ट किया जाता है.

सभी वैल्यू, एसआई यूनिट (m/s^2) में होती हैं. इनसे डिवाइस के ऐक्सलरेशन को मापा जाता है. हालांकि, इसमें सेंसर के तीनों ऐक्सिस पर लगने वाले गुरुत्वाकर्षण बल को घटा दिया जाता है.

यहां कुछ उदाहरण दिए गए हैं:

  • जब कोई ऑब्जेक्ट फ़्री फ़ॉल में हो, तब (x, y, z) का नॉर्म 0 के आस-पास होना चाहिए.
  • जब डिवाइस को टेबल पर सीधा रखा जाता है और उसे बाईं ओर से दाईं ओर धकेला जाता है, तो x ऐक्सलरेशन की वैल्यू पॉज़िटिव होती है.
  • जब डिवाइस को टेबल पर सीधा रखा जाता है, तो z-ऐक्सिस के साथ ऐक्सलरेशन की वैल्यू +9.81 होती है. यह डिवाइस के ऐक्सलरेशन (0 मीटर/सेकंड^2) में से, गुरुत्वाकर्षण बल (-9.81 मीटर/सेकंड^2) को घटाने पर मिलती है.
  • जब डिवाइस को टेबल पर सीधा रखा जाता है और ऊपर की ओर धकेला जाता है, तो ऐक्सलरेशन की वैल्यू +9.81 से ज़्यादा होती है. यह डिवाइस के ऐक्सलरेशन (+A m/s^2) में से गुरुत्वाकर्षण बल (-9.81 m/s^2) को घटाने पर मिलती है.

रीडिंग को इन तरीकों से कैलिब्रेट किया जाता है:

  • तापमान के हिसाब से बदलाव
  • ऑनलाइन बायस कैलिब्रेशन
  • स्केल को ऑनलाइन कैलिब्रेट करना

सेंसर के बंद होने पर ही, बायस और स्केल कैलिब्रेशन को अपडेट किया जाना चाहिए. इससे स्ट्रीमिंग के दौरान वैल्यू में अचानक होने वाले बदलावों से बचा जा सकेगा.

ऐक्सिलरोमीटर, sensors_event_t.acceleration.status के ज़रिए यह भी बताता है कि उसे अपनी रीडिंग के कितना सटीक होने की उम्मीद है. इस फ़ील्ड के लिए संभावित वैल्यू के बारे में ज़्यादा जानने के लिए, SensorManager के SENSOR_STATUS_* कॉन्स्टेंट देखें.

आस-पास का तापमान

Reporting-mode: On-change

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) returns a non-wake-up sensor

यह सेंसर, कमरे के तापमान की जानकारी डिग्री सेल्सियस में देता है.

मैग्नेटिक फ़ील्ड सेंसर

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) returns a non-wake-up sensor

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

मैग्नेटिक फ़ील्ड सेंसर को मैग्नेटोमीटर भी कहा जाता है. यह सेंसर, आस-पास के मैग्नेटिक फ़ील्ड की जानकारी देता है. यह जानकारी, सेंसर के तीन ऐक्सिस के हिसाब से मेज़र की जाती है.

मेज़रमेंट को sensors_event_t.magnetic के x, y, और z फ़ील्ड में रिपोर्ट किया जाता है. साथ ही, सभी वैल्यू माइक्रो-टेस्ला (uT) में होती हैं.

मैग्नेटोमीटर, sensors_event_t.magnetic.status के ज़रिए यह भी बताता है कि उसे अपनी रीडिंग कितनी सटीक होने की उम्मीद है. इस फ़ील्ड की संभावित वैल्यू के बारे में ज़्यादा जानने के लिए, SensorManager के SENSOR_STATUS_* कॉन्स्टेंट देखें.

रीडिंग को इन तरीकों से कैलिब्रेट किया जाता है:

  • तापमान के हिसाब से बदलाव
  • फ़ैक्ट्री (या ऑनलाइन) में सॉफ़्ट-आयरन कैलिब्रेशन
  • ऑनलाइन हार्ड-आयरन कैलिब्रेशन

जाइरोस्कोप

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) returns a non-wake-up sensor

जाइरोस्कोप सेंसर, डिवाइस के तीन सेंसर ऐक्सिस के चारों ओर घूमने की दर की जानकारी देता है.

घड़ी की उलटी दिशा में घुमाने पर, रोटेशन पॉज़िटिव होता है (राइट-हैंड रूल). इसका मतलब है कि अगर कोई व्यक्ति x, y या z अक्ष पर किसी पॉज़िटिव जगह से, ऑरिजिन पर रखे गए डिवाइस को देखता है, तो डिवाइस के घड़ी की सुई की उलटी दिशा में घूमने पर, वह पॉज़िटिव रोटेशन की रिपोर्ट करेगा. ध्यान दें कि यह पॉज़िटिव रोटेशन की स्टैंडर्ड गणितीय परिभाषा है. यह एयरोस्पेस में रोल की परिभाषा से मेल नहीं खाती.

मेज़रमेंट को sensors_event_t.gyro के x, y, और z फ़ील्ड में रिपोर्ट किया जाता है. साथ ही, सभी वैल्यू रेडियन प्रति सेकंड (rad/s) में होती हैं.

रीडिंग को इन तरीकों से कैलिब्रेट किया जाता है:

  • तापमान के हिसाब से बदलाव
  • फ़ैक्ट्री (या ऑनलाइन) स्केल पर मुआवज़ा
  • ऑनलाइन बायस कैलिब्रेशन (ड्रift को हटाने के लिए)

जायरोस्कोप, sensors_event_t.gyro.status के ज़रिए यह भी बताता है कि उसे अपनी रीडिंग के कितना सटीक होने की उम्मीद है. इस फ़ील्ड के लिए संभावित वैल्यू के बारे में ज़्यादा जानने के लिए, SensorManager के SENSOR_STATUS_* कॉन्स्टेंट देखें.

मैग्नेटोमीटर और ऐक्सिलरोमीटर के आधार पर, जायरोस्कोप को नहीं बनाया जा सकता. ऐसा इसलिए, क्योंकि इससे स्थानीय स्थिरता और प्रतिक्रिया देने की क्षमता कम हो जाएगी. यह सामान्य जायरोस्कोप चिप पर आधारित होना चाहिए.

धड़कन की दर

Reporting-mode: On-change

getDefaultSensor(SENSOR_TYPE_HEART_RATE) returns a non-wake-up sensor

धड़कन की दर मापने वाला सेंसर, डिवाइस को छूने वाले व्यक्ति की मौजूदा धड़कन की दर की जानकारी देता है.

धड़कन की मौजूदा दर, धड़कन प्रति मिनट (बीपीएम) के हिसाब से 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 को अपने-आप बदलकर, सही अनुमति सेट कर देता है, ताकि यह पक्का किया जा सके कि दोनों एक-दूसरे के साथ काम कर सकें. फ़्रेमवर्क, Android 16 और इसके बाद के वर्शन के लिए SENSOR_PERMISSION_READ_HEART_RATE अनुमति का इस्तेमाल करता है. साथ ही, Android 15 और इससे पहले के वर्शन के लिए SENSOR_PERMISSION_BODY_SENSORS अनुमति का इस्तेमाल करता है.

हल्का

Reporting-mode: On-change

getDefaultSensor(SENSOR_TYPE_LIGHT) returns a non-wake-up sensor

लाइट सेंसर, एसआई लक्स यूनिट में मौजूदा रोशनी की जानकारी देता है.

मेज़रमेंट को sensors_event_t.light में रिपोर्ट किया जाता है.

निकटता

Reporting-mode: On-change

इसे आम तौर पर वेक-अप सेंसर के तौर पर तय किया जाता है

getDefaultSensor(SENSOR_TYPE_PROXIMITY) वेक-अप सेंसर दिखाता है

प्रॉक्सिमिटी सेंसर, सेंसर से सबसे नज़दीक दिखने वाली सतह की दूरी की जानकारी देता है.

Android 4.4 तक, प्रॉक्सिमिटी सेंसर हमेशा वेक-अप सेंसर होते थे. ये प्रॉक्सिमिटी में बदलाव का पता चलने पर, SoC को चालू कर देते थे. Android 4.4 के बाद, हम इस सेंसर के वेक-अप वर्शन को लागू करने का सुझाव देते हैं. ऐसा इसलिए, क्योंकि फ़ोन कॉल करते समय स्क्रीन को चालू और बंद करने के लिए इसका इस्तेमाल किया जाता है.

sensors_event_t.distance में मेज़रमेंट को सेंटीमीटर में रिपोर्ट किया जाता है. ध्यान दें कि कुछ प्रॉक्सिमिटी सेंसर, सिर्फ़ बाइनरी "पास" या "दूर" मेज़रमेंट के साथ काम करते हैं. इस मामले में, सेंसर "far" स्थिति में sensor_t.maxRange वैल्यू और "near" स्थिति में sensor_t.maxRange से कम वैल्यू रिपोर्ट करता है.

दबाव

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_PRESSURE) returns a non-wake-up sensor

प्रेशर सेंसर को बैरोमीटर भी कहा जाता है. यह वायुमंडल के दबाव को हेक्टोपास्कल (hPa) में दिखाता है.

रीडिंग को कैलिब्रेट करने के लिए, इनका इस्तेमाल किया जाता है

  • तापमान के हिसाब से बदलाव
  • फ़ैक्ट्री बायस कैलिब्रेशन
  • फ़ैक्ट्री स्केल कैलिब्रेशन

बैरोमीटर का इस्तेमाल, ऊंचाई में होने वाले बदलावों का अनुमान लगाने के लिए किया जाता है. समुद्र तल से ऊंचाई का सटीक अनुमान लगाने के लिए, समुद्र तल पर दबाव (मौसम के हिसाब से बदलता रहता है) को रेफ़रंस के तौर पर इस्तेमाल करना ज़रूरी है.

ह्यूमिडिटी की रेंज

Reporting-mode: On-change

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) returns a non-wake-up sensor

ह्यूमिडिटी की रेंज बताने वाला सेंसर, आस-पास की हवा में मौजूद ह्यूमिडिटी को मापता है. साथ ही, यह वैल्यू को प्रतिशत में दिखाता है.

कंपोज़िट सेंसर टाइप

कंपोज़िट सेंसर, एक या कई फ़िज़िकल सेंसर से मिले डेटा को प्रोसेस करके और/या जोड़कर डेटा जनरेट करता है. (बेस सेंसर के अलावा किसी भी सेंसर को कंपोज़िट सेंसर कहा जाता है.) कंपोज़िट सेंसर के उदाहरणों में ये शामिल हैं:

बेसिक सेंसर की तरह ही, कंपोज़िट सेंसर की विशेषताएं उनके फ़ाइनल डेटा की विशेषताओं से मिलती हैं. उदाहरण के लिए, गेम रोटेशन वेक्टर की बैटरी की खपत, एक्सलरोमीटर चिप, जाइरोस्कोप चिप, डेटा को प्रोसेस करने वाली चिप, और डेटा को ट्रांसफ़र करने वाली बसों की बैटरी की खपत के योग के बराबर होती है. एक और उदाहरण के तौर पर, गेम रोटेशन वेक्टर का ड्रिफ़्ट, कैलिब्रेशन एल्गोरिदम की क्वालिटी और फ़िज़िकल सेंसर की विशेषताओं पर निर्भर करता है.

यहां दी गई टेबल में, कंपोज़िट सेंसर के उपलब्ध टाइप की सूची दी गई है. हर कंपोज़िट सेंसर, एक या कई फ़िज़िकल सेंसर से मिले डेटा पर निर्भर करता है. नतीजों का अनुमान लगाने के लिए, अन्य फ़िज़िकल सेंसर न चुनें. इनसे उपयोगकर्ताओं को खराब अनुभव मिलता है.

सेंसर का टाइप कैटगरी फ़िज़िकल सेंसर रिपोर्टिंग मोड

गेम रोटेशन वेक्टर

ऐटिट्यूड

एक्सलरोमीटर, जाइरोस्कोप, मैग्नेटोमीटर का इस्तेमाल नहीं किया जाना चाहिए

निरंतर

जियोमैग्नेटिक रोटेशन वेक्टर कम
     पावर वाला सेंसर

ऐटिट्यूड

एक्सलरोमीटर, मैग्नेटोमीटर, जाइरोस्कोप का इस्तेमाल नहीं किया जाना चाहिए

निरंतर

एक नज़र डालने वाला जेस्चर कम बैटरी इस्तेमाल करने वाला सेंसर

इंटरैक्शन

तय नहीं

एक उदाहरण वाला प्रॉम्प्ट

Gravity

नज़रिया

एक्सलरोमीटर, जाइरोस्कोप (अगर मौजूद है) या मैग्नेटोमीटर (अगर जाइरोस्कोप मौजूद नहीं है)

निरंतर

जाइरोस्कोप कैलिब्रेट नहीं किया गया है

कैलिब्रेट नहीं किया गया

जाइरोस्कोप

निरंतर

लीनियर ऐक्सलरेशन

गतिविधि

एक्सलरोमीटर, जाइरोस्कोप (अगर मौजूद है) या मैग्नेटोमीटर (अगर जाइरोस्कोप मौजूद नहीं है)

निरंतर

मैग्नेटिक फ़ील्ड का कैलिब्रेशन नहीं हुआ है

कैलिब्रेट नहीं किया गया

मैग्नेटोमीटर

निरंतर

ओरिएंटेशन (अब सेवा में नहीं है)

नज़रिया

एक्सलरोमीटर, मैग्नेटोमीटर, जाइरोस्कोप (अगर मौजूद हो)

निरंतर

डिवाइस को ऊपर उठाने का जेस्चर कम बैटरी इस्तेमाल करने वाला सेंसर

इंटरैक्शन

तय नहीं

एक उदाहरण वाला प्रॉम्प्ट

रोटेशन वेक्टर

नज़रिया

एक्सलरोमीटर, मैग्नेटोमीटर, जाइरोस्कोप (अगर मौजूद हो)

निरंतर

तेज़ी से हिलना कम बैटरी इस्तेमाल करने वाला सेंसर

गतिविधि

एक्सलरोमीटर (या कोई दूसरा सेंसर, जो बहुत कम पावर इस्तेमाल करता हो)

एक उदाहरण वाला प्रॉम्प्ट

कदमों की गिनती करने वाला काउंटर कम बैटरी इस्तेमाल करने वाला सेंसर

गतिविधि

एक्सलरोमीटर

बदलाव होने पर

स्टेप डिटेक्टर कम बैटरी इस्तेमाल करने वाला सेंसर

गतिविधि

एक्सलरोमीटर

स्पेशल

झुकने का पता लगाने वाला सेंसर कम बैटरी इस्तेमाल करने वाला सेंसर

गतिविधि

एक्सलरोमीटर

स्पेशल

स्क्रीन चालू करने के लिए जेस्चर कम बैटरी इस्तेमाल करने वाला सेंसर

इंटरैक्शन

तय नहीं

एक उदाहरण वाला प्रॉम्प्ट

कम बैटरी इस्तेमाल करने वाला सेंसर = कम बैटरी इस्तेमाल करने वाला सेंसर

गतिविधि के कंपोज़िट सेंसर

लीनियर ऐक्सलरेशन

फ़ोन में मौजूद फ़िज़िकल सेंसर: एक्सलरोमीटर और (अगर मौजूद है, तो) जाइरोस्कोप (या अगर जाइरोस्कोप मौजूद नहीं है, तो मैग्नेटोमीटर)

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) returns a non-wake-up sensor

लीनियर ऐक्सलरेशन सेंसर, डिवाइस के लीनियर ऐक्सलरेशन की जानकारी देता है. यह जानकारी सेंसर फ़्रेम में होती है. इसमें ग्रैविटी शामिल नहीं होती.

सैद्धांतिक तौर पर, आउटपुट इस तरह होता है: एक्सलरोमीटर का आउटपुट माइनस ग्रैविटी सेंसर का आउटपुट. इसे sensors_event_t.acceleration के x, y, और z फ़ील्ड में m/s^2 में रिपोर्ट किया जाता है.

जब डिवाइस स्थिर हो, तब सभी ऐक्सिस पर रीडिंग 0 के आस-पास होनी चाहिए.

अगर डिवाइस में जाइरोस्कोप है, तो लीनियर ऐक्सलरेशन सेंसर को इनपुट के तौर पर जाइरोस्कोप और ऐक्सलरोमीटर का इस्तेमाल करना चाहिए.

अगर डिवाइस में जाइरोस्कोप नहीं है, तो लीनियर ऐक्सलरेशन सेंसर को एक्सलरोमीटर और मैग्नेटोमीटर का इस्तेमाल इनपुट के तौर पर करना होगा.

ज़्यादा गति

फ़िजिकल सेंसर: एक्सलरोमीटर (या कम पावर वाला कोई अन्य सेंसर)

Reporting-mode: One-shot

बैटरी कम चार्ज है

इस सेंसर के सिर्फ़ वेक-अप वर्शन को लागू करें.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) वेक-अप सेंसर दिखाता है

तेज़ गति का पता लगाने वाला सेंसर, तब ट्रिगर होता है, जब उसे तेज़ गति का पता चलता है. यह ऐसी गति होती है जिससे उपयोगकर्ता की जगह की जानकारी में बदलाव हो सकता है.

इस तरह के अहम बदलावों के उदाहरण:

  • पैदल चलना या साइकल चलाना
  • चलती हुई कार, बस या ट्रेन में बैठना

ऐसी स्थितियों के उदाहरण जिनमें मोशन का पता नहीं चलता:

  • फ़ोन जेब में है और व्यक्ति चल नहीं रहा है
  • फ़ोन को टेबल पर रखा गया है और आस-पास के ट्रैफ़िक या वॉशिंग मशीन की वजह से टेबल थोड़ी हिल रही है

ज़्यादातर मामलों में, मोशन डिटेक्टर का इस्तेमाल जगह की जानकारी का पता लगाने के लिए किया जाता है. इससे बैटरी की खपत कम होती है. जब स्थानीयकरण के एल्गोरिदम यह पता लगाते हैं कि डिवाइस एक ही जगह पर है, तो वे कम बैटरी इस्तेमाल करने वाले मोड पर स्विच कर सकते हैं. इस मोड में, डिवाइस को चालू करने के लिए, डिवाइस में काफ़ी हलचल होना ज़रूरी है. ऐसा तब होता है, जब उपयोगकर्ता अपनी जगह बदल रहा हो.

यह सेंसर कम पावर वाला होना चाहिए. यह बैटरी की खपत को कम करने के लिए, कुछ हद तक सटीक नतीजे देने की क्षमता से समझौता करता है. इस वजह से, कुछ मामलों में गलत नतीजे मिल सकते हैं. ऐसा इन वजहों से किया जाता है:

  • इस सेंसर का मकसद, बैटरी की बचत करना है.
  • जब उपयोगकर्ता नहीं चल रहा होता है, तब इवेंट को ट्रिगर करने पर (फ़ॉल्स पॉज़िटिव), बैटरी की खपत ज़्यादा होती है. इसलिए, ऐसा नहीं करना चाहिए.
  • अगर उपयोगकर्ता के चलने के दौरान इवेंट ट्रिगर नहीं होता है (फ़ॉल्स नेगेटिव), तो इसे स्वीकार किया जा सकता है. हालांकि, ऐसा बार-बार नहीं होना चाहिए. अगर उपयोगकर्ता 10 सेकंड से चल रहा है, तो उन 10 सेकंड के अंदर इवेंट ट्रिगर न करना स्वीकार्य नहीं है.

हर सेंसर इवेंट, sensors_event_t.data[0] में sensors_event_t.data[0] की जानकारी देता है.1

कदमों का पता लगाने वाला सेंसर

फ़िज़िकल सेंसर: एक्सलरोमीटर (+ कम बैटरी इस्तेमाल करने वाले अन्य सेंसर भी हो सकते हैं)

Reporting-mode: Special (one event per step taken)

बैटरी कम चार्ज है

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) returns a non-wake-up sensor

स्टेप डिटेक्टर, उपयोगकर्ता के हर कदम पर एक इवेंट जनरेट करता है.

इवेंट sensors_event_t.timestamp का टाइमस्टैंप, उस समय से जुड़ा होता है जब पैर ज़मीन से टकराता है. इससे ऐक्सलरेशन में काफ़ी बदलाव होता है.

कदमों का पता लगाने वाले सेंसर की लेटेन्सी, स्टेप काउंटर की तुलना में कम होनी चाहिए. यह दो सेकंड से कम होनी चाहिए. स्टेप डिटेक्टर और स्टेप काउंटर, दोनों यह पता लगाते हैं कि उपयोगकर्ता कब चल रहा है, दौड़ रहा है, और सीढ़ियां चढ़ रहा है. ये सूचनाएं तब ट्रिगर नहीं होनी चाहिए, जब उपयोगकर्ता साइकल चला रहा हो, गाड़ी चला रहा हो या किसी अन्य वाहन में हो.

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

sampling_period_ns से, कदम का पता लगाने वाले सेंसर पर कोई असर नहीं पड़ता.

हर सेंसर इवेंट, sensors_event_t.data[0] में sensors_event_t.data[0] की जानकारी देता है.1

कदमों की गिनती करने वाला डिवाइस

फ़िज़िकल सेंसर: एक्सलरोमीटर (+ कम बैटरी इस्तेमाल करने वाले अन्य सेंसर भी हो सकते हैं)

Reporting-mode: On-change

बैटरी बचाने वाला मोड

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) returns a non-wake-up sensor

स्टेप काउंटर, डिवाइस के चालू होने के बाद से उपयोगकर्ता के चलने की संख्या को रिपोर्ट करता है.

मेज़रमेंट को uint64_t में sensors_event_t.step_counter के तौर पर रिपोर्ट किया जाता है. साथ ही, सिस्टम रीबूट होने पर ही इसे शून्य पर रीसेट किया जाता है.

इवेंट का टाइमस्टैंप, उस समय के हिसाब से सेट किया जाता है जब इवेंट का आखिरी चरण पूरा हुआ था.

कदम चलने के समय के बारे में जानने के लिए, स्टेप डिटेक्टर सेंसर टाइप देखें.

स्टेप डिटेक्टर की तुलना में, स्टेप काउंटर में ज़्यादा देरी (10 सेकंड तक) हो सकती है. इस सेंसर में कम समय में डेटा प्रोसेस होता है. इसलिए, यह सटीक नतीजे देता है. पूरे दिन की गतिविधि मेज़र करने के बाद, कदमों की संख्या, असल संख्या के 10% के अंदर होनी चाहिए. स्टेप डिटेक्टर और स्टेप काउंटर, दोनों ही यह पता लगाते हैं कि उपयोगकर्ता कब चल रहा है, दौड़ रहा है, और सीढ़ियां चढ़ रहा है. ये तब ट्रिगर नहीं होने चाहिए, जब उपयोगकर्ता साइकल चला रहा हो, गाड़ी चला रहा हो या किसी अन्य वाहन में हो.

हार्डवेयर को यह पक्का करना होगा कि इंटरनल स्टेप काउंट कभी भी ओवरफ़्लो न हो. हार्डवेयर के इंटरनल काउंटर का कम से कम साइज़ 16 बिट होना चाहिए. अगर काउंटर में जल्द ही ओवरफ़्लो होने वाला है (ज़्यादा से ज़्यादा हर ~2^16 चरणों पर), तो एसओसी को चालू किया जा सकता है, ताकि ड्राइवर काउंटर को मैनेज कर सके.

इंटरैक्शन में बताया गया है कि जब यह सेंसर काम करता है, तब यह किसी दूसरे सेंसर में रुकावट नहीं डालता. खास तौर पर, ऐक्सिलरोमीटर में, जिसका इस्तेमाल किया जा सकता है.

अगर कोई डिवाइस इन मोड में काम नहीं कर सकता, तो HAL को इस सेंसर टाइप की जानकारी नहीं देनी चाहिए. इसका मतलब है कि HAL में इस सेंसर को "इम्यूलेट" नहीं किया जा सकता.

यह सेंसर कम पावर वाला होना चाहिए. इसका मतलब है कि अगर हार्डवेयर में स्टेप डिटेक्शन नहीं किया जा सकता, तो इस सेंसर को तय नहीं किया जाना चाहिए. खास तौर पर, जब स्टेप काउंटर चालू हो और एक्सलरोमीटर बंद हो, तो सिर्फ़ चरणों से इंटरप्ट ट्रिगर होने चाहिए (एक्सलरोमीटर डेटा से नहीं).

झुकने का पता लगाने वाला सेंसर

फ़िज़िकल सेंसर: एक्सलरोमीटर (+ कम बैटरी इस्तेमाल करने वाले अन्य सेंसर भी हो सकते हैं)

Reporting-mode: Special

बैटरी बचाने वाला मोड

इस सेंसर के सिर्फ़ वेक-अप वर्शन को लागू करें.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) वेक-अप सेंसर दिखाता है

झुकने का पता लगाने वाला सेंसर, हर बार झुकने का पता चलने पर एक इवेंट जनरेट करता है.

झुकने की गतिविधि का पता तब चलता है, जब सेंसर के चालू होने या सेंसर से जनरेट हुए पिछले इवेंट के बाद, दो सेकंड की विंडो के दौरान गुरुत्वाकर्षण की दिशा में कम से कम 35 डिग्री का बदलाव होता है. यहां एल्गोरिदम दिया गया है:

  • reference_estimated_gravity = ऐक्टिवेट होने के बाद पहले सेकंड में ऐक्सिलरोमीटर से मिली मेज़रमेंट वैल्यू का औसत या आखिरी बार डिवाइस के झुकने का इवेंट जनरेट होने पर अनुमानित ग्रेविटी.
  • current_estimated_gravity = पिछले दो सेकंड में ऐक्सिलरोमीटर से लिए गए मेज़रमेंट का औसत.
  • कब ट्रिगर होता है angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

फ़ोन के ओरिएंटेशन में बदलाव किए बिना, तेज़ी से होने वाले बड़े बदलावों से टिल्ट इवेंट ट्रिगर नहीं होना चाहिए. उदाहरण के लिए, कार चलाते समय अचानक मुड़ने या तेज़ी से ऐक्सलरेट करने पर, टिल्ट इवेंट ट्रिगर नहीं होना चाहिए. भले ही, ऐक्सलरेशन का औसत कोण 35 डिग्री से ज़्यादा हो. आम तौर पर, इस सेंसर को सिर्फ़ ऐक्सिलरोमीटर की मदद से लागू किया जाता है. अगर अन्य सेंसर से बैटरी की खपत ज़्यादा नहीं होती है, तो उनका इस्तेमाल भी किया जा सकता है. यह कम पावर वाला सेंसर है. इससे SoC को स्लीप मोड में जाने की अनुमति मिलनी चाहिए. HAL में इस सेंसर की नक़ल न बनाएँ. हर सेंसर इवेंट, 1 में sensors_event_t.data[0] की जानकारी देता है.

ऐटिट्यूड कंपोज़िट सेंसर

रोटेशन वेक्टर

फ़िज़िकल सेंसर: एक्सलरोमीटर, मैग्नेटोमीटर, और जाइरोस्कोप

Reporting-mode: Continuous

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 (रेडियन में)

हेडिंग में गड़बड़ी होने की दर estimated_accuracy 95% से कम होनी चाहिए. इस सेंसर को, ओरिएंटेशन में बदलाव के मुख्य इनपुट के तौर पर जायरोस्कोप का इस्तेमाल करना चाहिए.

यह सेंसर, जाइरोस्कोप के ड्रिफ़्ट को ठीक करने के लिए, ऐक्सलरोमीटर और मैग्नेटोमीटर के इनपुट का भी इस्तेमाल करता है. इसे सिर्फ़ ऐक्सलरोमीटर और मैग्नेटोमीटर का इस्तेमाल करके लागू नहीं किया जा सकता.

गेम रोटेशन वेक्टर

फ़िज़िकल सेंसर: एक्सलरोमीटर और जाइरोस्कोप (मैग्नेटोमीटर नहीं)

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) returns a non-wake-up sensor

गेम रोटेशन वेक्टर सेंसर, रोटेशन वेक्टर सेंसर की तरह ही होता है. हालांकि, यह जियोमैग्नेटिक फ़ील्ड का इस्तेमाल नहीं करता. इसलिए, Y ऐक्सिस उत्तर की ओर नहीं, बल्कि किसी अन्य दिशा की ओर इशारा करता है. इस रेफ़रंस को, Z ऐक्सिस के आस-पास घूमने वाले जायरोस्कोप के बराबर घूमने की अनुमति है.

sensors_event_t.data[0-3] को सेट करने के तरीके के बारे में ज़्यादा जानने के लिए, रोटेशन वेक्टर सेंसर देखें. यह सेंसर, अनुमानित हेडिंग की सटीक जानकारी नहीं देता: sensors_event_t.data[4] रिज़र्व है और इसे 0 पर सेट किया जाना चाहिए.

अगर किसी फ़ोन को घुमाकर वापस उसी दिशा में लाया जाता है, तो गेम रोटेशन वेक्टर को एक जैसा होना चाहिए.

यह सेंसर, जाइरोस्कोप और एक्सलरोमीटर पर आधारित होना चाहिए. यह मैग्नेटोमीटर का इस्तेमाल इनपुट के तौर पर नहीं कर सकता. हालांकि, यह जाइरोस्कोप के बायस का अनुमान लगाकर, परोक्ष रूप से मैग्नेटोमीटर का इस्तेमाल कर सकता है.

Gravity

फ़ोन में मौजूद सेंसर: एक्सलरोमीटर और (अगर मौजूद है, तो) जाइरोस्कोप (या अगर जाइरोस्कोप मौजूद नहीं है, तो मैग्नेटोमीटर)

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GRAVITY) returns a non-wake-up sensor

ग्रेविटी सेंसर, डिवाइस के कोऑर्डिनेट में ग्रेविटी की दिशा और मैग्नीट्यूड की जानकारी देता है.

ग्रैविटी वेक्टर कॉम्पोनेंट को m/s^2 में रिपोर्ट किया जाता है. ये कॉम्पोनेंट, sensors_event_t.acceleration के x, y, और z फ़ील्ड में मौजूद होते हैं.

जब डिवाइस स्थिर हो, तो ग्रेविटी सेंसर का आउटपुट, एक्सलरोमीटर के आउटपुट के जैसा ही होना चाहिए. धरती पर, इसकी वैल्यू करीब 9.8 मी॰/से॰^2 होती है.

अगर डिवाइस में जाइरोस्कोप है, तो ग्रेविटी सेंसर को इनपुट के तौर पर जाइरोस्कोप और एक्सलरोमीटर का इस्तेमाल करना चाहिए.

अगर डिवाइस में जाइरोस्कोप नहीं है, तो ग्रेविटी सेंसर को एक्सलरोमीटर और मैग्नेटोमीटर का इस्तेमाल इनपुट के तौर पर करना होगा.

जियोमैग्नेटिक रोटेशन वेक्टर

फ़िज़िकल सेंसर: एक्सलरोमीटर और मैग्नेटोमीटर (जाइरोस्कोप नहीं)

Reporting-mode: Continuous

बैटरी बचाने वाला मोड

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) returns a non-wake-up sensor

जियोमैग्नेटिक रोटेशन वेक्टर, रोटेशन वेक्टर सेंसर की तरह ही होता है. हालांकि, इसमें मैग्नेटोमीटर का इस्तेमाल किया जाता है और जाइरोस्कोप का इस्तेमाल नहीं किया जाता.

यह सेंसर, मैग्नेटोमीटर पर आधारित होना चाहिए. इसे जायरोस्कोप का इस्तेमाल करके लागू नहीं किया जा सकता. साथ ही, जायरोस्कोप के इनपुट का इस्तेमाल इस सेंसर के लिए नहीं किया जा सकता.

sensors_event_t.data[0-4] को सेट करने के तरीके के बारे में ज़्यादा जानने के लिए, रोटेशन वेक्टर सेंसर देखें.

रोटेशन वेक्टर सेंसर की तरह ही, हेडिंग में गड़बड़ी होने की दर 95% समय में अनुमानित सटीकता (sensors_event_t.data[4]) से कम होनी चाहिए.

यह सेंसर कम पावर वाला होना चाहिए, इसलिए इसे हार्डवेयर में लागू करना होगा.

ओरिएंटेशन (अब सेवा में नहीं है)

डिवाइस में मौजूद सेंसर: एक्सलरोमीटर, मैग्नेटोमीटर, और (अगर मौजूद है, तो) जाइरोस्कोप

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ORIENTATION) returns a non-wake-up sensor

ध्यान दें: यह एक पुराना सेंसर टाइप है, जिसे Android SDK में बंद कर दिया गया है. इसे रोटेशन वेक्टर सेंसर से बदल दिया गया है. इसे ज़्यादा साफ़ तौर पर परिभाषित किया गया है. जब भी हो सके, ओरिएंटेशन सेंसर के बजाय रोटेशन वेक्टर सेंसर का इस्तेमाल करें.

ओरिएंटेशन सेंसर, डिवाइस की दिशा के बारे में जानकारी देता है. मेज़रमेंट को sensors_event_t.orientation के x, y, और z फ़ील्ड में डिग्री में रिपोर्ट किया जाता है:

  • sensors_event_t.orientation.x: ऐज़िमथ, यह चुंबकीय उत्तर दिशा और Y ऐक्सिस के बीच का ऐंगल होता है. यह Z ऐक्सिस (0<=azimuth<360) के चारों ओर होता है. 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_* कॉन्स्टेंट देखें.

ऐसे सेंसर जिन्हें कैलिब्रेट नहीं किया गया है

कैलिब्रेट न किए गए सेंसर से, ज़्यादा रॉ डेटा मिलता है. इसमें कुछ पूर्वाग्रह शामिल हो सकते हैं. हालांकि, इसमें कैलिब्रेशन के ज़रिए किए गए सुधारों की वजह से "जंप" भी कम होते हैं. कुछ ऐप्लिकेशन, बिना कैलिब्रेट किए गए इन नतीजों को ज़्यादा सटीक और भरोसेमंद मान सकते हैं. उदाहरण के लिए, अगर कोई ऐप्लिकेशन खुद सेंसर फ़्यूज़न करने की कोशिश कर रहा है, तो कैलिब्रेशन करने से नतीजे खराब हो सकते हैं.

एक्सलरोमीटर कैलिब्रेट नहीं किया गया है

फ़िजिकल सेंसर: एक्सलरोमीटर

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) returns a non-wake-up sensor

कैलिब्रेट न किए गए एक्सलरोमीटर सेंसर से, डिवाइस के तीनों सेंसर ऐक्सिस के हिसाब से ऐक्सलरेशन की जानकारी मिलती है. इसमें किसी तरह का बायस करेक्शन नहीं किया जाता है. हालांकि, कैलिब्रेट न किए गए मेज़रमेंट पर फ़ैक्ट्री बायस और तापमान के असर को कम करने की सुविधा लागू होती है. साथ ही, इसमें बायस का अनुमान भी शामिल होता है. सभी वैल्यू, एसआई यूनिट (m/s^2) में होती हैं. इन्हें sensors_event_t.uncalibrated_accelerometer के फ़ील्ड में रिपोर्ट किया जाता है:

  • x_uncalib: X ऐक्सिस के हिसाब से ऐक्सलरेशन (बिना बायस कॉम्पन्सेशन के)
  • y_uncalib: Y ऐक्सिस पर ऐक्सलरेशन (बिना बायस कॉम्पन्सेशन के)
  • z_uncalib: Z ऐक्सिस के साथ ऐक्सलरेशन (बिना बायस कॉम्पेंसेशन के)
  • x_bias: X ऐक्सिस के हिसाब से अनुमानित पूर्वाग्रह
  • y_bias: Y ऐक्सिस के हिसाब से अनुमानित बायस
  • z_bias: Z ऐक्सिस के हिसाब से अनुमानित बायस

जाइरोस्कोप का कैलिब्रेट न किया गया डेटा

फ़िज़िकल सेंसर: जाइरोस्कोप

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) returns a non-wake-up sensor

कैलिब्रेट न किए गए जाइरोस्कोप से, सेंसर ऐक्सिस के चारों ओर घूमने की दर की जानकारी मिलती है. इसमें, बायस के असर को कम करने के लिए कोई बदलाव नहीं किया जाता. साथ ही, बायस का अनुमान भी मिलता है. सभी वैल्यू, रेडियन/सेकंड में होती हैं और इन्हें sensors_event_t.uncalibrated_gyro के फ़ील्ड में रिपोर्ट किया जाता है:

  • x_uncalib: X ऐक्सिस के चारों ओर ऐंगुलर स्पीड (ड्रिफ़्ट कंपनसेशन के बिना)
  • y_uncalib: Y ऐक्सिस के आस-पास ऐंगुलर स्पीड (ड्रिफ़्ट के असर को कम किए बिना)
  • z_uncalib: ऐंगुलर स्पीड (ड्रिफ़्ट कंपनसेशन के बिना) Z ऐक्सिस के आस-पास
  • x_bias: X ऐक्सिस के आस-पास अनुमानित ड्रिफ़्ट
  • y_bias: Y ऐक्सिस के आस-पास अनुमानित ड्रिफ़्ट
  • z_bias: Z ऐक्सिस के आस-पास अनुमानित ड्रिफ़्ट

सैद्धांतिक तौर पर, बिना कैलिब्रेट किए गए मेज़रमेंट का मतलब, कैलिब्रेट किए गए मेज़रमेंट और अनुमानित पूर्वाग्रह का योग होता है: _uncalibrated = _calibrated + _bias.

पूर्वाग्रह के अनुमान में बदलाव होने पर, x_bias, y_bias, और z_bias की वैल्यू में तुरंत बदलाव होना चाहिए. साथ ही, बाकी समय में ये वैल्यू स्थिर रहनी चाहिए.

इस्तेमाल किए गए कोऑर्डिनेट सिस्टम के बारे में जानने के लिए, जायरोस्कोप सेंसर की परिभाषा देखें.

मेज़रमेंट पर फ़ैक्ट्री कैलिब्रेशन और तापमान के असर को कम करने की सुविधा लागू होनी चाहिए. साथ ही, जायरोस्कोप के ड्रिफ़्ट का अनुमान लगाने की सुविधा लागू की जानी चाहिए, ताकि x_bias, y_bias, और z_bias में सही अनुमान रिपोर्ट किए जा सकें. अगर लागू करने वाला व्यक्ति, बदलाव का अनुमान नहीं लगा पाता है, तो इस सेंसर को लागू नहीं किया जाना चाहिए.

अगर यह सेंसर मौजूद है, तो इससे जुड़ा जायरोस्कोप सेंसर भी मौजूद होना चाहिए. साथ ही, दोनों सेंसर के लिए sensor_t.name और sensor_t.vendor की वैल्यू एक जैसी होनी चाहिए.

मैग्नेटिक फ़ील्ड को कैलिब्रेट नहीं किया गया है

फ़िज़िकल सेंसर: मैग्नेटोमीटर

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) returns a non-wake-up sensor

कैलिब्रेट नहीं किया गया मैग्नेटिक फ़ील्ड सेंसर, आस-पास के मैग्नेटिक फ़ील्ड की जानकारी देता है. साथ ही, हार्ड आयरन कैलिब्रेशन का अनुमान भी देता है. सभी वैल्यू माइक्रो-टेस्ला (uT) में होती हैं और इन्हें sensors_event_t.uncalibrated_magnetic फ़ील्ड में रिपोर्ट किया जाता है:

  • x_uncalib: X ऐक्सिस के साथ मैग्नेटिक फ़ील्ड (हार्ड-आयरन कंपनसेशन के बिना)
  • y_uncalib: मैग्नेटिक फ़ील्ड (हार्ड-आयरन कॉम्पेंसेशन के बिना) Y ऐक्सिस के साथ
  • z_uncalib: मैग्नेटिक फ़ील्ड (हार्ड-आयरन कॉम्पेंसेशन के बिना) Z ऐक्सिस के साथ
  • x_bias: X ऐक्सिस के साथ हार्ड-आयरन बायस का अनुमान
  • y_bias: Y ऐक्सिस के हिसाब से हार्ड-आयरन बायस का अनुमान
  • z_bias: Z ऐक्सिस के साथ अनुमानित हार्ड-आयरन बायस

सैद्धांतिक तौर पर, बिना कैलिब्रेट किए गए मेज़रमेंट का मतलब, कैलिब्रेट किए गए मेज़रमेंट और अनुमानित पूर्वाग्रह का योग होता है: _uncalibrated = _calibrated + _bias.

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

मेज़रमेंट पर, सॉफ्ट-आयरन कैलिब्रेशन और तापमान के असर को कम करने की सुविधा लागू होनी चाहिए. साथ ही, हार्ड-आयरन का अनुमान लगाने की सुविधा लागू की जानी चाहिए, ताकि x_bias, y_bias, और z_bias में सही अनुमान रिपोर्ट किए जा सकें. अगर लागू करने के दौरान, पूर्वाग्रह का अनुमान नहीं लगाया जा सकता, तो इस सेंसर को लागू नहीं किया जाना चाहिए.

अगर यह सेंसर मौजूद है, तो इससे जुड़ा मैग्नेटिक फ़ील्ड सेंसर भी मौजूद होना चाहिए. साथ ही, दोनों सेंसर के लिए sensor_t.name और sensor_t.vendor की वैल्यू एक ही होनी चाहिए.

हिंज का ऐंगल

Reporting-mode: On-change

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) returns a wake-up sensor

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

इंटरैक्शन कॉम्पोज़िट सेंसर

कुछ सेंसर का इस्तेमाल, मुख्य रूप से उपयोगकर्ता के साथ इंटरैक्शन का पता लगाने के लिए किया जाता है. हम यह तय नहीं करते कि उन सेंसर को कैसे लागू किया जाना चाहिए. हालांकि, वे कम पावर वाले होने चाहिए. साथ ही, डिवाइस बनाने वाली कंपनी की यह ज़िम्मेदारी है कि वह उपयोगकर्ता अनुभव के हिसाब से, उनकी क्वालिटी की पुष्टि करे.

डिवाइस को चालू करने के लिए हाथ का जेस्चर

फ़िजिकल सेंसर: तय नहीं किया गया (कम पावर वाला कोई भी सेंसर)

Reporting-mode: One-shot

बैटरी बचाने वाला मोड

इस सेंसर के सिर्फ़ वेक-अप वर्शन को लागू करें.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) वेक-अप सेंसर दिखाता है

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

यह सेंसर कम पावर वाला होना चाहिए, क्योंकि इसके 24 घंटे चालू रहने की संभावना होती है.

हर सेंसर इवेंट, sensors_event_t.data[0] में sensors_event_t.data[0] की जानकारी देता है.1

उठाने का जेस्चर

फ़िजिकल सेंसर: तय नहीं किया गया (कम पावर वाला कोई भी सेंसर)

Reporting-mode: One-shot

बैटरी बचाने वाला मोड

इस सेंसर के सिर्फ़ वेक-अप वर्शन को लागू करें.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) वेक-अप सेंसर दिखाता है

डिवाइस को उठाते ही, पिक-अप जेस्चर सेंसर चालू हो जाता है. इससे कोई फ़र्क़ नहीं पड़ता कि डिवाइस को कहां से उठाया गया है (डेस्क, जेब, बैग).

हर सेंसर इवेंट, sensors_event_t.data[0] में sensors_event_t.data[0] की जानकारी देता है.1

एक नज़र में देखने का जेस्चर

फ़िजिकल सेंसर: तय नहीं किया गया (कम पावर वाला कोई भी सेंसर)

Reporting-mode: One-shot

बैटरी बचाने वाला मोड

इस सेंसर के सिर्फ़ वेक-अप वर्शन को लागू करें.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) वेक-अप सेंसर दिखाता है

'एक नज़र' सुविधा के लिए जेस्चर सेंसर, स्क्रीन को कुछ समय के लिए चालू करता है. इससे उपयोगकर्ता को किसी खास मोशन के आधार पर, स्क्रीन पर मौजूद कॉन्टेंट को देखने में मदद मिलती है. इस सेंसर के ट्रिगर होने पर, डिवाइस कुछ समय के लिए स्क्रीन चालू कर देगा. इससे उपयोगकर्ता, डिवाइस के लॉक रहने पर भी सूचनाएं या अन्य कॉन्टेंट देख पाएंगे. इस दौरान, डिवाइस का इस्तेमाल नहीं किया जा सकेगा. इसके बाद, स्क्रीन फिर से बंद हो जाएगी. इस सुविधा (सेंसर के ट्रिगर होने पर, स्क्रीन के कुछ समय के लिए चालू होने) को उपयोगकर्ता, डिवाइस की सेटिंग में जाकर बंद कर सकता है. सेटिंग में बदलाव करने से, सेंसर के काम करने के तरीके पर कोई असर नहीं पड़ता. इससे सिर्फ़ यह तय होता है कि सेंसर के ट्रिगर होने पर, फ़्रेमवर्क कुछ समय के लिए स्क्रीन चालू करेगा या नहीं. इसमें, पता लगाए जाने वाले असली जेस्चर के बारे में नहीं बताया गया है. इसे डिवाइस बनाने वाली कंपनी चुन सकती है.

यह सेंसर कम पावर वाला होना चाहिए, क्योंकि इसके 24 घंटे चालू रहने की संभावना होती है. हर सेंसर इवेंट, 1 में sensors_event_t.data[0] की जानकारी देता है.

लिमिटेड ऐक्सिस वाले IMU सेंसर

Android 13 से उपलब्ध, सीमित ऐक्सिस वाले आईएमयू सेंसर ऐसे सेंसर होते हैं जो उन स्थितियों में काम करते हैं जहां तीनों ऐक्सिस (x, y, z) उपलब्ध नहीं होते हैं. Android में स्टैंडर्ड आईएमयू टाइप (जैसे कि SENSOR_TYPE_ACCELEROMETER और SENSOR_TYPE_GYROSCOPE) यह मानते हैं कि तीनों ऐक्सिस काम करते हैं. हालांकि, सभी डिवाइसों और फ़ॉर्म फ़ैक्टर में 3-ऐक्सिस एक्सलरोमीटर और 3-ऐक्सिस जाइरोस्कोप सेंसर की सुविधा नहीं होती.

एक्सलरोमीटर के सीमित ऐक्सिस

फ़िज़िकल सेंसर: एक्सलरोमीटर

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) returns a non-wake-up sensor

एक्सलरोमीटर के सीमित ऐक्सिस वाला सेंसर, TYPE_ACCELEROMETER के बराबर होता है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो ऐक्सिस काम नहीं करते.

सेंसर से रिपोर्ट की गई, सेंसर इवेंट की आखिरी तीन वैल्यू से पता चलता है कि x, y, और z ऐक्सिस के लिए ऐक्सलरेशन वैल्यू काम करती है या नहीं. 1.0 वैल्यू से पता चलता है कि ऐक्सिस काम करता है. वहीं, 0 वैल्यू से पता चलता है कि ऐक्सिस काम नहीं करता. डिवाइस बनाने वाली कंपनियां, डिवाइस बनाने के समय ही उन ऐक्सिस की पहचान कर लेती हैं जिन पर यह सुविधा काम करती है. साथ ही, रनटाइम के दौरान वैल्यू में बदलाव नहीं होता है.

डिवाइस बनाने वाली कंपनियों को, इस्तेमाल न किए गए ऐक्सिस के लिए ऐक्सलरेशन की वैल्यू को 0 पर सेट करना होगा. इसके बजाय, उन्हें ऐसी वैल्यू सेट नहीं करनी चाहिए जो तय न की गई हों.

जाइरोस्कोप की सीमित ऐक्सिस

फ़िजिकल सेंसर: जाइरोस्कोप

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) returns a non-wake-up sensor

जायरोस्कोप के सीमित ऐक्सिस वाला सेंसर, TYPE_GYROSCOPE के बराबर होता है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो ऐक्सिस काम नहीं करते.

सेंसर से रिपोर्ट की गई, सेंसर इवेंट की आखिरी तीन वैल्यू से पता चलता है कि x, y, और z ऐक्सिस के लिए कोणीय गति की वैल्यू काम करती है या नहीं. 1.0 वैल्यू से पता चलता है कि ऐक्सिस काम करता है. वहीं, 0 वैल्यू से पता चलता है कि ऐक्सिस काम नहीं करता. डिवाइस बनाने वाली कंपनियां, डिवाइस बनाने के समय ही उन ऐक्सिस की पहचान कर लेती हैं जिन पर यह सुविधा काम करती है. साथ ही, रनटाइम के दौरान वैल्यू में बदलाव नहीं होता है.

डिवाइस बनाने वाली कंपनियों को, इस्तेमाल न किए गए ऐक्सिस के लिए कोणीय गति की वैल्यू को 0 पर सेट करना होगा.

एक्सलरोमीटर के कुछ ऐक्सिस कैलिब्रेट नहीं किए गए हैं

फ़िज़िकल सेंसर: एक्सलरोमीटर

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

एक्सलरोमीटर के सीमित ऐक्सिस वाले अनकैलिब्रेटेड सेंसर का मतलब TYPE_ACCELEROMETER_UNCALIBRATED है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो ऐक्सिस काम नहीं करते.

सेंसर से रिपोर्ट की गई, सेंसर इवेंट की आखिरी तीन वैल्यू से पता चलता है कि x, y, और z ऐक्सिस के लिए, ऐक्सलरेशन और बायस वैल्यू काम करती हैं या नहीं. 1.0 वैल्यू से पता चलता है कि ऐक्सिस काम करता है. वहीं, 0 वैल्यू से पता चलता है कि ऐक्सिस काम नहीं करता. डिवाइस बनाने वाली कंपनियां, डिवाइस बनाने के समय ही उन ऐक्सिस की पहचान कर लेती हैं जिन पर यह सुविधा काम करती है. साथ ही, रनटाइम के दौरान वैल्यू में बदलाव नहीं होता है.

डिवाइस बनाने वाली कंपनियों को, इस्तेमाल न किए गए ऐक्सिस के लिए ऐक्सलरेशन और बायस वैल्यू को 0 पर सेट करना होगा.

जाइरोस्कोप के कुछ ऐक्सिस कैलिब्रेट नहीं किए गए हैं

फ़िजिकल सेंसर: जाइरोस्कोप

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

जायरोस्कोप के सीमित ऐक्सिस वाला अनकैलिब्रेटेड सेंसर, TYPE_GYROSCOPE_UNCALIBRATED के बराबर होता है. हालांकि, यह उन मामलों में काम करता है जहां एक या दो ऐक्सिस काम नहीं करते.

सेंसर से रिपोर्ट की गई, सेंसर इवेंट की आखिरी तीन वैल्यू से पता चलता है कि x, y, और z ऐक्सिस के लिए, कोणीय गति और ड्रिफ़्ट वैल्यू काम करती हैं या नहीं. 1.0 वैल्यू से पता चलता है कि ऐक्सिस काम करता है. वहीं, 0 वैल्यू से पता चलता है कि ऐक्सिस काम नहीं करता. डिवाइस बनाने वाली कंपनियां, डिवाइस बनाने के समय ही उन ऐक्सिस की पहचान कर लेती हैं जिन पर यह सुविधा काम करती है. साथ ही, रनटाइम के दौरान वैल्यू में बदलाव नहीं होता है.

डिवाइस बनाने वाली कंपनियों को, इस्तेमाल न किए गए ऐक्सिस के लिए कोणीय गति और ड्रिफ़्ट की वैल्यू को 0 पर सेट करना होगा.

कंपोज़िट लिमिटेड ऐक्सिस आईएमयू

फ़िजिकल सेंसर: 3-ऐक्सिस एक्सलरोमीटर, 3-ऐक्सिस जाइरोस्कोप, 3-ऐक्सिस एक्सलरोमीटर अनकैलिब्रेटेड, और 3-ऐक्सिस जाइरोस्कोप अनकैलिब्रेटेड सेंसर का कोई भी कॉम्बिनेशन.

Reporting-mode: Continuous

कंपोज़िट लिमिटेड ऐक्सिस आईएमयू सेंसर, लिमिटेड ऐक्सिस आईएमयू सेंसर के बराबर होता है. हालांकि, एचएएल पर काम करने के बजाय, यह 3-ऐक्सिस सेंसर के डेटा को लिमिटेड ऐक्सिस के बराबर के वैरिएंट में बदलता है. ये कंपोज़िट सेंसर, सिर्फ़ वाहन में लगे डिवाइसों के लिए चालू किए जाते हैं.

यहां दी गई टेबल में, स्टैंडर्ड 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

values[3]

लागू नहीं

1.0

values[4]

लागू नहीं

1.0

values[5]

लागू नहीं

1.0

ऑटोमोटिव सेंसर

ऑटोमोटिव से जुड़े इस्तेमाल के उदाहरणों के लिए सेंसर.

हेडिंग

फ़िजिकल सेंसर: जीपीएस, मैग्नेटोमीटर, एक्सलरोमीटर, और जाइरोस्कोप का कोई भी कॉम्बिनेशन.

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_HEADING) returns a non-wake-up sensor

हेडिंग सेंसर, Android 13 से उपलब्ध है. यह डिग्री में, उस दिशा को मेज़र करता है जिसमें डिवाइस, उत्तर की ओर इशारा कर रहा है. हेडिंग सेंसर में दो SensorEvent वैल्यू शामिल होती हैं. एक मेज़र किए गए डिवाइस के हेडिंग के लिए और दूसरा दी गई हेडिंग की वैल्यू की सटीकता के लिए.

इस सेंसर से रिपोर्ट की गई हेडिंग की वैल्यू, 0.0 (को मिलाकर) और 360.0 (को छोड़कर) के बीच होनी चाहिए. साथ ही, 0 का मतलब उत्तर, 90 का मतलब पूरब, 180 का मतलब दक्षिण, और 270 का मतलब पश्चिम होना चाहिए.

इस सेंसर की सटीकता को 68 प्रतिशत कॉन्फ़िडेंस लेवल पर तय किया गया है. अगर डिस्ट्रिब्यूशन, गॉसियन नॉर्मल है, तो सटीक वैल्यू, एक स्टैंडर्ड डेविएशन होती है. उदाहरण के लिए, अगर हेडिंग सेंसर, हेडिंग की वैल्यू 60 डिग्री और सटीक वैल्यू 10 डिग्री दिखाता है, तो इस बात की 68% संभावना है कि सही हेडिंग 50 डिग्री और 70 डिग्री के बीच हो.