Android की L रिलीज़ में, हम कुछ सेंसर एचएएल के लिए काम करना रोक रहे हैं
वर्शन हैं. सिर्फ़ SENSORS_DEVICE_API_VERSION_1_0
और SENSORS_DEVICE_API_VERSION_1_3
वर्शन इस्तेमाल किए जा सकते हैं.
अगली रिलीज़ में, हम 1_0 के लिए भी सहायता देना बंद कर सकते हैं.
1_0 में बैच बनाने का कोई सिद्धांत नहीं है. यदि संभव हो, तो 1_0 का उपयोग करने वाले सभी डिवाइसों को होना चाहिए 1_3 पर अपग्रेड करें.
1_1 और 1_2 में बैच बनाने का सिद्धांत सही नहीं है. अब और समर्थित नहीं
फ़िलहाल, 1_1 या 1_2 का इस्तेमाल करने वाले सभी डिवाइसों को 1_3 में अपग्रेड करना होगा.
साल 1_3 में, हमने बैच बनाने की प्रोसेस को आसान बनाया और सेंसर.
1_3 में अपग्रेड करने के लिए, नीचे दिए गए बदलावों को फ़ॉलो करें.
बैच फ़ंक्शन लागू करना
भले ही आप बैचिंग लागू न करते हों (आपके हार्डवेयर में एफ़आईएफ़ओ नहीं है), तो आपको
batch
फ़ंक्शन लागू करें. batch
का इस्तेमाल सेट करने के लिए किया जाता है
किसी सेंसर के लिए, सैंपलिंग की अवधि और रिपोर्टिंग में लगने वाला ज़्यादा से ज़्यादा समय. यह
setDelay
की जगह लेता है. setDelay
पर कॉल नहीं किया जाएगा
और नहीं.
अगर बैच बनाने की सुविधा लागू नहीं की जाती है, तो batch
को
दिए गए विकल्पों के साथ, आपके मौजूदा setDelay
फ़ंक्शन को कॉल किया जा सकता है
sampling_period_ns
पैरामीटर.
फ़्लश फ़ंक्शन लागू करें
भले ही आप बैचिंग लागू न करें, आपको
flush
फ़ंक्शन का इस्तेमाल करना होगा.
अगर बैच बनाने की सुविधा लागू नहीं की जाती है, तो flush
को एक जनरेट करना होगा
META_DATA_FLUSH_COMPLETE
इवेंट और 0 रिटर्न (हो गया).
अपना सेंसर_poll_device_t.common.version बदलें
your_poll_device.common.version = SENSORS_DEVICE_API_VERSION_1_3
अपने सेंसर की परिभाषा में नए फ़ील्ड जोड़ें
सामान्य sensor_t के अलावा, हर सेंसर को तय करते समय फ़ील्ड:
.name = "My magnetic field Sensor", .vendor = "My company", .version = 1, .handle = mag_handle, .type = SENSOR_TYPE_MAGNETIC_FIELD, .maxRange = 200.0f, .resolution = CONVERT_M, .power = 5.0f, .minDelay = 16667,
आपको 1_0 और 1_3 के बीच परिभाषित नए फ़ील्ड भी सेट करने होंगे:
.fifoReservedEventCount = 0, .fifoMaxEventCount = 0, .stringType = 0, .requiredPermission = 0, .maxDelay = 200000 .flags = SENSOR_FLAG_CONTINUOUS_MODE,
fifo ReservedEventCount: अगर बैच बनाने की सुविधा लागू नहीं की जा रही है, तो इसे 0 पर सेट करें.
fifoMaxEventCount: अगर बैचिंग लागू नहीं की जा रही है, तो इसे 0 पर सेट करें
stringType: सभी आधिकारिक Android सेंसर के लिए 0 पर सेट करें (जिनके बारे में सेंसर.h) मान लेते हैं, क्योंकि यह मान फ़्रेमवर्क से बदल जाएगा. इसके लिए गैर-आधिकारिक सेंसर, इसके लिए sensor_t देखें उसे सेट करने के बारे में विवरण देखें.
ज़रूरीअनुमति: यह वह अनुमति है जिसे पाने के लिए ऐप्लिकेशन की ज़रूरत होगी
सेंसर को ऐक्सेस कर सकें. आम तौर पर, सभी सेंसर के लिए इसे 0 पर सेट किया जा सकता है,
लेकिन HEART_RATE
टाइप वाले सेंसर को इसे SENSOR_PERMISSION_BODY_SENSORS.
पर सेट करना होगा
maxदे: यह वैल्यू अहम है और आपको इसे यहां दिए गए नियमों के मुताबिक सेट करना होगा: सेंसर और उसके ड्राइवर की क्षमताओं को पूरा करता है.
यह वैल्यू सिर्फ़ लगातार बदलने वाले और समय-समय पर बदलते सेंसर के लिए तय की जाती है. यह है
इस समय की सबसे कम फ़्रीक्वेंसी से जुड़े दो सेंसर इवेंट के बीच की देरी
सेंसर काम करता है. जब कम फ़्रीक्वेंसी को
batch
फ़ंक्शन का इस्तेमाल किया जा रहा है, इसलिए इवेंट इस फ़्रीक्वेंसी के आधार पर जनरेट होंगे
आज़माएं. इसका इस्तेमाल फ़्रेमवर्क या ऐप्लिकेशन यह अनुमान लगाने के लिए कर सकते हैं कि
हो सकता है कि एफ़आईएफ़ओ का बैच पूरा न हो. अगर यह वैल्यू ठीक से सेट नहीं की गई है, तो सीटीएस काम नहीं करेगा.
एक शॉट और खास रिपोर्टिंग मोड वाले सेंसर के लिए, maxDelay
को 0 पर सेट करें.
लगातार सेंसर के लिए, इसे इतने समय में सेट करें कि सैंपलिंग ज़्यादा से ज़्यादा इतनी अवधि की हो माइक्रोसेकंड.
period_ns
, maxDelay
, और minDelay
के लिए ये शर्तें लागू होती हैं:
period_ns
नैनोसेकंड में है जबकिmaxDelay
/minDelay
माइक्रोसेकंड में हैं.maxDelay
हमेशा 32-बिट वाले पूर्णांक में फ़िट होना चाहिए. यह को 64-बिट आर्किटेक्चर पर 64-बिट के तौर पर एलान किया जाता है, क्योंकि यह सिर्फ़ बाइनरी कंपैटबिलिटी की वजहों से होता है.
फ़्लैग: यह फ़ील्ड सेंसर के रिपोर्टिंग मोड के बारे में बताता है. साथ ही, यह भी बताता है कि सेंसर जगाने वाला सेंसर है.
अगर बैच बनाने की प्रोसेस लागू नहीं की जाती है और सिर्फ़ 1.0 से 1.3 में स्विच किया जा रहा है, तो इसे सेट करें यहां तक:
वन-शॉट के लिए SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE
सेंसर
लगातार के लिए SENSOR_FLAG_CONTINUOUS_MODE
बदलाव के लिए SENSOR_FLAG_ON_CHANGE_MODE
सेंसर
सेंसर के अलावा, निकटता के अलावा
खास वाले सेंसर के लिए SENSOR_FLAG_SPECIAL_REPORTING_MODE
सिर्फ़ झुकाने वाला रिपोर्टिंग मोड
डिटेक्टर.
निकटता सेंसर और Android के आधिकारिक टिल्ट डिटेक्टर सेंसर के लिए, SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ON_CHANGE_MODE
.
1_1 या 1_2 से अपग्रेड करते समय नोट
- अब
batch
फ़ंक्शन करीब-करीब हमेशा काम करता है. यहां तक कि ऐसे सेंसर के लिए भी काम नहीं करता जो बैच बनाने की सुविधा. यह टाइम आउट आर्ग्युमेंट की वैल्यू पर निर्भर नहीं करती है. सिर्फ़ केस जहांbatch
फ़ंक्शन विफल हो सकता है, आंतरिक गड़बड़ियां होती हैं याsensor_handle,
या नेगेटिवsampling_period_ns
या नेगेटिवmax_report_latency_ns
. - कोई सेंसर, बैच बनाने की सुविधा देता है या नहीं, यह इस बात से तय होता है कि उसमें
fifoMaxEventCount
0 से ज़्यादा. (पिछले वर्शन में, यह थाbatch()
की रिटर्न वैल्यू के आधार पर.) - बैच में काम करने वाले सेंसर हमेशा “बैच” में मौजूद होते हैं
पिछले वर्शन में मोड” चुना था:
max_report_latency_ns
पैरामीटर 0 होने पर भी, सेंसर को बैच में होना चाहिए. इसका मतलब है कि इवेंट जब SoC सस्पेंड मोड में जाता है, तब उसे FIFO में सेव किया जाता है. -
batch
फ़ंक्शन काflags
पैरामीटर यह है अब उसका इस्तेमाल नहीं किया जा सकता.DRY_RUN
औरWAKE_UPON_FIFO_FULL
दोनों अब काम नहीं करते हैं और इन्हें कभी भीbatch
फ़ंक्शन में पास नहीं किया जाएगा. - बैच टाइम आउट तर्क को अब
max_report_latency
आर्ग्युमेंट.