सेंसर प्रकार

यह खंड सेंसर कुल्हाड़ियों, आधार सेंसर, और समग्र सेंसर (गतिविधि, रवैया, अनियंत्रित, और बातचीत) का वर्णन करता है।

सेंसर कुल्हाड़ियों

कई सेंसर से सेंसर घटना मान एक विशिष्ट फ्रेम में व्यक्त किए जाते हैं जो डिवाइस के सापेक्ष स्थिर होता है।

मोबाइल डिवाइस कुल्हाड़ियों

सेंसर एपीआई केवल स्क्रीन के प्राकृतिक अभिविन्यास के सापेक्ष है (डिवाइस के स्क्रीन अभिविन्यास में परिवर्तन होने पर कुल्हाड़ियों की अदला-बदली नहीं की जाती है।

मोबाइल उपकरणों के लिए सेंसर एपीआई की समन्वय प्रणाली

चित्रा 1. सेंसर एपीआई द्वारा उपयोग की जाने वाली समन्वय प्रणाली (मोबाइल डिवाइस के सापेक्ष)

मोटर वाहन कुल्हाड़ियों

एंड्रॉइड ऑटोमोटिव कार्यान्वयन में, कुल्हाड़ियों को वाहन बॉडी फ्रेम के संबंध में परिभाषित किया गया है। वाहन संदर्भ फ्रेम की उत्पत्ति रियर एक्सल का केंद्र है। वाहन संदर्भ फ्रेम उन्मुख है ताकि:

  • X-अक्ष दाईं ओर इंगित करता है और एक क्षैतिज तल पर है, जो समरूपता के वाहन तल के लंबवत है।
  • Y-अक्ष आगे की ओर इंगित करता है और एक क्षैतिज तल पर है।
ऑटोमोटिव उपकरणों के लिए सेंसर एपीआई की समन्वय प्रणाली

चित्रा 2. सेंसर एपीआई द्वारा उपयोग की जाने वाली समन्वय प्रणाली (ऑटोमोटिव डिवाइस के सापेक्ष)

वाहन संदर्भ फ्रेम एक दाहिने हाथ की समन्वय प्रणाली है। अतः Z-अक्ष ऊपर की ओर इंगित करता है।

संदर्भ फ़्रेम का Z-अक्ष गुरुत्वाकर्षण से संरेखित है, जिसका अर्थ है कि X-अक्ष और Y-अक्ष दोनों क्षैतिज हैं। नतीजतन, वाई-अक्ष हमेशा फ्रंट एक्सल से नहीं गुजर सकता है।

बेस सेंसर

बेस सेंसर प्रकारों का नाम उन भौतिक सेंसरों के नाम पर रखा गया है जिनका वे प्रतिनिधित्व करते हैं। ये सेंसर एक भौतिक सेंसर से डेटा रिले करते हैं (जैसा कि अन्य सेंसर से डेटा उत्पन्न करने वाले समग्र सेंसर के विपरीत)। बेस सेंसर प्रकारों के उदाहरणों में शामिल हैं:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

हालांकि, बेस सेंसर उनके अंतर्निहित भौतिक सेंसर के बराबर नहीं हैं और उन्हें भ्रमित नहीं किया जाना चाहिए। बेस सेंसर का डेटा भौतिक सेंसर का कच्चा आउटपुट नहीं है क्योंकि सुधार (जैसे पूर्वाग्रह मुआवजा और तापमान मुआवजा) लागू होते हैं।

उदाहरण के लिए, आधार सेंसर की विशेषताएं निम्नलिखित उपयोग के मामलों में इसके अंतर्निहित भौतिक सेंसर की विशेषताओं से भिन्न हो सकती हैं:

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

accelerometer

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) एक नॉन-वेक-अप सेंसर देता है

एक्सेलेरोमीटर सेंसर तीन सेंसर अक्षों के साथ डिवाइस के त्वरण की रिपोर्ट करता है। मापा त्वरण में भौतिक त्वरण (वेग में परिवर्तन) और गुरुत्वाकर्षण दोनों शामिल हैं। माप की रिपोर्ट sensor_event_t.acceleration के x, y और z फ़ील्ड में दी जाती है।

सभी मान SI इकाइयों (m/s^2) में हैं और डिवाइस के त्वरण को तीन सेंसर अक्षों के साथ गुरुत्वाकर्षण बल घटाकर मापते हैं।

यहाँ उदाहरण हैं:

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

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

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

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

जाइरोस्कोप

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) एक नॉन-वेक-अप सेंसर देता है

एक जाइरोस्कोप सेंसर तीन सेंसर अक्षों के आसपास डिवाइस के घूमने की दर की रिपोर्ट करता है।

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

sensors_event_t.gyro के x, y, और z फ़ील्ड में माप की सूचना दी गई है और सभी मान रेडियन प्रति सेकंड (रेड/एस) में हैं।

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

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

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

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

हृदय दर

रिपोर्टिंग-मोड: ऑन-चेंज

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) एक वेक-अप सेंसर लौटाता है

एक निकटता सेंसर सेंसर से निकटतम दृश्य सतह तक की दूरी की रिपोर्ट करता है।

एंड्रॉइड 4.4 तक, प्रॉक्सिमिटी सेंसर हमेशा वेक-अप सेंसर होते थे, जो निकटता में बदलाव का पता लगाने पर SoC को जगाते थे। एंड्रॉइड 4.4 के बाद, हम पहले इस सेंसर के वेक-अप संस्करण को लागू करने की सलाह देते हैं, क्योंकि यह वह है जिसका उपयोग फोन कॉल करते समय स्क्रीन को चालू और बंद करने के लिए किया जाता है।

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

दबाव

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_PRESSURE) एक नॉन-वेक-अप सेंसर देता है

एक दबाव संवेदक (जिसे बैरोमीटर भी कहा जाता है) हेक्टोपास्कल (एचपीए) में वायुमंडलीय दबाव की रिपोर्ट करता है।

रीडिंग का उपयोग करके कैलिब्रेट किया जाता है

  • तापमान प्रतिकरण
  • फैक्टरी पूर्वाग्रह अंशांकन
  • फ़ैक्टरी स्केल अंशांकन

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

सापेक्षिक आर्द्रता

रिपोर्टिंग-मोड: ऑन-चेंज

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) एक नॉन-वेक-अप सेंसर लौटाता है

एक सापेक्ष आर्द्रता सेंसर सापेक्ष परिवेशी वायु आर्द्रता को मापता है और प्रतिशत में मान देता है।

समग्र सेंसर प्रकार

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

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

निम्न तालिका उपलब्ध समग्र सेंसर प्रकारों को सूचीबद्ध करती है। प्रत्येक समग्र सेंसर एक या कई भौतिक सेंसर के डेटा पर निर्भर करता है। अनुमानित परिणामों के लिए अन्य अंतर्निहित भौतिक सेंसर चुनने से बचें क्योंकि वे खराब उपयोगकर्ता अनुभव प्रदान करते हैं।

सेंसर प्रकार श्रेणी अंतर्निहित भौतिक सेंसर रिपोर्टिंग मोड

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

रवैया

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

निरंतर

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

रवैया

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

निरंतर

नज़र इशारा लो पावर सेंसर

परस्पर क्रिया

अपरिभाषित

एक बार में

गुरुत्वाकर्षण

रवैया

एक्सेलेरोमीटर, जायरोस्कोप

निरंतर

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

अनकैलिब्रेटेड

जाइरोस्कोप

निरंतर

रैखिक त्वरण

गतिविधि

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

निरंतर

चुंबकीय क्षेत्र अनलिब्रेटेड

अनकैलिब्रेटेड

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

निरंतर

अभिविन्यास (बहिष्कृत)

रवैया

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

निरंतर

इशारा उठाओ लो पावर सेंसर

परस्पर क्रिया

अपरिभाषित

एक बार में

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

रवैया

एक्सेलेरोमीटर, मैग्नेटोमीटर, जायरोस्कोप

निरंतर

महत्वपूर्ण गति लो पावर सेंसर

गतिविधि

एक्सेलेरोमीटर (या बहुत कम शक्ति के रूप में दूसरा)

एक बार में

कदम काउंटर लो पावर सेंसर

गतिविधि

accelerometer

परिवर्तन पर

चरण डिटेक्टर लो पावर सेंसर

गतिविधि

accelerometer

विशेष

टिल्ट डिटेक्टर लो पावर सेंसर

गतिविधि

accelerometer

विशेष

जागो इशारा लो पावर सेंसर

परस्पर क्रिया

अपरिभाषित

एक बार में

लो पावर सेंसर = कम पावर सेंसर

गतिविधि समग्र सेंसर

रैखिक त्वरण

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

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) एक नॉन-वेक-अप सेंसर लौटाता है

एक रैखिक त्वरण सेंसर, गुरुत्वाकर्षण को शामिल नहीं करते हुए, सेंसर फ्रेम में डिवाइस के रैखिक त्वरण की रिपोर्ट करता है।

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

डिवाइस के स्थिर होने पर सभी अक्षों पर रीडिंग 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) एक वेक-अप सेंसर लौटाता है

टिल्ट डिटेक्टर हर बार टिल्ट इवेंट का पता चलने पर एक इवेंट जेनरेट करता है।

एक झुकाव घटना को 2-सेकंड विंडो औसत गुरुत्वाकर्षण की दिशा से परिभाषित किया गया है जो सक्रियण या सेंसर द्वारा उत्पन्न अंतिम घटना के बाद से कम से कम 35 डिग्री से बदल रहा है। यहाँ एल्गोरिथ्म है:

  • reference_estimated_gravity = सक्रियण के बाद पहले सेकंड में एक्सेलेरोमीटर माप का औसत या अंतिम झुकाव घटना उत्पन्न होने पर अनुमानित गुरुत्वाकर्षण।
  • current_estimated_gravity = पिछले 2 सेकंड में एक्सेलेरोमीटर माप का औसत।
  • ट्रिगर जब 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 आकाश की ओर इशारा करता है और जमीन के लंबवत है।

फ़ोन के निर्देशांक के साथ पूर्व-उत्तर-ऊपर निर्देशांक को संरेखित करने के लिए आवश्यक रोटेशन द्वारा फ़ोन के अभिविन्यास का प्रतिनिधित्व किया जाता है। यही है, रोटेशन को विश्व फ्रेम (एक्स, वाई, जेड) पर लागू करने से उन्हें फोन निर्देशांक (एक्स, वाई, जेड) के साथ संरेखित किया जाएगा।

संदर्भ (पूर्व-उत्तर-ऊपर संरेखित) डिवाइस ओरिएंटेशन से वर्तमान डिवाइस ओरिएंटेशन पर जाने के लिए रोटेशन को एक अक्ष 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 घूर्णन कोण है

quaternion एक इकाई quaternion है: यह मानक 1 का होना चाहिए। यह सुनिश्चित करने में विफलता के कारण ग्राहक का अनियमित व्यवहार होगा।

इसके अलावा, यह सेंसर अनुमानित शीर्षक सटीकता की रिपोर्ट करता है:

sensors_event_t.data[4] = estimated_accuracy (रेडियन में)

शीर्षक त्रुटि estimated_accuracy 95% समय से कम होनी चाहिए। इस सेंसर को मुख्य अभिविन्यास परिवर्तन इनपुट के रूप में जाइरोस्कोप का उपयोग करना चाहिए।

यह सेंसर जाइरोस्कोप बहाव के लिए एक्सेलेरोमीटर और मैग्नेटोमीटर इनपुट का भी उपयोग करता है, और इसे केवल एक्सेलेरोमीटर और मैग्नेटोमीटर का उपयोग करके लागू नहीं किया जा सकता है।

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

अंतर्निहित भौतिक सेंसर: एक्सेलेरोमीटर और जायरोस्कोप (कोई मैग्नेटोमीटर नहीं)

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) एक नॉन-वेक-अप सेंसर लौटाता है

एक गेम रोटेशन वेक्टर सेंसर एक रोटेशन वेक्टर सेंसर के समान है लेकिन भू-चुंबकीय क्षेत्र का उपयोग नहीं कर रहा है। इसलिए Y अक्ष उत्तर की ओर नहीं बल्कि किसी अन्य संदर्भ की ओर इशारा करता है। उस संदर्भ को परिमाण के उसी क्रम से बहाव करने की अनुमति है जैसे कि जाइरोस्कोप Z अक्ष के चारों ओर घूमता है।

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

एक आदर्श मामले में, एक फोन घुमाया जाता है और उसी वास्तविक दुनिया के उन्मुखीकरण पर वापस आ जाता है, उसी गेम रोटेशन वेक्टर की रिपोर्ट करनी चाहिए।

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

गुरुत्वाकर्षण

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

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_GRAVITY) एक नॉन-वेक-अप सेंसर देता है

एक गुरुत्वाकर्षण सेंसर डिवाइस के निर्देशांक में गुरुत्वाकर्षण की दिशा और परिमाण की रिपोर्ट करता है।

गुरुत्वाकर्षण वेक्टर घटकों को m/s^2 में sensors_event_t.acceleration के x, y, और z फ़ील्ड में सूचित किया जाता है।

जब डिवाइस आराम पर होता है, तो गुरुत्वाकर्षण सेंसर का आउटपुट एक्सेलेरोमीटर के समान होना चाहिए। पृथ्वी पर, परिमाण लगभग 9.8 m/s^2 है।

यदि डिवाइस में जाइरोस्कोप है, तो गुरुत्वाकर्षण सेंसर को इनपुट के रूप में जाइरोस्कोप और एक्सेलेरोमीटर का उपयोग करना चाहिए।

यदि डिवाइस में जाइरोस्कोप नहीं है, तो गुरुत्वाकर्षण सेंसर को इनपुट के रूप में एक्सेलेरोमीटर और मैग्नेटोमीटर का उपयोग करना चाहिए।

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

अंतर्निहित भौतिक सेंसर: एक्सेलेरोमीटर और मैग्नेटोमीटर (कोई गायरोस्कोप नहीं)

रिपोर्टिंग-मोड: सतत

कम बिजली

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) एक नॉन-वेक-अप सेंसर लौटाता है

एक भू-चुंबकीय रोटेशन वेक्टर एक रोटेशन वेक्टर सेंसर के समान होता है लेकिन एक मैग्नेटोमीटर का उपयोग करता है और कोई गायरोस्कोप नहीं होता है।

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

sensors_event_t.data[0-4] सेट करने के तरीके के विवरण के लिए रोटेशन वेक्टर सेंसर देखें।

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

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

अभिविन्यास (बहिष्कृत)

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

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_ORIENTATION) एक नॉन-वेक-अप सेंसर देता है

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

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

  • sensors_event_t.orientation.x : azimuth, चुंबकीय उत्तर दिशा और Y अक्ष के बीच का कोण, Z अक्ष के चारों ओर ( 0<=azimuth<360 )। 0=उत्तर, 90=पूर्व, 180=दक्षिण, 270=पश्चिम।
  • sensors_event_t.orientation.y : पिच, एक्स अक्ष के चारों ओर रोटेशन ( -180<=pitch<=180 ), सकारात्मक मूल्यों के साथ जब Z अक्ष Y अक्ष की ओर बढ़ता है।
  • sensors_event_t.orientation.z : रोल, वाई अक्ष के चारों ओर रोटेशन ( -90<=roll<=90 ), सकारात्मक मूल्यों के साथ जब एक्स अक्ष जेड अक्ष की ओर बढ़ता है।

कृपया ध्यान दें, ऐतिहासिक कारणों से दक्षिणावर्त दिशा में रोल कोण सकारात्मक है। (गणित की दृष्टि से, यह वामावर्त दिशा में सकारात्मक होना चाहिए):

किसी उपकरण के सापेक्ष अभिविन्यास का चित्रण

चित्रा 3. एक डिवाइस के सापेक्ष अभिविन्यास

यह परिभाषा उड्डयन में इस्तेमाल होने वाले यॉ, पिच और रोल से अलग है जहां एक्स अक्ष विमान के लंबे किनारे (पूंछ से नाक) के साथ है।

ओरिएंटेशन सेंसर यह भी रिपोर्ट करता है कि वह sensors_event_t.orientation.status के माध्यम से अपने रीडिंग के कितने सटीक होने की उम्मीद करता है। इस क्षेत्र के संभावित मानों के बारे में अधिक जानकारी के लिए SensorManager का SENSOR_STATUS_* स्थिरांक देखें।

बिना कैलिब्रेटेड सेंसर

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

एक्सेलेरोमीटर अनलिब्रेटेड

अंतर्निहित भौतिक सेंसर: एक्सेलेरोमीटर

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) एक नॉन-वेक-अप सेंसर देता है

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

  • x_uncalib : एक्स अक्ष के साथ त्वरण (पूर्वाग्रह मुआवजे के बिना)
  • y_uncalib : Y अक्ष के साथ त्वरण (पूर्वाग्रह मुआवजे के बिना)
  • z_uncalib : Z अक्ष के साथ त्वरण (पूर्वाग्रह क्षतिपूर्ति के बिना)
  • x_bias : एक्स अक्ष के साथ अनुमानित पूर्वाग्रह
  • y_bias : Y अक्ष के साथ अनुमानित पूर्वाग्रह
  • z_bias : Z अक्ष के साथ अनुमानित पूर्वाग्रह

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

अंतर्निहित भौतिक सेंसर: Gyroscope

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) एक नॉन-वेक-अप सेंसर देता है

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

  • x_uncalib : एक्स अक्ष के चारों ओर कोणीय गति (बहाव मुआवजे के बिना)
  • y_uncalib : Y अक्ष के चारों ओर कोणीय गति (बहाव मुआवजे के बिना)
  • z_uncalib : Z अक्ष के चारों ओर कोणीय गति (बहाव क्षतिपूर्ति के बिना)
  • x_bias : एक्स अक्ष के चारों ओर अनुमानित बहाव
  • 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 मान साझा करना चाहिए।

चुंबकीय क्षेत्र अनलिब्रेटेड

अंतर्निहित भौतिक सेंसर: मैग्नेटोमीटर

रिपोर्टिंग-मोड: सतत

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) एक नॉन-वेक-अप सेंसर देता है

एक बिना कैलिब्रेटेड चुंबकीय क्षेत्र सेंसर एक कठोर लोहे के अंशांकन अनुमान के साथ परिवेश चुंबकीय क्षेत्र की रिपोर्ट करता है। सभी मान माइक्रो-टेस्ला (यूटी) में हैं और sensors_event_t.uncalibrated_magnetic के क्षेत्रों में रिपोर्ट किए गए हैं:

  • x_uncalib : X अक्ष के साथ चुंबकीय क्षेत्र (हार्ड-आयरन क्षतिपूर्ति के बिना)
  • y_uncalib : Y अक्ष के साथ चुंबकीय क्षेत्र (हार्ड-आयरन क्षतिपूर्ति के बिना)
  • z_uncalib : Z अक्ष के साथ चुंबकीय क्षेत्र (कठोर-लौह मुआवजे के बिना)
  • x_bias : एक्स अक्ष के साथ अनुमानित हार्ड-आयरन पूर्वाग्रह
  • 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 मान साझा करना चाहिए।

काज कोण

रिपोर्टिंग-मोड: ऑन-चेंज

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) एक वेक-अप सेंसर लौटाता है

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

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

कुछ सेंसर का उपयोग ज्यादातर उपयोगकर्ता के साथ बातचीत का पता लगाने के लिए किया जाता है। We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.

Wake up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .

Limited axes IMU sensors

Available from Android 13, limited axes IMU sensors are sensors that support use cases where not all three axes (x, y, z) are available. Standard IMU types in Android (such as SENSOR_TYPE_ACCELEROMETER and SENSOR_TYPE_GYROSCOPE ) assume that all three axes are supported. However, not all form factors and devices support 3-axis accelerometers and 3-axis gyroscopes.

Accelerometer limited axes

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

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

An accelerometer limited axes sensor is equivalent to TYPE_ACCELEROMETER but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration values for unused axes to 0 , instead of having undefined values.

Gyroscope limited axes

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

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

A gyroscope limited axes sensor is equivalent to TYPE_GYROSCOPE but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed values for unused axes to 0 .

Accelerometer limited axes uncalibrated

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

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

An accelerometer limited axes uncalibrated sensor is equivalent to TYPE_ACCELEROMETER_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration and bias values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration and bias values for unused axes to 0 .

Gyroscope limited axes uncalibrated

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

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

A gyroscope limited axes uncalibrated sensor is equivalent to TYPE_GYROSCOPE_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed and drift values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed and drift values for unused axes to 0 .

Composite limited axes IMU

Underlying physical sensors: Any combination of 3-axis accelerometer, 3-axis gyroscope, 3-axis accelerometer uncalibrated, and 3-axis gyroscope uncalibrated sensors.

Reporting-mode: Continuous

A composite limited axes IMU sensor is equivalent to a limited axes IMU sensor but instead of being supported at the HAL, it converts the 3-axis sensor data into the equivalent limited axes variants. These composite sensors are only enabled for automotive devices.

The following table shows an example conversion from a standard 3-axis accelerometer to a composite limited axes accelerometer.

SensorEvent Values for SENSOR_TYPE_ACCELEROMETER Example SENSOR_TYPE_ACCELEROMETER SensorEvent Composite 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]

N/A

1.0

values[4]

N/A

1.0

values[5]

N/A

1.0

Automotive sensors

Sensors to support automotive use cases.

Heading

Underlying physical sensors: Any combination of GPS, magnetometer, accelerometer, and gyroscope.

Reporting-mode: Continuous

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

Available from Android 13, a heading sensor measures the direction in which the device is pointing relative to true north in degrees. The heading sensor includes two SensorEvent values. One for the measured device heading and one for the accuracy of the provided heading value.

Heading values reported by this sensor must be between 0.0 (inclusive) and 360.0 (exclusive), with 0 indicating north, 90 east, 180 south, and 270 west.

Accuracy for this sensor is defined at 68 percent confidence. In the case where the underlying distribution is Gaussian normal, the accuracy is one standard deviation. For example, if the heading sensor returns a heading value of 60 degrees and an accuracy value of 10 degrees, there's a 68 percent probability of the true heading being between 50 degrees and 70 degrees.