सेंसर स्टैक

नीचे दिया गया डायग्राम, Android सेंसर स्टैक को दिखाता है. हर कॉम्पोनेंट यह सिर्फ़ इसके ऊपर और नीचे वाले कॉम्पोनेंट के साथ संपर्क करता है. हालांकि, कुछ सेंसर हब के मौजूद होने पर, सेंसर उसे बायपास कर सकते हैं. कंट्रोल फ़्लो को और सेंसर से लेकर सेंसर तक का डेटा का इस्तेमाल करें.

Android सेंसर स्टैक की लेयर और मालिक

पहला डायग्राम. Android सेंसर स्टैक की लेयर और उनसे जुड़े मालिक

SDK टूल

ऐप्लिकेशन, सेंसर SDK टूल (सॉफ़्टवेयर डेवलपमेंट किट) एपीआई की मदद से, सेंसर को ऐक्सेस करते हैं. SDK टूल में, उपलब्ध सेंसर की सूची बनाने और सेंसर.

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

  • उदाहरण के लिए, कोई ऐप्लिकेशन डिफ़ॉल्ट एक्सलरोमीटर पर रजिस्टर हो सकता है, 100 हर्ट्ज़ पर इवेंट के लिए अनुरोध करना. साथ ही, इवेंट को 1-सेकंड में रिपोर्ट करने की अनुमति देना इंतज़ार का समय.
  • ऐप्लिकेशन को एक्सलरोमीटर से इतने की दर पर इवेंट प्राप्त होंगे: कम से कम 100 हर्ट्ज़ और कभी-कभी एक सेकंड की देरी हो सकती है.

SDK टूल के बारे में ज़्यादा जानकारी के लिए, डेवलपर दस्तावेज़ देखें.

फ़्रेमवर्क

यह फ़्रेमवर्क, कई ऐप्लिकेशन को HAL से लिंक करने की ज़िम्मेदारी लेता है. एचएएल, सिंगल-क्लाइंट होता है. बिना किसी रुकावट के, घर पर फ़्रेमवर्क स्तर पर, केवल एक ही ऐप्लिकेशन किसी भी समय हर सेंसर को ऐक्सेस कर सकता है दिया गया समय.

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

मल्टीप्लेक्सिंग का असर

फ़्रेमवर्क में मल्टीप्लेक्सिंग लेयर की ज़रूरत से कुछ डिज़ाइन के बारे में पता चलता है तय करते हैं.

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

सेंसर फ़्यूज़न

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

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

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

हुड के अंतर्गत

इस सेक्शन में उन लोगों के बैकग्राउंड की जानकारी दी जाती है जो Android ओपन सोर्स प्रोजेक्ट (AOSP) फ़्रेमवर्क कोड. यह वेबसाइट काम की नहीं है हार्डवेयर मैन्युफ़ैक्चरर.

JNI

यह फ़्रेमवर्क, android.hardware से जुड़े Java नेटिव इंटरफ़ेस (जेएनआई) का इस्तेमाल करता है और frameworks/base/core/jni/ डायरेक्ट्री में मौजूद होता है. यह कोड, सेंसर हार्डवेयर का ऐक्सेस पाने के लिए, निचले लेवल का नेटिव कोड इस्तेमाल करें.

नेटिव फ़्रेमवर्क

नेटिव फ़्रेमवर्क frameworks/native/ में तय किया गया है और यह नेटिव यह android.hardware पैकेज के बराबर होता है. नेटिव फ़्रेमवर्क, सेंसर से जुड़ी सेवाएं.

बाइंडर आईपीसी

बाइंडर आईपीसी प्रॉक्सी, प्रोसेस की सीमाओं के अंदर बातचीत की सुविधा देते हैं.

HAL

सेंसर हार्डवेयर ऐब्स्ट्रैक्शन लेयर (HAL) API, हार्डवेयर ड्राइवर और Android फ़्रेमवर्क के बारे में बताया जाता है. इसमें एक HAL इंटरफ़ेस होता है सेंसर.h और एक HAL लागू करने के तरीके को हम सेंसर.cpp कहते हैं.

इंटरफ़ेस को Android और एओएसपी योगदान देने वाले लोग तय करते हैं और डिवाइस के निर्माता की ओर से लागू किया जाता है.

सेंसर HAL इंटरफ़ेस hardware/libhardware/include/hardware में मौजूद है. सेंसर.h देखें पर जाएं.

रिलीज़ साइकल

HAL लागू करने से यह तय होता है कि यह HAL इंटरफ़ेस के किस वर्शन का your_poll_device.common.version को सेट करके लागू किया जाता है. मौजूदा एचएएल इंटरफ़ेस वर्शन के बारे में सेंसर्स.h में बताया गया है और फ़ंक्शन उन वर्शन से जुड़े हुए हैं वर्शन हैं.

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

कर्नेल ड्राइवर

सेंसर ड्राइवर, डिवाइसों से इंटरैक्ट करते हैं. कुछ मामलों में, एचएएल और ड्राइवर एक ही सॉफ़्टवेयर इकाई हैं. अन्य मामलों में, हार्डवेयर इंटिग्रेटर, सेंसर चिप मैन्युफ़ैक्चरर से ड्राइवर ही होते हैं, लेकिन वे ही एचएएल को लागू करने वाले टूल बनाते हैं.

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

सेंसर हब

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

ध्यान दें: ContextHub की ऐसी नई सुविधाएं डेवलप करने के लिए नए सेंसर या एलईडी का इस्तेमाल करना है, तो आप Neonkey SensorHub को Hikey या Hikey960 डेवलपमेंट बोर्ड.

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

सेंसर हब को कैसे आर्किटेक्चर बनाया गया है और यह सेंसर के साथ कैसे संपर्क करता है और SoC (I2C बस, SPI बस, ...) की जानकारी Android ने नहीं दी है. हालांकि, इसे इससे बिजली की खपत को कम किया जा सकता है.

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

सेंसर

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

उनमें से कुछ चिप में, सामान्य कैलकुलेशन करने के लिए कुछ लॉजिक भी होता है, जैसे कि का इस्तेमाल मोशन डिटेक्शन, स्टेप डिटेक्शन, और 9-ऐक्सिस सेंसर फ़्यूज़न के तौर पर किया जाता है.

हालांकि CDD की क्षमता और सटीकता की आवश्यकताएं और सुझाव फ़िज़िकल सेंसर नहीं, बल्कि Android सेंसर का असर के लिए हम कई तरह के सेंसर इस्तेमाल कर सकते हैं. उदाहरण के लिए, गेम के सटीक होने से जुड़ी शर्त रोटेशन वेक्टर का असर फ़िज़िकल क्वेरी के लिए ज़रूरी सटीक होता है जाइरोस्कोप. यह डिवाइस बनाने वाली कंपनी पर निर्भर करता है कि फ़िज़िकल सेंसर.