OEM कस्टम इनपुट

कार के नए और नॉन-स्टैंडर्ड इवेंट के लिए इनपुट इवेंट जोड़ने के लिए, 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 के साथ) सामान्य पूर्णांक हैं:

  1. पहला एलिमेंट, OEM की ओर से तय किए जाने वाले इनपुट कोड के बारे में बताता है. इनपुट कोड में कोई भी सिमैंटिक जोड़ा जा सकता है.

  2. दूसरा एलिमेंट, टारगेट डिसप्ले को सेव करता है, जैसे कि मुख्य डिसप्ले या क्लस्टर.

  3. तीसरे एलिमेंट में, इवेंट को दोहराए जाने की संख्या शामिल होती है. जैसे, यह बताने के लिए कि किसी बटन को कितनी बार दबाया गया.

CustomइनपुटEvent और कार इनपुट एपीआई

इनपुटHalService, कार सेवा है. वाहन के एचएएल से HW_CUSTOM_INPUT मिला है.

इनपुटHalService, आने वाले HW_CUSTOM_INPUT को CustomInputEvent, एक Java पार्सेलेबल क्लास है जो car-lib/src/android/car/input और उससे जुड़े एडल इंटरफ़ेस.

CarइनपुटService, कार इनपुट की मुख्य सेवा है. इसे इनकमिंग कॉल की सुविधा दी जाती है कस्टम इनपुट इवेंट और उसके बाद उन्हें रजिस्टर की गई किसी Android सिस्टम सेवा पर भेजा जाता है.

कस्टम इनपुट इवेंट को रजिस्टर करने और पाने के लिए, सिस्टम की सेवाओं को ये शर्तें पूरी करनी होंगी:

नीचे दिए गए डायग्राम में, OEM के कस्टम इनपुट इवेंट का वर्कफ़्लो दिखाया गया है.

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.