कार के नए और नॉन-स्टैंडर्ड इवेंट के लिए इनपुट इवेंट जोड़ने के लिए, OEM के कस्टम इनपुट इस्तेमाल करें
Android की सुविधाएं. नॉन-स्टैंडर्ड इनपुट इवेंट, मौजूदा
Android KeyEvent
को सामान्य और किसी भी Android प्लैटफ़ॉर्म पर काम करने के लिए बनाया गया है
हालांकि, OEM की खास सुविधाओं को लागू करने के लिए, इसे उपलब्ध नहीं कराया गया है. उदाहरण के लिए, बटन
यह ऐप्लिकेशन, स्टीयरिंग व्हील कंट्रोल पर मौजूद होता है. इसे दबाने पर, Maps ऐप्लिकेशन खुलता है
(इंटेंट के ज़रिए) कार की मौजूदा जगह की जानकारी के साथ. यह सुविधा चालू करने पर,
इस सुविधा की मदद से, ड्राइवर अपना ध्यान भटकाए बिना अपनी मौजूदा जगह की जानकारी देख सकते हैं
गाड़ी चलाते समय.
यह लेख बताता है कि मौजूदा Android KeyEvent
के इस्तेमाल से कैसे ऐसा किया जा सकता है
सिर्फ़ तब इस्तेमाल करने के लिए CustomInputEvent
बनाएं, जब Android KeyEvent
यह काम न कर सके
सुविधा का इस्तेमाल किया जा सकता है.
HW_CUSTOM_INPUT
OEM कस्टम इनपुट को HW_CUSTOM_INPUT और से दिखाया गया है
CustomइनपुटEvent.java. HW_CUSTOM_INPUT यह है
नेटिव इवेंट, जो कार के हार्डवेयर (वाहन एचएएल) से इंस्टैंशिएट किया जाता है. OEM तय करते हैं
इस इवेंट को इंस्टैंशिएट कैसे करें. HW_CUSTOM_INPUT का ऐक्सेस है
VehiclePropertyAccess:READ
के साथ, [रीड ओनली]{:.external} के तौर पर सेट है.
यह पक्का करने के लिए कि वाहन का एचएएल हमेशा सबसे नई वैल्यू ब्रॉडकास्ट कर सके,
HW_CUSTOM_INPUT सूचना ON_CHANGE
के रूप में सेट है, इसके साथ
VehiclePropertyChangeMode:ON_CHANGE
.
HW_CUSTOM_INPUT मान जेनरिक कलेक्शन से मिलकर बनता है
int32
को [global]{:.external} के तौर पर सेट किया गया है (VehicleArea:GLOBAL
के साथ)
सामान्य पूर्णांक हैं:
पहला एलिमेंट, OEM की ओर से तय किए जाने वाले इनपुट कोड के बारे में बताता है. इनपुट कोड में कोई भी सिमैंटिक जोड़ा जा सकता है.
दूसरा एलिमेंट, टारगेट डिसप्ले को सेव करता है, जैसे कि मुख्य डिसप्ले या क्लस्टर.
तीसरे एलिमेंट में, इवेंट को दोहराए जाने की संख्या शामिल होती है. जैसे, यह बताने के लिए कि किसी बटन को कितनी बार दबाया गया.
CustomइनपुटEvent और कार इनपुट एपीआई
इनपुटHalService, कार सेवा है.
वाहन के एचएएल से HW_CUSTOM_INPUT
मिला है.
इनपुटHalService, आने वाले HW_CUSTOM_INPUT
को
CustomInputEvent
, एक Java पार्सेलेबल क्लास है जो
car-lib/src/android/car/input और उससे जुड़े
एडल इंटरफ़ेस.
CarइनपुटService, कार इनपुट की मुख्य सेवा है. इसे इनकमिंग कॉल की सुविधा दी जाती है कस्टम इनपुट इवेंट और उसके बाद उन्हें रजिस्टर की गई किसी Android सिस्टम सेवा पर भेजा जाता है.
कस्टम इनपुट इवेंट को रजिस्टर करने और पाने के लिए, सिस्टम की सेवाओं को ये शर्तें पूरी करनी होंगी:
CarइनपुटManager.Carinput CaptureCallback#onKeyEvents लागू करें.
CarइनपुटManager#requestinputEvent Capture की मदद से रजिस्टर करें,
CarInputManager.INPUT_TYPE_CUSTOM_INPUT_EVENT
को इनपुट के तौर पर पास किया जा रहा है type पैरामीटर का इस्तेमाल करें.अपंजीकृत करने के लिए, सेवाओं को शुरू करना होगा CarइनपुटManager#ReleaseइनपुटEvent मान्यता.
नीचे दिए गए डायग्राम में, OEM के कस्टम इनपुट इवेंट का वर्कफ़्लो दिखाया गया है.
OEM Android सिस्टम सेवाएं
ओईएम, इनकमिंग कॉल को मैनेज करने के लिए Android सिस्टम की सेवा देते हैं
CarInputService
के Custom InputEvents.
केवल वे सेवाएं जिनके साथ android.permission.INJECT_इवेंट के खास अधिकार की अनुमति कार इनपुट एपीआई से Custom InputEvent रजिस्टर कर सकता है और पा सकता है (CarइनपुटManager). कोई भी तीसरे पक्ष की सेवा या ऐप्लिकेशन यह नहीं कर सकता साइन इन करने के लिए, Android सिस्टम की इस अनुमति (सिर्फ़ OEM सेवाएं) का इस्तेमाल करें. इसलिए, कोई भी तीसरे पक्ष की सेवा या ऐप्लिकेशन रजिस्टर नहीं किया जा सकता कार इनपुट एपीआई के ख़िलाफ़ हैं.
Android सिस्टम की OEM सेवाएं, SystemApi
और सार्वजनिक तरीकों को ऐक्सेस कर सकती हैं.
रेफ़रंस फ़ाइल को लागू करना
रेफ़रंस को लागू करने की प्रोसेस यहां देखें packages/services/Car/tests/SampleCustomइनपुटService, जिनमें ये शामिल हैं: को उदाहरण और दिशा-निर्देश के तौर पर दिया गया है. उदाहरण के लिए, नया बटन जोड़ने के लिए स्टीयरिंग व्हील कंट्रोल में मौजूद हैं. इसे दबाने पर, यह नया बटन कार की मौजूदा जगह की जानकारी वाले मैप ऐप्लिकेशन.
इस उदाहरण में, OEM ने INPUT_CODE_F1
(पहला CustomInputEvent
) चुना
सुविधा फ़ंक्शन) का उपयोग करके इस नई सुविधा को प्रस्तुत करें (और मैप ऐप्लिकेशन को
कार की मौजूदा जगह की जानकारी.
शुरू होने के दौरान, यह सेवा खुद को CarInputManager
के लिए रजिस्टर करती है
requestInputEventCapture
के ज़रिए (देखें.
लागू करने के लिए रजिस्ट्रेशन कोड का रेफ़रंस.
इनकमिंग कस्टम इनपुट इवेंट मिलने पर, यह सेवा इंटेंट Maps ऐप्लिकेशन शुरू करने के लिए. यह कैसे किया जाता है, इस बारे में जानने के लिए देखें CustomइनपुटEventListener.java.