OEM के लिए इंटिग्रेशन गाइड

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

वीएचएएल

रोटरी कंट्रोलर में ये कार्रवाइयां की जा सकती हैं:

  • थोड़ा सा ऊपर, नीचे, बाएं, और दाएं करें.
  • घड़ी की दिशा में और घड़ी की उलटी दिशा में घुमाएं.
  • बीच वाला बटन दबाएं.
  • 'वापस जाएं' बटन दबाएं.
  • होम बटन दबाएं.
  • दूसरे बटन दबाएं, जैसे कि फ़ोन और मीडिया.

दस्तावेज़ के लिए hardware/interfaces/automotive/vehicle/2.0/types.hal पर जाएं सिस्टम की प्रॉपर्टी और उससे जुड़ी int32Values.

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

नज

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

  1. ACTION_DOWN
  2. KEYCODE_SYSTEM_NAVIGATION_RIGHT
  3. टारगेट डिसप्ले.

जब उपयोगकर्ता रोटरी कंट्रोलर रिलीज़ करता है, तो वीएचएएल को उसी प्रॉपर्टी का इस्तेमाल करना चाहिए और 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. 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

रोटरी कंट्रोलर को होल्ड पर रखने के दौरान, कोई दोहराया इवेंट जनरेट नहीं होना चाहिए एक दिशा में.

घुमाएं

जब उपयोगकर्ता रोटरी कंट्रोलर को घड़ी की दिशा में एक से दूसरी जगह घुमाता है (क्लिक करें), तो वीएचएएल को 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 एन॰

बीच वाला बटन

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

  1. ACTION_DOWN
  2. KEYCODE_DPAD_CENTER
  3. टारगेट डिसप्ले.

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

सेंटर बटन दबाकर रखने पर, दोहराए गए इवेंट जनरेट न करें.

'वापस जाएं' बटन

जब उपयोगकर्ता 'वापस जाएं' बटन दबाता है, तो वीएचएएल को HW_KEY_INPUT का इस्तेमाल करना चाहिए प्रॉपर्टी:int32Values

  1. ACTION_DOWN
  2. KEYCODE_BACK
  3. टारगेट डिसप्ले.

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

केंद्र बटन को दबाकर रखने पर कोई दोहराव इवेंट जनरेट नहीं होना चाहिए.

होम बटन

होम बटन को उसी तरह इस्तेमाल करें जैसे कि 'वापस जाएं' बटन को करते हैं, लेकिन इसके बजाय KEYCODE_HOME का इस्तेमाल किया जाता है कुल KEYCODE_BACK.

अन्य बटन

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

बिल्ड कॉन्फ़िगरेशन

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

PRODUCT_PACKAGES += CarRotaryController

डीबग बिल्ड में, यहां दिए गए पैकेज भी शामिल किए जा सकते हैं:

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

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

पसंद के मुताबिक बनाएं

OEM, फ़ोकस फ़ाइंडिंग लॉजिक, फ़ोकस हाइलाइट, और कुछ अन्य आइटम को पसंद के मुताबिक बना सकता है. ऐसा करने के लिए इन जगहों पर रिसॉर्स ओवरले मौजूद है:

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

नज इतिहास

OEM यह कॉन्फ़िगर कर सकता है कि दो तरह के रिमाइंडर का इतिहास चालू है या नहीं. अगर हां, तो कैश मेमोरी का साइज़ और समयसीमा खत्म होने की नीति. यह सब अलग-अलग कार-यूआई-लाइब्रेरी को ओवरराइड करके किया जाता है संसाधन.

इतिहास की कैश मेमोरी पर फ़ोकस करें

(Android 11 QPR3, Android 11 कार, Android 12)
हर FocusArea कैश मेमोरी में सबसे हाल का फ़ोकस किया गया व्यू, FocusArea पर क्लिक करें, ताकि FocusArea पर वापस जाते समय इस पर फ़ोकस किया जा सके. कार-यूआई-लाइब्रेरी के इन संसाधनों को ओवरले करके, इस कैश मेमोरी को कॉन्फ़िगर किया जा सकता है:

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

फ़ोकस-एरिया के इतिहास की कैश मेमोरी

(Android 11 QPR3, Android 11 कार, Android 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: क्या कैश मेमोरी को खाली करना है जब उपयोगकर्ता कंट्रोलर को घुमाता है.

रोटेशन

(Android 11 QPR3, Android 11 कार, Android 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),

हाइलाइट पर फ़ोकस करें

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

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

Android फ़्रेमवर्क, एट्रिब्यूट का इस्तेमाल करके डिफ़ॉल्ट तौर पर फ़ोकस हाइलाइट selectableItemBackground. Theme.DeviceDefault में, यह एट्रिब्यूट, Core में 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.

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

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

(Android 11 QPR3, Android 11 कार, Android 12)
इन संसाधनों का इस्तेमाल यह बताने के लिए किया जाता है कि व्यू कब फ़ोकस हुआ है, लेकिन नहीं दबाया गया है:

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

(Android 11 QPR3, Android 11 कार, Android 12)
इन संसाधनों का इस्तेमाल यह बताने के लिए किया जाता है कि किसी व्यू पर कब फ़ोकस किया जाता है और उसे दबाया जाता है:

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

कभी-कभी उपयोगकर्ता का ध्यान खींचने के लिए, बटन के बैकग्राउंड को हल्के रंग से दिखाया जाता है, जैसा कि ऊपर दिए गए उदाहरण में बताया गया है. इस वजह से, फ़ोकस हाइलाइट को देखने में परेशानी हो सकती है.

अच्छे बैकग्राउंड वाला बटन
दूसरी इमेज. अच्छे बैकग्राउंड वाला बटन

इस स्थिति में, डेवलपर सेकंडरी रंग:
  • (Android 11 QPR3, Android 11 कार, Android 12)
    car_ui_rotary_focus_fill_secondary_color
    car_ui_rotary_focus_stroke_secondary_color
  • (Android 12)
    car_ui_rotary_focus_pressed_fill_secondary_color
    car_ui_rotary_focus_pressed_stroke_secondary_color

इनमें से कोई भी रंग पारदर्शी हो सकता है और डाइमेंशन में से कोई भी शून्य हो सकता है. उदाहरण के लिए, सिर्फ़ एक झलक या सिर्फ़ आउटलाइन की ज़रूरत थी.

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

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

  • car_ui_enable_focus_area_foreground_highlight: इसके सबसे ऊपर एक हाइलाइट बनाएं FocusArea और उसके डिसेंडेंट. एओएसपी में, ड्रॉ करने लायक यह एक आउटलाइन है FocusArea के आस-पास. OEM इन्हें ओवरराइड कर सकते हैं: car_ui_focus_area_foreground_highlight ड्रॉ करने लायक.
  • car_ui_enable_focus_area_background_highlight: इसके सबसे ऊपर एक हाइलाइट बनाएं FocusArea लेकिन इसके डिसेंडेंट के पीछे. एओएसपी में, यह ड्रॉ करने लायक एक ठोस फ़िल होता है. OEM, ड्रॉ करने लायक car_ui_focus_area_background_highlight को बदल सकते हैं.

इनपुट के तरीके के एडिटर

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

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

(Android 11 QPR3, Android 11 कार, Android 12)
अगर OEM ने खास तौर पर रोटरी के लिए कोई IME बनाया है, तो उन्हें इसकी जानकारी देनी होगी rotary_input_method संसाधन में ComponentName. अगर यह संसाधन ऊपर से सेट किया जाता है, तो जब भी उपयोगकर्ता मुख्य यूनिट से इंटरैक्ट करता है, तब तय किए गए IME का इस्तेमाल किया जाता है इसे रोटरी कंट्रोलर के नज, रोटेशन, और सेंटर बटन से ऐक्सेस किया जा सकता है. जब उपयोगकर्ता किसी आइटम को छूता है तो पिछली IME का उपयोग किया जाएगा. 'वापस जाएं' बटन (और रोटरी पर मौजूद अन्य बटन) कंट्रोलर) का इस्तेमाल करने से IME चुनने पर कोई असर नहीं पड़ता. अगर इस संसाधन को ओवरले नहीं किया गया है, तो IME स्विच नहीं किया जाएगा होता है. Carboard, रोटरी के साथ काम नहीं करता. इसलिए, उपयोगकर्ता रोटरी के ज़रिए टेक्स्ट नहीं डाल सकता नियंत्रक को उस समय मिल सकता है जब OEM ने रोटरी IME उपलब्ध न कराया हो.

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

स्क्रीन से दूर रिमाइंडर

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

  1. AccessibilityService की ओर से तय की गई ग्लोबल कार्रवाई. उदाहरण के लिए, GLOBAL_ACTION_BACK.
  2. कुंजी कोड, जैसे कि KEYCODE_BACK.
  3. यूआरएल के तौर पर दिखाई जाने वाली गतिविधि को लॉन्च करने के इरादे से.

(Android 11 QPR3, Android 11 कार, Android 12)
इनका इस्तेमाल, नीचे दिए गए अरे रिसोर्स को ओवरले करके किया जाता है. RotaryService:

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

अन्य कॉन्फ़िगरेशन

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

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

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

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