एचएएल वर्शन का दिखना बंद हो गया है

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 आर्ग्युमेंट.