सेंसर मल्टी-एचएएल एक फ़्रेमवर्क है, जिससे सेंसर एचएएल को साथ-साथ चलाया जा सकता है अन्य सेंसर एचएएल. मल्टी-एचएएल वाले सेंसर, सेंसर सब-एचएएल को डाइनैमिक तौर पर लोड करते हैं इसे वेंडर पार्टिशन पर डाइनैमिक लाइब्रेरी के तौर पर सेव किया जाता है और उन्हें कॉलबैक किया जाता है ऑब्जेक्ट जो इवेंट पोस्ट करने और वेक लॉक को पाने और छोड़ने के काम को मैनेज कर सकता है. सेंसर सब-एचएएल एक सेंसर एचएएल होता है, जो वेंडर पार्टीशन और इसका इस्तेमाल मल्टी-एचएएल फ़्रेमवर्क में किया जाता है. ये सब-एचएएल, एक दूसरे पर या मुख्य फ़ंक्शन वाले मल्टी-एचएएल कोड पर निर्भर होते हैं प्रक्रिया को ट्रैक करने के लिए.
मल्टी-HAL 2.1 सेंसर वाले मल्टी-एचएएल 2.1, Android वर्शन वाले डिवाइसों पर उपलब्ध हैं 11 या उससे ज़्यादा, मल्टी-एचएएल 2.0 वाले सेंसर की फिर से समीक्षा, जो ऐसे सब-एचएएल को लोड करने की सुविधा देते हैं जो डेटा को सार्वजनिक कर हिंज ऐंगल सेंसर टाइप. इस तरह के सेंसर के साथ काम करने के लिए, सब-एचएएल को सब-एचएएल एपीआई का इस्तेमाल करना होगा में परिभाषित किया गया है 2.1 SubHal हेडर.
Android 13 या उसके बाद के वर्शन वाले उन डिवाइसों के लिए जो सेंसर एआईडीएल एचएएल में, आप मल्टी-HAL क्षमता की अनुमति देने के लिए मल्टी-HAL शिम लेयर. लागू करने से जुड़ी जानकारी के लिए, देखें सेंसर एआईडीएल एचएएल के साथ सेंसर मल्टी-एचएएल का इस्तेमाल करना.
सेंसर मल्टी-एचएएल 2 और सेंसर HAL 2 के बीच अंतर
मल्टी-HAL 2 के सेंसर, Android वर्शन वाले डिवाइसों पर उपलब्ध हैं
10 या उससे ज़्यादा,
सेंसर एचएएल के बारे में कई तरह की जानकारी देता है
2 आसान बनाने के लिए
एचएएल एपीआई के साथ इंटरैक्ट करने के लिए. मल्टी-एचएएल 2 सेंसर की जानकारी
हैलप्रॉक्सी
क्लास का इस्तेमाल करें, ताकि सेंसर HAL 2 इंटरफ़ेस और
V2_1/SubHal
(या
V2_0/SubHal
)
ऐसा इंटरफ़ेस जो HalProxy
को सब-एचएएल के साथ इंटरैक्ट करने की अनुमति देता है.
ISensorsSubHal
का इंटरफ़ेस
2.1/ISensors.hal
(या
2.0/ISensors.hal
)
नए तरीकों से इंटरफ़ेस में हैं:
- शुरू करने का तरीका
IHalProxyCallback
को पार करता है क्लास के बजाय एफ़एमक्यू औरISensorsCallback
का इस्तेमाल करें. - डीबग की सुविधा के लिए, सब-एचएएल को डीबग फ़ंक्शन लागू करना होगा गड़बड़ी की रिपोर्ट में दी गई जानकारी.
- सब-एचएएल को एक नाम फ़ंक्शन लागू करना होगा, ताकि लोड किए गए सब-एचएएल को ये अन्य सब-एचएएल से अलग होते हैं.
सेंसर मल्टी-एचएएल 2 और सेंसर HAL 2 के बीच मुख्य अंतर
फ़ंक्शन शुरू करें. एफ़एमक्यू उपलब्ध कराने के बजाय, IHalProxyCallback
इंटरफ़ेस में सेंसर पर सेंसर इवेंट पोस्ट करने के दो तरीके दिए जाते हैं.
फ़्रेमवर्क और वेक लॉक के लिए एक तरीका है. हुड के नीचे, सेंसर
मल्टी-एचएएल, एफ़एमक्यू के साथ होने वाले सभी इंटरैक्शन को मैनेज करता है, ताकि आपको सही समय पर
सभी सब-एचएएल के लिए सेंसर इवेंट. यह सुझाव दिया जाता है कि सब-एचएएल,
वेक लॉक की सुविधा के इस्तेमाल में लगने वाले समय को अपने हिसाब से मैनेज करने का createScopedWakelock
तरीका
सेंसर मल्टी-एचएएल का इस्तेमाल करें और वेक लॉक के इस्तेमाल को एक ही वेक लॉक में बदलें
यह सुविधा सभी सेंसर मल्टी-एचएएल के लिए काम करती है. इससे कॉल लॉक और अनलॉक होने की आशंका कम हो जाती है.
मल्टी-एचएएल 2 सेंसर में पहले से ही सुरक्षा की कुछ सुविधाएं पहले से मौजूद होती हैं. यह हैंडल करता है
ऐसी स्थितियां जिनमें एफ़एमक्यू सेंसर भर गया हो या Android सेंसर फ़्रेमवर्क
रीस्टार्ट होता है और सेंसर की स्थिति को रीसेट करने की ज़रूरत होती है. साथ ही, जब इवेंट
HalProxy
क्लास में पोस्ट किया गया, लेकिन सेंसर फ़्रेमवर्क स्वीकार नहीं किया जा सका
इवेंट को तुरंत दिखाने के लिए, सेंसर मल्टी-एचएएल इवेंट को बैकग्राउंड में मूव कर सकते हैं
सभी सब-एचएएल पर काम जारी रखने के लिए थ्रेड का इस्तेमाल करें.
पोस्ट करने के लिए है.
सोर्स कोड और रेफ़रंस फ़ाइल को लागू करना
सभी सेंसर का मल्टी-एचएएल कोड इसमें उपलब्ध है
hardware/interfaces/sensors/common/default/2.X/multihal/
.
यहां कुछ संसाधनों के लिए पॉइंटर दिए गए हैं.
HalProxy.h
:HalProxy
ऑब्जेक्ट, सेंसर मल्टी-HAL से इंस्टैंशिएट किया जाता है और सब-एचएएल से सेंसर फ़्रेमवर्क में डेटा पास करना.HalProxy.cpp
:HalProxy
को लागू करने के तरीके में वे सभी लॉजिक शामिल हैं जो सब-एचएएल और सेंसर फ़्रेमवर्क के बीच मल्टीप्लेक्स कम्यूनिकेशन.SubHal.h
:ISensorsSubHal
इंटरफ़ेस ऐसा इंटरफ़ेस तय करता है जिसे सब-एचएएल कोHalProxy
के साथ संगत होने के लिए अनुसरण करें. सब-एचएएल, तरीका शुरू करें, ताकिHalProxyCallback
ऑब्जेक्ट का इस्तेमालpostEvents
औरcreateScopedWakelock
.मल्टी-एचएएल 2.0 लागू करने के लिए, इसके वर्शन 2.0 का इस्तेमाल करें
SubHal.h
.hardware/interfaces/sensors/common/default/2.X/multihal/tests/
: इन यूनिट टेस्ट सेHalProxy
के लागू होने की पुष्टि होती है.hardware/interfaces/sensors/common/default/2.X/multihal/tests/fake_subhal/
: सब-एचएएल लागू करने के इस उदाहरण में, नकली सेंसर का इस्तेमाल करके नकली सेंसर का इस्तेमाल किया गया डेटा शामिल है. इस सुविधा से यह पता लगाने में मदद मिलती है कि किसी डिवाइस पर एक से ज़्यादा सब-एचएएल कैसे इंटरैक्ट करते हैं.
लागू करना
इस सेक्शन में, सेंसर मल्टी-एचएएल को इन तरीकों से लागू करने का तरीका बताया गया है: स्थितियां:
- सेंसर एआईडीएल एचएएल के साथ सेंसर मल्टी-एचएएल का इस्तेमाल करना
- सेंसर मल्टी-एचएएल 2.1 को लागू करना
- सेंसर मल्टी-एचएएल 2.0 से मल्टी-एचएएल 2.1 में पोर्ट करना
- सेंसर के HAL 2.0 से पोर्ट करना
- सेंसर के HAL 1.0 से पोर्ट करना
- सेंसर मल्टी-एचएएल 1.0 से पोर्ट करना
सेंसर एआईडीएल एचएएल के साथ सेंसर मल्टी-एचएएल का इस्तेमाल करें
सेंसर एआईडीएल एचएएल के साथ मल्टी-एचएएल क्षमता की अनुमति देने के लिए, एआईडीएल इंपोर्ट करें मल्टी-एचएएल शिम लेयर मॉड्यूल, जो इसमें पाया जाता है हार्डवेयर/इंटरफ़ेस/सेंसर/aiDL/default/multihal/ पर जाएं. यह मॉड्यूल एआईडीएल और HIDL सेंसर एचएएल डेफ़िनिशन के बीच कन्वर्ज़न को हैंडल करता है टाइप और इसमें बताए गए मल्टी-HAL इंटरफ़ेस के चारों ओर रैपर तय करता है सेंसर मल्टी-एचएएल 2.1 को लागू करना. एआईडीएल मल्टी-एचएएल शिम लेयर, सेंसर मल्टी-एचएएल 2.1 लागू करने वाले डिवाइसों के साथ काम करती है.
एआईडीएल मल्टी-एचएएल शिम लेयर की मदद से, हेड ट्रैकर को सार्वजनिक किया जा सकता है और
सेंसर एआईडीएल एचएएल में सीमित ऐक्सिस वाले IMU सेंसर के टाइप. इन सेंसर का इस्तेमाल करने के लिए
AIDL HAL इंटरफ़ेस के मुताबिक तय किए गए टाइप के लिए, type
फ़ील्ड को
getSensorsList_2_1()
लागू करने में SensorInfo
निर्देश. यह सुरक्षित है
क्योंकि AIDL और HIDL सेंसर HAL के पूर्णांक-बैक्ड सेंसर टाइप फ़ील्ड
ओवरलैप न हों.
सेंसर मल्टी-एचएएल 2.1 लागू करें
किसी नए डिवाइस पर सेंसर मल्टी-एचएएल 2.1 लागू करने के लिए, यह तरीका अपनाएं:
- यहां बताए गए तरीके से
ISensorsSubHal
इंटरफ़ेस को लागू करेंSubHal.h
. - लागू करें
sensorsHalGetSubHal_2_1
SubHal.h
में तरीका. लागू किए गए नए सब-एचएएल को बनाने के लिए,
cc_library_shared
टारगेट जोड़ें. टारगेट जोड़ते समय:- पक्का करें कि टारगेट को वेंडर पर कहीं भी पुश किया गया हो पार्टिशन.
/vendor/etc/sensors/hals.conf
पर मौजूद कॉन्फ़िगरेशन फ़ाइल में, नई लाइन पर लाइब्रेरी का पाथ जोड़ें. अगर ज़रूरी हो, तोhals.conf
फ़ाइल.
सब-एचएएल लाइब्रेरी बनाने के लिए,
Android.bp
एंट्री के उदाहरण के लिए, देखेंhardware/interfaces/sensors/common/default/2.X/multihal/tests/Android.bp
.यहां से सभी
android.hardware.sensors
प्रविष्टियां हटाएंmanifest.xml
फ़ाइल होती है, जिसमें डिवाइस पर काम करने वाले एचएएल की सूची होती है.android.hardware.sensors
सेवा औरservice.rc
फ़ाइलें यहां से हटाएंdevice.mk
फ़ाइल औरandroid.hardware.sensors@2.1-service.multihal
जोड़ें औरandroid.hardware.sensors@2.1-service.multihal.rc
सेPRODUCT_PACKAGES
.
चालू होने पर, HalProxy
शुरू होता है, लागू किए गए नए सब-एचएएल को खोजता है, और
कॉल करके इसे शुरू करता है
sensorsHalGetSubHal_2_1
.
सेंसर मल्टी-एचएएल 2.0 से मल्टी-एचएएल 2.1 तक पोर्ट करें
मल्टी-एचएएल 2.0 से मल्टी-एचएएल 2.1 में पोर्ट करने के लिए,
SubHal
इंटरफ़ेस करें और अपने सब-एचएएल को फिर से कंपाइल करें.
SubHal
के 2.0 और 2.1 इंटरफ़ेस के बीच के अंतर यहां दिए गए हैं:
IHalProxyCallback
इसमें बनाए गए टाइप इस्तेमाल करता हैISensors.hal
स्पेसिफ़िकेशन के, वर्शन 2.1 की है.initialize()
फ़ंक्शन एक नईIHalProxyCallback
2.0SubHal
इंटरफ़ेस वाले इंटरफ़ेस के बजाय- सब-एचएएल में
getSensorsList_2_1
औरinjectSensorData_2_1
लागू होने चाहिए की बजायgetSensorsList
औरinjectSensorData
का इस्तेमाल करें, क्योंकि ये तरीकेISensors.hal
के वर्शन 2.1 में जोड़े गए नए टाइप. - सब-एचएएल को यूआरएल के बजाय
sensorsHalGetSubHal_2_1
को दिखाना चाहिए मल्टी-HAL के लिएsensorsHalGetSubHal
, ताकि उन्हें वर्शन 2.1 मानें सब-एचएएल.
सेंसर एचएएल 2.0 से पोर्ट
सेंसर एचएएल से सेंसर मल्टी-एचएएल 2.0 में अपग्रेड करते समय 2.0, एचएएल पक्का करें नीचे दी गई ज़रूरी शर्तों को पूरा करता है.
एचएएल को शुरू करना
सेंसर HAL 2.0 में एक इनीशियलाइज़ेशन फ़ंक्शन है, जिसकी मदद से सेंसर सेवा
FMQ और एक डायनामिक सेंसर कॉलबैक पास करें. सेंसर मल्टी-एचएएल 2.0 में,
initialize()
फ़ंक्शन एक कॉलबैक पास करता है, जिसका इस्तेमाल पोस्ट करने के लिए किया जाना चाहिए
सेंसर इवेंट, वेक लॉक, और डाइनैमिक सेंसर कनेक्शन के बारे में सूचना पाने की सुविधा
डिसकनेक्ट करना.
मल्टी-एचएएल लागू करने के दौरान सेंसर इवेंट पोस्ट करें
एफ़एमक्यू की मदद से सेंसर इवेंट पोस्ट करने के बजाय, सब-एचएएल को सेंसर में लिखना ज़रूरी है
इवेंट
IHalProxyCallback
जब सेंसर इवेंट उपलब्ध हों.
WAKE_UP इवेंट
सेंसर HAL 2.0 में, HAL लागू करने के लिए वेक लॉक को मैनेज कर सकता है. तय सीमा में
मल्टी-एचएएल 2.0 सेंसर और सब-एचएएल, मल्टी-एचएएल को लागू करने की अनुमति देते हैं
वेक लॉक को मैनेज कर सकते हैं. साथ ही, वेक लॉक को चालू करके, वेक लॉक का अनुरोध कर सकते हैं
createScopedWakelock
.
लॉक किए गए स्कोप वाले वेक लॉक को तब हासिल करना चाहिए, जब वह postEvents
को पास हो जाए
मल्टी-एचएएल लागू करने के लिए, स्क्रीन चालू करने की सुविधा को पोस्ट करना.
डाइनैमिक सेंसर
मल्टी-HAL 2.0 सेंसर के लिए यह ज़रूरी है कि onDynamicSensorsConnected
और
onDynamicSensorsDisconnected
इंच
IHalProxyCallback
जब भी डाइनैमिक सेंसर के कनेक्शन बदलते हैं, तो इन्हें कॉल किया जाता है. ये कॉलबैक
IHalProxyCallback
पॉइंटर के हिस्से के तौर पर उपलब्ध होता है, जो इसके ज़रिए दिया जाता है
initialize()
फ़ंक्शन.
सेंसर एचएएल 1.0 से पोर्ट
सेंसर एचएएल से सेंसर मल्टी-एचएएल 2.0 में अपग्रेड करते समय 1.0, एचएएल पक्का करें नीचे दी गई ज़रूरी शर्तों को पूरा करता है.
एचएएल को शुरू करना
इन दोनों के बीच कॉलबैक सेट करने के लिए, initialize()
फ़ंक्शन काम करना चाहिए
सब-एचएएल और मल्टी-एचएएल को लागू करना.
उपलब्ध सेंसर दिखाएं
सेंसर मल्टी-एचएएल 2.0 में, getSensorsList()
फ़ंक्शन को वही दिखाना चाहिए
का उपयोग करते हैं, भले ही सेंसर एचएएल रीस्टार्ट हो रहे हों. इससे आपको
अगर सिस्टम के सर्वर पर, सेंसर कनेक्शन फिर से करने की कोशिश की जाती है, तो
रीस्टार्ट हो जाता है. getSensorsList()
से मिलने वाली वैल्यू, डिवाइस के बाद बदल सकती है
फिर से चालू करता है.
मल्टी-एचएएल लागू करने के दौरान सेंसर इवेंट पोस्ट करें
सेंसर एचएएल 2.0 में poll()
कॉल आने का इंतज़ार करने के बजाय, सब-एचएएल
इन डिवाइसों के लिए, सेंसर इवेंट खुद ही लिखने होंगे
IHalProxyCallback
सेंसर इवेंट उपलब्ध हों.
WAKE_UP इवेंट
सेंसर HAL 1.0 में, HAL लागू करने के लिए वेक लॉक को मैनेज कर सकता है. तय सीमा में
मल्टी-एचएएल 2.0 के सेंसर, सब-एचएएल, मल्टी-एचएएल को लागू करने की अनुमति देते हैं
वेक लॉक को मैनेज कर सकते हैं. साथ ही, वेक लॉक को चालू करके, वेक लॉक का अनुरोध कर सकते हैं
createScopedWakelock
.
लॉक किए गए स्कोप वाले वेक लॉक को तब हासिल करना चाहिए, जब वह postEvents
को पास हो जाए
मल्टी-एचएएल लागू करने के लिए, स्क्रीन चालू करने की सुविधा को पोस्ट करना.
डाइनैमिक सेंसर
सेंसर HAL 1.0 में, poll()
फ़ंक्शन की मदद से डाइनैमिक सेंसर दिखाए जाते हैं.
मल्टी-HAL 2.0 सेंसर के लिए यह ज़रूरी है कि onDynamicSensorsConnected
और
onDynamicSensorsDisconnected
इंच
IHalProxyCallback
जब भी डाइनैमिक सेंसर के कनेक्शन बदलते हैं, तो इन्हें कॉल किया जाता है. ये कॉलबैक
IHalProxyCallback
पॉइंटर के हिस्से के तौर पर उपलब्ध होता है, जो इसके ज़रिए दिया जाता है
initialize()
फ़ंक्शन.
सेंसर मल्टी-एचएएल 1.0 से पोर्ट
मौजूदा तरीके को पोर्ट करने के लिए सेंसर मल्टी-एचएएल 1.0, तो यह तरीका अपनाएं.
- पक्का करें कि सेंसर एचएएल कॉन्फ़िगरेशन यहां मौजूद हो
/vendor/etc/sensors/hals.conf
. इसमें मौजूद फ़ाइल को ट्रांसफ़र करना शामिल हो सकता है/system/etc/sensors/hals.conf
पर है. - से सभी संदर्भ हटाएं
hardware/hardware.h
औरhardware/sensors.h
क्योंकि ये HAL 2.0 के लिए काम नहीं करते. - सेंसर हैल से पोर्ट करना' में बताए गए सब-एचएएल को पोर्ट करें 1.0 के बाद लागू करें.
- सेंसर मल्टी-एचएएल 2.0 को तय किए गए एचएएल के तौर पर सेट करें. इसके लिए, तीसरे चरण का पालन करें और लागू करने वाले सेंसर मुटली-एचएएल 2.0 सेक्शन में 4.
पुष्टि करें
वीटीएस चलाएं
सेंसर मल्टी-हॉल 2.1 के साथ एक या उससे ज़्यादा सब-एचएएल इंटिग्रेट करने पर, अपने सब-एचएएल को पक्का करने के लिए, वेंडर टेस्ट सुइट (वीटीएस) का इस्तेमाल करें यह सुविधा, सेंसर एचएएल इंटरफ़ेस की तय की गई सभी ज़रूरी शर्तों को पूरा करती है.
होस्ट मशीन पर वीटीएस सेट अप होने पर, सिर्फ़ सेंसर वीटीएस की जांच करने के लिए, नीचे दिए गए निर्देशों को लागू करें:
vts-tradefed run commandAndExit vts \
--skip-all-system-status-check \
--primary-abi-only \
--skip-preconditions \
--module VtsHalSensorsV2_0Target && \
vts-tradefed run commandAndExit vts \
--skip-all-system-status-check \
--primary-abi-only \
--skip-preconditions \
--module VtsHalSensorsV2_1Target
अगर एआईडीएल मल्टी-एचएएल शिम लेयर इस्तेमाल की जा रही है, तो VtsAidlHalSensorsTargetTest
चलाएं.
vts-tradefed run commandAndExit vts \
--skip-all-system-status-check \
--primary-abi-only \
--skip-preconditions \
--module VtsAidlHalSensorsTargetTest
यूनिट टेस्ट चलाना
यह यूनिट, HalProxy_test.cpp
टेस्ट HalProxy
में नकली सब-एचएएल का इस्तेमाल करके टेस्ट करती है
इन्हें यूनिट टेस्ट में इंस्टैंशिएट किया जाता है और ये डाइनैमिक तौर पर लोड नहीं होते हैं. किसी विज्ञापन को
इसलिए, ये टेस्ट एक गाइड के तौर पर काम करेंगे. इससे यह जानकारी मिलेगी कि
पुष्टि करें कि नया सब-एचएएल सही तरीके से लागू किया गया है.
जांच करने के लिए, नीचे दिए गए निर्देशों को लागू करें:
cd $ANDROID_BUILD_TOP/hardware/interfaces/sensors/common/default/2.X/multihal/tests
atest
नकली सब-एचएएल की मदद से जांच करना
नकली सब-एचएएल, ISensorsSubHal
इंटरफ़ेस का डमी इंप्लिमेंटेशन हैं.
सब-एचएएल, सेंसर की अलग-अलग सूचियां दिखाते हैं. जब सेंसर चालू होते हैं, तो
वे समय-समय पर HalProxy
पर अपने-आप जनरेट होने वाले सेंसर इवेंट पोस्ट करते हैं
यह किसी सेंसर अनुरोध में बताए गए इंटरवल के हिसाब से तय होता है.
नकली सब-एचएएल का इस्तेमाल, यह जांच करने के लिए किया जा सकता है कि पूरा मल्टी-एचएएल कोड किस तरह काम करता है जो सिस्टम में लोड किए गए अन्य सब-एचएएल का इस्तेमाल करते हैं. साथ ही, सेंसर मल्टी-एचएएल कोड.
दो नकली सब-एचएएल यहां उपलब्ध हैं
hardware/interfaces/sensors/common/default/2.X/multihal/tests/fake_subhal/
.
नकली सब-एचएएल बनाने और उन्हें किसी डिवाइस में पुश करने के लिए, यह तरीका अपनाएं:
तीन अलग-अलग नकली चीज़ें बनाने और उन्हें ठीक करने के लिए, नीचे दिए गए निर्देशों का पालन करें डिवाइस के सब-एचएएल:
$ANDROID_BUILD_TOP/hardware/interfaces/sensors/common/default/2.X/multihal/tests/
mma
adb push \ $ANDROID_BUILD_TOP/out/target/product/<device>/symbols/vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config1.so \ /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config1.so
adb push \ $ANDROID_BUILD_TOP/out/target/product/<device>/symbols/vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config2.so \ /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config2.so
adb push \ $ANDROID_BUILD_TOP/out/target/product/<device>/symbols/vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config3.so \ /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config3.so
/vendor/etc/sensors/hals.conf
पर सेंसर एचएएल कॉन्फ़िगरेशन को अपडेट करें के पाथ भी मिलते हैं./vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config1.so /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config2.so /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config3.so
HalProxy
को रीस्टार्ट करें. इसके बाद, कॉन्फ़िगरेशन में मौजूद नए सब-एचएएल लोड करें.adb shell stop
adb shell start
डीबग करना
डेवलपर, lshal
कमांड का इस्तेमाल करके, फ़्रेमवर्क को डीबग कर सकते हैं. अनुरोध करने के लिए:
सेंसर HAL के डीबग आउटपुट के लिए, यह निर्देश चलाएं:
adb root
adb shell lshal debug android.hardware.sensors@2.1::ISensors/default
HalProxy
की मौजूदा स्थिति और उसके सब-एचएएल के बारे में जानकारी यह है
आउटपुट को टर्मिनल तक ले जाना. नीचे उदाहरण के तौर पर दिए गए कमांड आउटपुट का
HalProxy
ऑब्जेक्ट और नकली सब-एचएएल.
Internal values:
Threads are running: true
Wakelock timeout start time: 200 ms ago
Wakelock timeout reset time: 73208 ms ago
Wakelock ref count: 0
# of events on pending write queue: 0
# of non-dynamic sensors across all subhals: 8
# of dynamic sensors across all subhals: 0
SubHals (2):
Name: FakeSubHal-OnChange
Debug dump:
Available sensors:
Name: Ambient Temp Sensor
Min delay: 40000
Flags: 2
Name: Light Sensor
Min delay: 200000
Flags: 2
Name: Proximity Sensor
Min delay: 200000
Flags: 3
Name: Relative Humidity Sensor
Min delay: 40000
Flags: 2
Name: FakeSubHal-OnChange
Debug dump:
Available sensors:
Name: Ambient Temp Sensor
Min delay: 40000
Flags: 2
Name: Light Sensor
Min delay: 200000
Flags: 2
Name: Proximity Sensor
Min delay: 200000
Flags: 3
Name: Relative Humidity Sensor
Min delay: 40000
Flags: 2
अगर # of events on pending write queue
के लिए दी गई संख्या
बड़ी संख्या (1,000 या ज़्यादा),
इससे यह पता चलता है कि सेंसर पर कई इवेंट जोड़े जाने बाकी हैं
फ़्रेमवर्क शामिल है. इससे पता चलता है कि सेंसर सेवा बंद है या क्रैश हो गई है और
सेंसर इवेंट को प्रोसेस नहीं कर रहा है या सेंसर इवेंट का एक बड़ा बैच
हाल ही में सब-एचएएल से पोस्ट की गई है.
अगर वेक लॉक रेफ़रंस की संख्या 0
से ज़्यादा है, तो इसका मतलब है कि HalProxy
ने एक वेक लॉक हासिल किया है. यह सिर्फ़ 0
से ज़्यादा होना चाहिए, अगर ScopedWakelock
जान-बूझकर रोका गया हो या अगर स्क्रीन चालू करने के इवेंट HalProxy
को भेजे गए हों और
सेंसर फ़्रेमवर्क से प्रोसेस नहीं किए जाते.
HalProxy
के डीबग तरीके को पास किया गया फ़ाइल डिस्क्रिप्टर हर एक को पास किया जाता है
सब-एचएएल का इस्तेमाल करते हैं, ताकि डेवलपर को डीबग करने का तरीका लागू करना चाहिए.
ISensorsSubHal
इंटरफ़ेस.