ओईएम के लिए एकीकरण गाइड

यह आलेख वर्णन करता है कि वीएचएएल में रोटरी इनपुट को कैसे संसाधित किया जाए, रोटरी सेवा को शामिल करने के लिए अपने बिल्ड को कॉन्फ़िगर करें, और सभी ऐप्स में रोटरी अनुभव को कैसे अनुकूलित करें। प्रीइंस्टॉल्ड ओईएम ऐप्स के लिए, जैसे कि ओईएम-प्रदत्त लॉन्चर, कार यूआई लाइब्रेरी (कार-यूआई-लाइब्रेरी) देखें

VHAL

एक रोटरी नियंत्रक निम्नलिखित क्रियाओं का समर्थन करता है:

  • ऊपर, नीचे, बाएँ और दाएँ कुहनी मारें।
  • दक्षिणावर्त और वामावर्त घुमाएं।
  • केंद्र बटन दबाएं।
  • बैक बटन दबाएं।
  • होम बटन दबाएं।
  • फोन और मीडिया जैसे अन्य बटन दबाएं।

सिस्टम गुणों और संबंधित int32Values ​​​​पर दस्तावेज़ीकरण के लिए hardware/interfaces/automotive/vehicle/2.0/types.hal देखें।

वीएचएएल को इन कार्यों को संभालना चाहिए:

कुहनी से हलका धक्का

जब उपयोगकर्ता रोटरी नियंत्रक को दाईं ओर धकेलता है, तो VHAL को HW_KEY_INPUT संपत्ति का उपयोग निम्नलिखित int32Values ​​​​के साथ Android पर एक ईवेंट भेजने के लिए करना चाहिए:

  1. ACTION_DOWN
  2. KEYCODE_SYSTEM_NAVIGATION_RIGHT
  3. लक्ष्य प्रदर्शन।

जब उपयोगकर्ता रोटरी कंट्रोलर को रिलीज़ करता है, तो VHAL को ACTION_UP के साथ उसी प्रॉपर्टी और ACTION_UP का उपयोग करना चाहिए। अन्य दिशाओं में कुहनी से संबंधित कीकोड का उपयोग करना चाहिए।

विकर्णों के लिए कीकोड नहीं हैं, लेकिन यदि हार्डवेयर विकर्णों का समर्थन करता है, तो VHAL एक विकर्ण बनाने के लिए एक क्षैतिज और ऊर्ध्वाधर घटना को जोड़ सकता है। उदाहरण के लिए, ऊपर और बाईं ओर कुहनी मारना उत्पादन करना चाहिए:

  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_DOWN
  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_DOWN

किसी भी क्रम में (और बाद में) रोटरी नियंत्रक को जारी करना चाहिए:

  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_UP
  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_UP

उपयोगकर्ता रोटरी नियंत्रक को जारी करने से पहले एक लंबवत दिशा में धक्का दे सकता है। उदाहरण के लिए, निम्न परिदृश्य:

लंबवत दिशा
चित्र 1. लंबवत दिशा

यह घटनाओं के निम्नलिखित अनुक्रम उत्पन्न करना चाहिए:

  1. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_DOWN
  2. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_DOWN
  3. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_UP
  4. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_UP

रोटरी नियंत्रक को एक दिशा में रखते समय कोई दोहराव घटना उत्पन्न नहीं होनी चाहिए।

घुमाएँ

जब उपयोगकर्ता रोटरी नियंत्रक को एक डिटेंट (क्लिक) द्वारा दक्षिणावर्त घुमाता है, तो VHAL को HW_ROTARY_INPUT प्रॉपर्टी का उपयोग निम्नलिखित int32Values ​​​​के साथ Android पर एक ईवेंट भेजने के लिए करना चाहिए:

  1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
  2. एक (1) निरोध ।
  3. लक्ष्य प्रदर्शन।

घटना का टाइमस्टैम्प नैनोसेकंड में बीता हुआ समय पर सेट किया जाना चाहिए।

एक (1) डिटेंट वामावर्त रोटेशन को एक ही घटना उत्पन्न करनी चाहिए लेकिन -1 के साथ डिटेंट्स की संख्या के लिए।

यदि एक ही दिशा में घुमाव के कई अवरोध तेजी से उत्तराधिकार में होते हैं, तो वीएचएएल को डिटेंट्स को एक ही घटना में जोड़ना चाहिए ताकि सिस्टम को घटनाओं के साथ अधिभार न डालें। इस मामले में, घटना का टाइमस्टैम्प तब होना चाहिए जब रोटेशन का पहला अवरोध हुआ हो। int32Values ​​​​में रोटेशन के लगातार डिटेंट्स के बीच नैनोसेकंड की संख्या शामिल होनी चाहिए।

उदाहरण के लिए, घुमावों का निम्नलिखित क्रम:

  • समय t0 पर, उपयोगकर्ता ने एक डिटेन्ट वामावर्त घुमाया।
  • समय t0 + 5 ns पर, उपयोगकर्ता ने एक डिटेंट वामावर्त घुमाया।
  • समय t0 + 8 ns पर, उपयोगकर्ता ने एक डिटेन्ट वामावर्त घुमाया।

इस घटना को उत्पन्न करना चाहिए:

  • संपत्ति: HW_ROTARY_INPUT
  • टाइमस्टैम्प: t0
  • int32Values :
    1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
    2. -3 (तीन डिटेंट वामावर्त)।
    3. लक्ष्य प्रदर्शन।
    4. पहली और दूसरी हिरासत के बीच 5 एनएस।
    5. दूसरे और तीसरे डिटेंट के बीच 3 एनएस।

केंद्र बटन

जब उपयोगकर्ता केंद्र बटन दबाता है, तो VHAL को HW_KEY_INPUT संपत्ति का उपयोग निम्नलिखित int32Values ​​​​के साथ Android पर एक ईवेंट भेजने के लिए करना चाहिए:

  1. ACTION_DOWN
  2. KEYCODE_DPAD_CENTER
  3. लक्ष्य प्रदर्शन।

जब उपयोगकर्ता रोटरी कंट्रोलर को रिलीज़ करता है, तो VHAL को ACTION_UP के साथ उसी प्रॉपर्टी और ACTION_UP का उपयोग करना चाहिए।

केंद्र बटन दबाए जाने पर पुनरावृत्त ईवेंट उत्पन्न न करें।

पिछला बटन

जब उपयोगकर्ता बैक बटन दबाता है, तो VHAL को HW_KEY_INPUT प्रॉपर्टी का उपयोग निम्नलिखित int32Values ​​​​के साथ Android पर एक ईवेंट भेजने के लिए करना चाहिए:

  1. ACTION_DOWN
  2. KEYCODE_BACK
  3. लक्ष्य प्रदर्शन।

जब उपयोगकर्ता रोटरी कंट्रोलर को रिलीज़ करता है, तो VHAL को ACTION_UP के साथ उसी प्रॉपर्टी और ACTION_UP का उपयोग करना चाहिए।

केंद्र बटन दबाए रखने के दौरान कोई दोहराव घटना उत्पन्न नहीं होनी चाहिए।

होम बटन

होम बटन को वैसे ही हैंडल करें जैसे आप बैक बटन को करते हैं लेकिन KEYCODE_HOME के बजाय KEYCODE_BACK के ​​साथ।

अन्य बटन

यदि रोटरी नियंत्रक में कोई अतिरिक्त बटन शामिल हैं, तो VHAL उन्हें संभाल सकता है, हालांकि OEM पसंद करता है क्योंकि उन्हें Android के दृष्टिकोण से रोटरी का हिस्सा नहीं माना जाता है। इन्हें आमतौर पर बैक और होम बटन की तरह हैंडल किया जाता है लेकिन अलग-अलग कीकोड के साथ। उदाहरण के लिए, KEYCODE_CALL या KEYCODE_MUSIC

कॉन्फ़िगरेशन बनाएं

रोटरी नेविगेशन रोटरी सर्विस नामक एक RotaryService सर्विस द्वारा प्रदान किया जाता है। अपने डिवाइस के लिए सिस्टम छवि में इस सेवा को शामिल करने के लिए, अपने मेकफ़ाइल में निम्न पंक्ति जोड़ें:

PRODUCT_PACKAGES += CarRotaryController

आप डिबग बिल्ड में निम्नलिखित पैकेज भी शामिल करना चाह सकते हैं:

जब डिवाइस बूट होता है और जब उपयोगकर्ता स्विच होता है तो रोटरी सेवा स्वचालित रूप से सक्षम हो जाती है। यह सुनिश्चित करता है कि उपयोगकर्ता सेट-अप के दौरान रोटरी नियंत्रक का उपयोग कर सकता है।

यदि आप रोटरी कंट्रोलर के साथ और बिना कारों के लिए समान बिल्ड का उपयोग करते हैं, तो CarRotaryController को ऊपर दिखाए अनुसार जोड़ें ताकि बिल्ड में आवश्यक कोड शामिल हो। रोटरी सेवा को गैर-रोटरी कारों पर सक्षम होने से रोकने के लिए, एक खाली स्ट्रिंग के साथ packages/services/Car/service में रोटरी सेवा स्ट्रिंग संसाधन को ओवरले करने के लिए एक स्थिर rotaryService बनाएं। आप एक ही बिल्ड का उपयोग करेंगे, लेकिन रोटरी और गैर-रोटरी उपकरणों के लिए अलग-अलग उत्पाद कॉन्फ़िगरेशन होंगे। केवल बाद वाले में ओवरले शामिल है।

अनुकूलन

ओईएम निम्नलिखित स्थानों में संसाधन ओवरले के माध्यम से फ़ोकस फाइंडिंग लॉजिक, फ़ोकस हाइलाइट और कुछ अतिरिक्त आइटम को कस्टमाइज़ कर सकते हैं:

  • कार-यूआई-लाइब्रेरी packages/apps/Car/libs/car-ui-lib . में स्थित है
  • RotaryService packages/apps/Car/RotaryController कंट्रोलर में स्थित है
  • Core frameworks/base/core में स्थित है

कुहनी से हलका इतिहास

OEM कॉन्फ़िगर कर सकता है कि दो प्रकार के कुहनी का इतिहास सक्षम है या नहीं और, यदि ऐसा है, तो कैश आकार और समाप्ति नीति। यह सब विभिन्न कार-यूआई-लाइब्रेरी संसाधनों को ओवरराइड करके किया जाता है।

फोकस इतिहास कैश

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
यह प्रति FocusArea कैश फोकसएरिया के भीतर सबसे हाल ही में केंद्रित दृश्य को संग्रहीत करता है ताकि FocusArea पर वापस जाने पर इसे केंद्रित किया जा FocusArea । इस कैश को निम्नलिखित कार-यूआई-लाइब्रेरी संसाधनों को ओवरले करके कॉन्फ़िगर किया जा सकता है:

  • car_ui_focus_history_cache_type :
    1. कैश अक्षम है।
    2. कैश कुछ समय बाद समाप्त हो जाएगा (नीचे देखें)।
    3. कैश कभी समाप्त नहीं होगा।
  • car_ui_focus_history_expiration_period_ms : यदि कैश प्रकार दो (2) पर सेट है (ऊपर देखें) तो कैश समाप्त होने से पहले कितने मिलीसेकंड।

फोकसएरिया इतिहास कैश

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
यह कैश कुहनी का इतिहास संग्रहीत करता है ताकि विपरीत दिशा में कुहनी मारने से फ़ोकस उसी FocusArea पर वापस आ सके। इस कैश को निम्नलिखित कार-यूआई-लाइब्रेरी संसाधनों को ओवरले करके कॉन्फ़िगर किया जा सकता है:

  • car_ui_focus_area_history_cache_type :
    1. कैश अक्षम है।
    2. कैश कुछ समय बाद समाप्त हो जाता है (नीचे देखें)।
    3. कैश कभी समाप्त नहीं होता है।
  • car_ui_focus_area_history_expiration_period_ms : यदि कैश प्रकार 2 पर सेट है (ऊपर देखें) तो कैशे समाप्त होने से पहले कितने मिलीसेकंड।
  • car_ui_clear_focus_area_history_when_rotating : जब उपयोगकर्ता नियंत्रक को घुमाता है तो कैश को खाली करना है या नहीं।

रोटेशन

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
ओईएम RotaryService में दो पूर्णांक संसाधनों को ओवरराइड कर सकता है ताकि यह निर्दिष्ट किया जा सके कि क्या त्वरण है, जैसे कि माउस त्वरण, रोटेशन के लिए:

  • rotation_acceleration_3x_ms : समय अंतराल (मिलीसेकंड में) का उपयोग यह तय करने के लिए किया जाता है कि Google को रोटेशन के एक अवरोध के लिए नियंत्रक रोटेशन को तेज करना चाहिए या नहीं। यदि इस अवरोध और घूर्णन के पिछले अवरोध के बीच का अंतराल इस मान से छोटा है, तो इसे घूर्णन के तीन अवरोधों के रूप में माना जाएगा। 3× त्वरण को अक्षम करने के लिए इसे 2147483647 पर सेट करें।
  • rotation_acceleration_2x_ms : रोटेशन_एक्सेलरेशन_3 rotation_acceleration_3x_ms के समान। 2× त्वरण के लिए प्रयुक्त। 2× त्वरण को अक्षम करने के लिए इसे 2147483647 पर सेट करें।

त्वरण सबसे अच्छा काम करता है जब VHAL द्वारा आवश्यक रोटेशन के प्रत्येक अवरोध के लिए अलग-अलग टाइमस्टैम्प होते हैं। यदि ये उपलब्ध नहीं हैं, तो RotaryService मानता है कि रोटेशन के डिटेक्ट समान रूप से दूरी पर हैं।

/**
     * Property to feed H/W rotary events to android
     *
     * int32Values[0] : RotaryInputType identifying which rotary knob rotated
     * int32Values[1] : number of detents (clicks), positive for clockwise,
     *                  negative for counterclockwise
     * int32Values[2] : target display defined in VehicleDisplay. Events not
     *                  tied to specific display must be sent to
     *                  VehicleDisplay#MAIN.
     * int32values[3 .. 3 + abs(number of detents) - 2]:
     *                  nanosecond deltas between pairs of consecutive detents,
     *                  if the number of detents is > 1 or < -1
     *
     * VehiclePropValue.timestamp: when the rotation occurred. If the number of
     *                             detents is > 1 or < -1, this is when the
     *                             first detent of rotation occurred.
     *
     * @change_mode VehiclePropertyChangeMode:ON_CHANGE
     * @data_enum RotaryInputType
     * @access VehiclePropertyAccess:READ
     */
    HW_ROTARY_INPUT = (
        0x0A20
        | VehiclePropertyGroup:SYSTEM
        | VehiclePropertyType:INT32_VEC
        | VehicleArea:GLOBAL),

फोकस हाइलाइट

OEM एंड्रॉइड फ्रेमवर्क में डिफ़ॉल्ट फोकस हाइलाइट और कार-यूआई-लाइब्रेरी में कई फोकस हाइलाइट संसाधनों को ओवरराइड कर सकता है।

डिफ़ॉल्ट फोकस हाइलाइट

एंड्रॉइड फ्रेमवर्क selectableItemBackground विशेषता के माध्यम से एक डिफ़ॉल्ट फोकस हाइलाइट प्रदान करता है। Theme.DeviceDefault में, यह विशेषता Core में item_background.xml को संदर्भित करती है। डिफ़ॉल्ट फ़ोकस हाइलाइट item_background.xml को बदलने के लिए OEM item_background.xml को ओवरले कर सकता है।

यह ड्रॉएबल आमतौर पर StateListDrawable होना चाहिए, जो राज्यों के विभिन्न संयोजनों के आधार पर पृष्ठभूमि को समायोजित करता है, जिसमें android:state_focused और android:state_pressed । जब उपयोगकर्ता किसी दृश्य पर ध्यान केंद्रित करने के लिए रोटरी नियंत्रक का उपयोग करता है, तो android:state_focused true , लेकिन android:state_pressed false होगा। यदि उपयोगकर्ता रोटरी नियंत्रक पर केंद्र बटन दबाता है, तो दोनों android:state_focused और android:state_pressed true होगा जबकि उपयोगकर्ता बटन को दबाए रखता है। जब उपयोगकर्ता बटन जारी करता है, केवल android:state_focused true रहेगा।

कार-यूआई-लाइब्रेरी Theme.DeviceDefault से प्राप्त थीम का उपयोग करती है। परिणामस्वरूप, यह ओवरले इस लाइब्रेरी का उपयोग करने वाले ऐप्स और Theme.DeviceDefault से प्राप्त किसी भी थीम का उपयोग करने वाले ऐप्स को प्रभावित करता है। यह उन ऐप्स को प्रभावित नहीं करेगा जो किसी असंबंधित थीम का उपयोग करते हैं, जैसे कि Theme.Material

कार-यूआई-लाइब्रेरी में हाइलाइट संसाधनों पर ध्यान दें

ओईएम कई कार-यूआई-लाइब्रेरी संसाधनों को ओवरराइड कर सकता है ताकि यह नियंत्रित किया जा सके कि फोकस हाइलाइट गैर-आयताकार (जैसे गोल या गोली के आकार का) फोकस हाइलाइट के साथ दृश्यों पर कैसा दिखता है और उन ऐप्स में जो Theme.DeviceDefault से प्राप्त नहीं होते हैं Theme.DeviceDefault । इन संसाधनों को मढ़ा जाना चाहिए ताकि फ़ोकस हाइलाइट ड्रॉएबल डिफ़ॉल्ट फ़ोकस हाइलाइट के अनुरूप हो।

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
निम्नलिखित संसाधनों का उपयोग यह इंगित करने के लिए किया जाता है कि कोई दृश्य कब फ़ोकस किया गया है लेकिन दबाया नहीं गया है:

  • car_ui_rotary_focus_fill_color : रंग भरें।
  • car_ui_rotary_focus_stroke_color : रूपरेखा रंग।
  • car_ui_rotary_focus_stroke_width : आउटलाइन की मोटाई।

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
निम्नलिखित संसाधनों का उपयोग यह इंगित करने के लिए किया जाता है कि कोई दृश्य कब केंद्रित और दबाया जाता है:

  • car_ui_rotary_focus_pressed_fill_color : रंग भरें।
  • car_ui_rotary_focus_pressed_stroke_color : रूपरेखा रंग।
  • car_ui_rotary_focus_pressed_stroke_width : आउटलाइन की मोटाई।

कभी-कभी एक बटन को उपयोगकर्ता के ध्यान में लाने के लिए एक ठोस पृष्ठभूमि रंग दिया जाता है, जैसा कि दिखाए गए उदाहरण में है। इससे फ़ोकस हाइलाइट को देखना मुश्किल हो सकता है।

ठोस पृष्ठभूमि वाला बटन
चित्रा 2. ठोस पृष्ठभूमि वाला बटन

इस स्थिति में, डेवलपर द्वितीयक रंगों का उपयोग करके एक कस्टम फ़ोकस हाइलाइट निर्दिष्ट कर सकता है:
  • ( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
    car_ui_rotary_focus_fill_secondary_color
    car_ui_rotary_focus_stroke_secondary_color
  • ( एंड्रॉयड 12 )
    car_ui_rotary_focus_pressed_fill_secondary_color
    car_ui_rotary_focus_pressed_stroke_secondary_color

कोई भी रंग पारदर्शी हो सकता है और या तो आयाम शून्य हो सकता है, उदाहरण के लिए, आप केवल एक भरण या केवल एक रूपरेखा चाहते हैं।

फोकस एरिया हाइलाइट

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
जब उसके वंशजों में से एक पर ध्यान केंद्रित किया जाता है, तो FocusArea दो प्रकार के हाइलाइट खींच सकता है। यदि वांछित हो, तो दोनों का संयोजन में उपयोग किया जा सकता है। यह सुविधा एओएसपी में डिफ़ॉल्ट रूप से अक्षम है, लेकिन कार-यूआई-लाइब्रेरी संसाधनों को ओवरराइड करके सक्षम किया जा सकता है:

  • car_ui_enable_focus_area_foreground_highlight : FocusArea और उसके वंशजों के शीर्ष पर एक हाइलाइट बनाएं। एओएसपी में, यह FocusArea के चारों ओर एक रूपरेखा है। OEMs car_ui_focus_area_foreground_highlight को ओवरराइड कर सकते हैं।
  • car_ui_enable_focus_area_background_highlight : फोकस FocusArea के ऊपर लेकिन उसके वंशजों के पीछे एक हाइलाइट बनाएं। AOSP में, यह ड्रायबल एक ठोस भरण है। OEM car_ui_focus_area_background_highlight को ओवरराइड कर सकते हैं।

इनपुट विधि संपादक

इनपुट मेथड एडिटर (IME) इनपुट मेथड हैं। उदाहरण के लिए, ऑन-स्क्रीन कीबोर्ड।

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
टच-आधारित IME के ComponentName को निर्दिष्ट करने के लिए OEM को RotaryService में default_touch_input_method स्ट्रिंग संसाधन को ओवरले करना होगा। उदाहरण के लिए, यदि OEM Android Automotive के साथ प्रदान किए गए IME का उपयोग करता है, तो उन्हें com.google.android.apps.automotive.inputmethod/.InputMethodService निर्दिष्ट करना चाहिए।

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
यदि ओईएम ने विशेष रूप से रोटरी के लिए एक आईएमई बनाया है, तो उन्हें इसके ComponentName नाम को rotary_input_method संसाधन में निर्दिष्ट करना चाहिए। यदि यह संसाधन ओवरलेड है, तो निर्दिष्ट IME का उपयोग तब किया जाता है जब उपयोगकर्ता रोटरी कंट्रोलर के कुहनी, घुमाव और केंद्र बटन के माध्यम से हेड यूनिट के साथ इंटरैक्ट कर रहा होता है। जब उपयोगकर्ता स्क्रीन को छूता है, तो पिछले IME का उपयोग किया जाएगा। बैक बटन (और रोटरी कंट्रोलर के अन्य बटन) का IME चयन पर कोई प्रभाव नहीं पड़ता है। यदि यह संसाधन ओवरलेड नहीं है, तो कोई IME स्विचिंग नहीं होती है। कारबोर्ड रोटरी का समर्थन नहीं करता है, इसलिए यदि ओईएम ने रोटरी आईएमई प्रदान नहीं किया है तो उपयोगकर्ता रोटरी नियंत्रक के माध्यम से टेक्स्ट दर्ज नहीं कर सकता है।

RotaryIME एक डेमो रोटरी IME है। बुनियादी होते हुए भी, ऊपर वर्णित स्वचालित IME स्विचिंग को आज़माना पर्याप्त है। RotaryIME का सोर्स कोड packages/apps/Car/tests/RotaryIME/ में पाया जा सकता है।

ऑफ-स्क्रीन कुहनी

डिफ़ॉल्ट रूप से, जब उपयोगकर्ता स्क्रीन के किनारे को कुहनी मारने की कोशिश करता है, तो कुछ नहीं होता है। OEM किसी भी संयोजन को निर्दिष्ट करके चार दिशाओं में से प्रत्येक के लिए क्या होना चाहिए कॉन्फ़िगर कर सकता है:

  1. AccessibilityService द्वारा परिभाषित एक वैश्विक क्रिया। उदाहरण के लिए, GLOBAL_ACTION_BACK
  2. एक कुंजी कोड, जैसे KEYCODE_BACK
  3. एक यूआरएल के रूप में प्रतिनिधित्व गतिविधि शुरू करने का इरादा।

( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
ये RotaryService में निम्नलिखित सरणी संसाधनों को ओवरले करके निर्दिष्ट किए जाते हैं:

  • off_screen_nudge_global_actions : जब उपयोगकर्ता स्क्रीन के किनारे से ऊपर, नीचे, बाएँ या दाएँ कुहनी मारता है, तो प्रदर्शन करने के लिए वैश्विक क्रियाओं की सरणी। यदि इस सरणी का प्रासंगिक तत्व -1 है तो कोई वैश्विक क्रिया नहीं की जाती है।
  • off_screen_nudge_key_codes : जब उपयोगकर्ता स्क्रीन के किनारे से ऊपर, नीचे, बाएँ या दाएँ कुहनी से कुहनी मारता है, तो क्लिक इवेंट के प्रमुख कोड की सरणी इंजेक्ट करने के लिए। यदि इस सरणी का प्रासंगिक तत्व 0 ( KEYCODE_UNKNOWN ) है, तो कोई ईवेंट इंजेक्ट नहीं किया जाता है।
  • off_screen_nudge_intents : जब उपयोगकर्ता स्क्रीन के किनारे से ऊपर, नीचे, बाएँ या दाएँ कुहनी मारता है, तो गतिविधि शुरू करने के इरादे की सरणी। यदि इस सरणी का प्रासंगिक तत्व खाली है तो कोई गतिविधि शुरू नहीं होती है।

अन्य विन्यास

आपको निम्नलिखित RotaryService संसाधनों को ओवरले करना चाहिए:

  • ( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
    config_showHeadsUpNotificationOnBottom : यह दर्शाने के लिए बूलियन मान कि क्या शीर्ष के बजाय शीर्ष पर सूचनाओं को नीचे दिखाया जाना चाहिए। इसका मान frameworks/base/packages/CarSystemUI/res/values/config.xml में config_showHeadsUpNotificationOnBottom बूलियन संसाधन के समान होना चाहिए।
  • ( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
    notification_headsup_card_margin_horizontal : हेड-अप अधिसूचना विंडो के लिए बाएँ और दाएँ हाशिया। इसका मान पैकेज/ऐप्स/कार/ notification_headsup_card_margin_horizontal packages/apps/Car/Notification/res/values/dimens.xml में Notification_headsup_card_margin_horizontal dimen संसाधन के समान होना चाहिए
  • ( एंड्रॉयड 12 )
    excluded_application_overlay_window_titles : विंडो के शीर्षकों की एक सरणी जिसे ओवरले विंडो नहीं माना जाना चाहिए। इसमें एप्लिकेशन विंडो के शीर्षक शामिल होने चाहिए जो टास्क व्यू या TaskViews TaskDisplayAreas प्रतिनिधित्व करते हैं। डिफ़ॉल्ट रूप से, इस सूची में केवल "मानचित्र" होते हैं।

आप निम्न RotaryService संसाधन को ओवरले कर सकते हैं:

  • ( एंड्रॉइड 11 क्यूपीआर3, एंड्रॉइड 11 कार, एंड्रॉइड 12 )
    long_press_ms : यह दर्शाने के लिए पूर्णांक मान कि लॉन्ग-प्रेस को ट्रिगर करने के लिए केंद्र बटन को कितने मिलीसेकंड दबाए रखना चाहिए। शून्य इंगित करता है कि सिस्टम डिफ़ॉल्ट लॉन्ग-प्रेस टाइमआउट का उपयोग किया जाना चाहिए। यह व्यतिक्रम मूल्य है।