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

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

वीएचएएल

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

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

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

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

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

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

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

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

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

  • 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 को Android पर एक ईवेंट भेजने के लिए निम्नलिखित int32Values ​​के साथ HW_ROTARY_INPUT प्रॉपर्टी का उपयोग करना चाहिए:

  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 को Android पर एक ईवेंट भेजने के लिए निम्नलिखित int32Values ​​के साथ HW_KEY_INPUT प्रॉपर्टी का उपयोग करना चाहिए:

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

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

केंद्र बटन दबाए रखने पर बार-बार ईवेंट उत्पन्न न करें।

पिछला बटन

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

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

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

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

होम बटन

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

अन्य बटन

यदि रोटरी नियंत्रक में कोई अतिरिक्त बटन शामिल हैं, तो वीएचएएल उन्हें OEM की पसंद के अनुसार संभाल सकता है क्योंकि एंड्रॉइड के परिप्रेक्ष्य से उन्हें रोटरी का हिस्सा नहीं माना जाता है। इन्हें आम तौर पर बैक और होम बटन की तरह नियंत्रित किया जाता है लेकिन अलग-अलग कीकोड के साथ। उदाहरण के लिए, 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 में स्थित है

इतिहास को कुरेदें

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

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

( एंड्रॉइड 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 : जब उपयोगकर्ता नियंत्रक को घुमाता है तो कैश को खाली करना है या नहीं।

ROTATION

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

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

त्वरण तब सबसे अच्छा काम करता है जब वीएचएएल की आवश्यकता के अनुसार रोटेशन के प्रत्येक डिटेंट के लिए अलग-अलग टाइमस्टैम्प होते हैं। यदि ये उपलब्ध नहीं हैं, तो 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),

फोकस हाइलाइट

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

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

एंड्रॉइड फ्रेमवर्क selectableItemBackground विशेषता के माध्यम से एक डिफ़ॉल्ट फोकस हाइलाइट प्रदान करता है। Theme.DeviceDefault में, यह विशेषता Core में item_background.xml को संदर्भित करती है। डिफ़ॉल्ट फोकस हाइलाइट ड्रॉएबल को बदलने के लिए OEM item_background.xml 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 जैसी असंबंधित थीम का उपयोग करते हैं।

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

OEM यह नियंत्रित करने के लिए कई कार-यूआई-लाइब्रेरी संसाधनों को ओवरराइड कर सकता है कि गैर-आयताकार (जैसे गोल या गोली के आकार) फोकस हाइलाइट वाले दृश्यों पर फोकस हाइलाइट कैसा दिखता है और उन ऐप्स में जो थीम का उपयोग करते हैं जो 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 दो प्रकार के हाइलाइट खींच सकता है। अगर चाहें तो दोनों को एक साथ इस्तेमाल किया जा सकता है। यह सुविधा AOSP में डिफ़ॉल्ट रूप से अक्षम है, लेकिन कार-यूआई-लाइब्रेरी संसाधनों को ओवरराइड करके सक्षम किया जा सकता है:

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

इनपुट मेथड संपादक

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

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

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

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

ऑफ-स्क्रीन नोक-झोंक

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

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

( एंड्रॉइड 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 : हेड-अप नोटिफिकेशन विंडो के लिए बाएँ और दाएँ मार्जिन। इसका मान packages/apps/Car/Notification/res/values/dimens.xml में notification_headsup_card_margin_horizontal डिमेन संसाधन के समान होना चाहिए।
  • ( एंड्रॉइड 12 )
    excluded_application_overlay_window_titles : विंडोज़ के शीर्षकों की एक श्रृंखला जिसे ओवरले विंडोज़ नहीं माना जाना चाहिए। इसमें ऐप विंडो के शीर्षक शामिल होने चाहिए जो TaskViews या TaskDisplayAreas का प्रतिनिधित्व करते हैं। डिफ़ॉल्ट रूप से, इस सूची में केवल "मानचित्र" शामिल हैं।

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

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