OEM-এর জন্য ইন্টিগ্রেশন গাইড

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে VHAL-এ ঘূর্ণমান ইনপুটগুলি প্রক্রিয়া করা যায়, রোটারি পরিষেবা অন্তর্ভুক্ত করার জন্য আপনার বিল্ড কনফিগার করতে হয় এবং সমস্ত অ্যাপ জুড়ে ঘূর্ণমান অভিজ্ঞতা কীভাবে কাস্টমাইজ করা যায়। পূর্ব থেকে ইনস্টল করা OEM অ্যাপের জন্য, যেমন একটি OEM-প্রদত্ত লঞ্চার, দেখুন Car UI লাইব্রেরি (car-ui-library)

ভিএইচএএল

একটি ঘূর্ণমান নিয়ামক নিম্নলিখিত কর্ম সমর্থন করে:

  • উপরে, নিচে, বাম এবং ডান দিকে নাজ।
  • ঘড়ির কাঁটার দিকে এবং ঘড়ির কাঁটার বিপরীত দিকে ঘোরান।
  • কেন্দ্র বোতাম টিপুন।
  • ব্যাক বোতাম টিপুন।
  • হোম বোতাম টিপুন।
  • অন্যান্য বোতাম টিপুন, যেমন ফোন এবং মিডিয়া।

সিস্টেমের বৈশিষ্ট্য এবং সংশ্লিষ্ট int32Values ডকুমেন্টেশনের জন্য hardware/interfaces/automotive/vehicle/2.0/types.hal দেখুন।

VHAL এই ক্রিয়াগুলি পরিচালনা করা উচিত:

ঠেলা দেওয়া

ব্যবহারকারী যখন রোটারি কন্ট্রোলারটিকে ডানদিকে ঠেলে দেয়, তখন Android-এ একটি ইভেন্ট পাঠানোর জন্য VHAL-এর নিম্নলিখিত int32Values ​​সহ HW_KEY_INPUT প্রপার্টি ব্যবহার করা উচিত:

  1. ACTION_DOWN
  2. KEYCODE_SYSTEM_NAVIGATION_RIGHT
  3. লক্ষ্য প্রদর্শন।

ব্যবহারকারী যখন রোটারি কন্ট্রোলার রিলিজ করে, তখন VHAL-এর একই সম্পত্তি এবং 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 প্রপার্টি ব্যবহার করে Android-এ একটি ইভেন্ট পাঠাতে নিম্নলিখিত int32Values ​​সহ:

  1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
  2. এক (1) আটক।
  3. লক্ষ্য প্রদর্শন।

ইভেন্টের টাইমস্ট্যাম্প ন্যানোসেকেন্ডে অতিবাহিত সময়ে সেট করা উচিত।

ঘড়ির কাঁটার বিপরীত দিকে ঘূর্ণন একটি এক (1) সনাক্ত করা উচিত একই ইভেন্ট তৈরি করা উচিত তবে আটকের সংখ্যার জন্য -1 সহ।

যদি একই দিকে ঘূর্ণনের একাধিক ডিটেন্ট দ্রুত পর্যায়ক্রমে ঘটে থাকে, VHAL-এর উচিত ডিটেন্টগুলিকে একটি একক ইভেন্টে একত্রিত করা যাতে ইভেন্টগুলির সাথে সিস্টেমটি ওভারলোড না হয়। এই ক্ষেত্রে, ইভেন্টের টাইমস্ট্যাম্প হওয়া উচিত যখন ঘূর্ণনের প্রথম আটকা পড়েছিল৷ 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 প্রপার্টি ব্যবহার করে Android-এ একটি ইভেন্ট পাঠাতে নিম্নলিখিত int32Values ​​সহ:

  1. ACTION_DOWN
  2. KEYCODE_DPAD_CENTER
  3. লক্ষ্য প্রদর্শন।

ব্যবহারকারী যখন রোটারি কন্ট্রোলার রিলিজ করে, তখন VHAL-এর একই সম্পত্তি এবং ACTION_UP এর সাথে কীকোড ব্যবহার করা উচিত।

কেন্দ্র বোতাম চেপে ধরে থাকা অবস্থায় পুনরাবৃত্তি ইভেন্টগুলি তৈরি করবেন না।

ব্যাক বোতাম

ব্যবহারকারী যখন ব্যাক বোতাম টিপে, তখন VHAL-এর উচিত HW_KEY_INPUT প্রপার্টি ব্যবহার করে Android-এ একটি ইভেন্ট পাঠাতে নিম্নলিখিত int32Values ​​সহ:

  1. ACTION_DOWN
  2. KEYCODE_BACK
  3. লক্ষ্য প্রদর্শন।

ব্যবহারকারী যখন রোটারি কন্ট্রোলার রিলিজ করে, তখন VHAL-এর একই সম্পত্তি এবং ACTION_UP এর সাথে কীকোড ব্যবহার করা উচিত।

কেন্দ্র বোতামটি চেপে ধরে থাকা অবস্থায় কোনো পুনরাবৃত্তি ইভেন্ট তৈরি করা উচিত নয়।

হোম বাটন

হোম বোতামটি হ্যান্ডেল করুন যেমন আপনি ব্যাক বোতামটি করেন তবে KEYCODE_BACK এর পরিবর্তে KEYCODE_HOME দিয়ে।

অন্যান্য বোতাম

রোটারি কন্ট্রোলারে কোনো অতিরিক্ত বোতাম থাকলে, VHAL সেগুলি পরিচালনা করতে পারে তবে OEM পছন্দ করে কারণ সেগুলিকে Android এর দৃষ্টিকোণ থেকে রোটারির অংশ হিসাবে বিবেচনা করা হয় না। এগুলি সাধারণত ব্যাক এবং হোম বোতামগুলির মতো পরিচালনা করা হয় তবে বিভিন্ন কীকোড সহ। উদাহরণস্বরূপ, KEYCODE_CALL বা KEYCODE_MUSIC

কনফিগারেশন তৈরি করুন

রোটারি নেভিগেশন RotaryService নামে একটি অ্যাক্সেসিবিলিটি পরিষেবা দ্বারা সরবরাহ করা হয়। আপনার ডিভাইসের জন্য সিস্টেম ইমেজে এই পরিষেবাটি অন্তর্ভুক্ত করতে, আপনার মেকফাইলে নিম্নলিখিত লাইনটি যুক্ত করুন:

PRODUCT_PACKAGES += CarRotaryController

আপনি ডিবাগ বিল্ডগুলিতে নিম্নলিখিত প্যাকেজগুলি অন্তর্ভুক্ত করতে চাইতে পারেন:

যখন ডিভাইস বুট হয় এবং ব্যবহারকারীর সুইচ ঘটে তখন ঘূর্ণমান পরিষেবাটি স্বয়ংক্রিয়ভাবে সক্ষম হয়৷ এটি নিশ্চিত করে যে ব্যবহারকারী সেট-আপের সময় রোটারি কন্ট্রোলার ব্যবহার করতে পারেন।

আপনি যদি রোটারি কন্ট্রোলার সহ এবং ছাড়া গাড়ির জন্য একই বিল্ড ব্যবহার করেন, উপরে দেখানো হিসাবে CarRotaryController যোগ করুন যাতে প্রয়োজনীয় কোড বিল্ডে অন্তর্ভুক্ত করা হয়। নন-রোটারি কারগুলিতে রোটারি পরিষেবা সক্ষম হওয়া থেকে প্রতিরোধ করতে, packages/services/Car/service একটি খালি স্ট্রিং দিয়ে rotaryService স্ট্রিং রিসোর্স ওভারলে করার জন্য একটি স্ট্যাটিক RRO তৈরি করুন। আপনি একই বিল্ড ব্যবহার করবেন, তবে রোটারি এবং নন-রোটারি ডিভাইসের জন্য আলাদা পণ্য কনফিগারেশন থাকবে। শুধুমাত্র পরেরটি ওভারলে অন্তর্ভুক্ত করে।

কাস্টমাইজেশন

OEMগুলি নিম্নলিখিত অবস্থানগুলিতে রিসোর্স ওভারলেগুলির মাধ্যমে ফোকাস ফাইন্ডিং লজিক, ফোকাস হাইলাইট এবং কিছু অতিরিক্ত আইটেম কাস্টমাইজ করতে পারে:

  • car-ui-library packages/apps/Car/libs/car-ui-lib এ অবস্থিত
  • RotaryService packages/apps/Car/RotaryController অবস্থিত
  • Core frameworks/base/core অবস্থিত

নজ ইতিহাস

ওএম কনফিগার করতে পারে দুই ধরনের নাজ ইতিহাসের প্রতিটি সক্রিয় আছে কিনা এবং যদি তাই হয়, ক্যাশের আকার এবং মেয়াদ শেষ হওয়ার নীতি। এই সব করা হয় বিভিন্ন car-ui-লাইব্রেরি রিসোর্স ওভাররাইড করে।

ইতিহাস ক্যাশে ফোকাস করুন

( Android 11 QPR3, Android 11 Car, Android 12 )
এই প্রতি- FocusArea ক্যাশে FocusArea এর মধ্যে সবচেয়ে সাম্প্রতিক ফোকাস করা ভিউ সঞ্চয় করে যাতে FocusArea ফিরে যাওয়ার সময় এটি ফোকাস করা যায়। এই ক্যাশে নিম্নলিখিত car-ui-লাইব্রেরি সংস্থানগুলিকে ওভারলে করে কনফিগার করা যেতে পারে:

  • car_ui_focus_history_cache_type :
    1. ক্যাশে অক্ষম করা হয়েছে।
    2. ক্যাশে কিছু সময়ের পরে মেয়াদ শেষ হবে (নীচে দেখুন)।
    3. ক্যাশে কখনই মেয়াদ শেষ হবে না।
  • car_ui_focus_history_expiration_period_ms : ক্যাশের মেয়াদ শেষ হওয়ার কত মিলিসেকেন্ড আগে যদি ক্যাশের ধরনটি দুই (2) এ সেট করা থাকে (উপরে দেখুন)।

FocusArea ইতিহাস ক্যাশে

( Android 11 QPR3, Android 11 Car, Android 12 )
এই ক্যাশে নাজগুলির একটি ইতিহাস সঞ্চয় করে যাতে বিপরীত দিকে নাজিং একই FocusArea ফোকাস ফিরিয়ে আনতে পারে। এই ক্যাশে নিম্নলিখিত car-ui-লাইব্রেরি সংস্থানগুলিকে ওভারলে করে কনফিগার করা যেতে পারে:

  • 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 Car, Android 12 )
রোটেশনের জন্য মাউসের ত্বরণের মতো ত্বরণ আছে কিনা তা নির্দিষ্ট করতে OEM RotaryService এ দুটি পূর্ণসংখ্যা সম্পদকে ওভাররাইড করতে পারে:

  • rotation_acceleration_3x_ms : সময়ের ব্যবধান (মিলিসেকেন্ডে) Google-এর ঘূর্ণনের জন্য নিয়ন্ত্রক ঘূর্ণনকে ত্বরান্বিত করা উচিত কিনা তা সিদ্ধান্ত নিতে ব্যবহৃত হয়। যদি এই ডিটেন্ট এবং রোটেশনের আগের ডিটেন্টের মধ্যে ব্যবধান এই মানের থেকে ছোট হয়, তবে এটি ঘূর্ণনের তিনটি ডিটেন্ট হিসাবে বিবেচিত হবে। 3× ত্বরণ নিষ্ক্রিয় করতে এটি 2147483647 এ সেট করুন।
  • rotation_acceleration_2x_ms : 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 অ্যান্ড্রয়েড ফ্রেমওয়ার্কের ডিফল্ট ফোকাস হাইলাইট এবং car-ui-লাইব্রেরিতে একাধিক ফোকাস হাইলাইট রিসোর্সকে ওভাররাইড করতে পারে।

ডিফল্ট ফোকাস হাইলাইট

অ্যান্ড্রয়েড ফ্রেমওয়ার্ক selectableItemBackground বৈশিষ্ট্যের মাধ্যমে একটি ডিফল্ট ফোকাস হাইলাইট প্রদান করে। Theme.DeviceDefault এ, এই বৈশিষ্ট্যটি Coreitem_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 থাকবে।

car-ui-লাইব্রেরি Theme.DeviceDefault থেকে প্রাপ্ত একটি থিম ব্যবহার করে। ফলস্বরূপ, এই ওভারলে এই লাইব্রেরি ব্যবহার করে এমন অ্যাপ এবং Theme.DeviceDefault থেকে প্রাপ্ত যেকোন থিম ব্যবহার করে এমন অ্যাপগুলিকে প্রভাবিত করে। এটি সেই অ্যাপগুলিকে প্রভাবিত করবে না যেগুলি একটি সম্পর্কহীন থিম ব্যবহার করে, যেমন Theme.Material

car-ui-লাইব্রেরিতে হাইলাইট সংস্থানগুলিতে ফোকাস করুন

অ-আয়তাকার (যেমন গোলাকার বা পিল-আকৃতির) ফোকাস হাইলাইট এবং Theme.DeviceDefault থেকে পাওয়া যায় না এমন থিম ব্যবহার করে এমন অ্যাপগুলিতে ফোকাস হাইলাইট কীভাবে দেখায় তা নিয়ন্ত্রণ করতে OEM বেশ কয়েকটি car-ui-লাইব্রেরি সংস্থানগুলিকে ওভাররাইড করতে পারে। Theme.DeviceDefault । এই সংস্থানগুলিকে ওভারলেড করা উচিত যাতে ফোকাস হাইলাইট ডিফল্ট ফোকাস হাইলাইটের সাথে সঙ্গতিপূর্ণ হয়।

( Android 11 QPR3, Android 11 Car, 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 Car, Android 12 )
একটি ভিউ ফোকাস এবং চাপলে নির্দেশ করতে নিম্নলিখিত সংস্থানগুলি ব্যবহার করা হয়:

  • car_ui_rotary_focus_pressed_fill_color : রঙ পূরণ করুন।
  • car_ui_rotary_focus_pressed_stroke_color : রূপরেখার রঙ।
  • car_ui_rotary_focus_pressed_stroke_width : রূপরেখার পুরুত্ব।

কখনও কখনও একটি বোতাম ব্যবহারকারীর নজরে আনতে একটি কঠিন পটভূমির রঙ দেওয়া হয়, যেমন দেখানো উদাহরণে। এটি ফোকাস হাইলাইটকে দেখতে কঠিন করে তুলতে পারে।

কঠিন ব্যাকগ্রাউন্ড সহ বোতাম
চিত্র 2. কঠিন পটভূমি সহ বোতাম

এই পরিস্থিতিতে, বিকাশকারী সেকেন্ডারি রং ব্যবহার করে একটি কাস্টম ফোকাস হাইলাইট নির্দিষ্ট করতে পারেন:
  • ( Android 11 QPR3, Android 11 Car, Android 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

যেকোনও রং স্বচ্ছ হতে পারে এবং উভয় মাত্রা শূন্য হতে পারে যদি, উদাহরণস্বরূপ, আপনি শুধুমাত্র একটি পূরণ বা শুধুমাত্র একটি রূপরেখা চান।

ফোকাস এরিয়া হাইলাইট

( Android 11 QPR3, Android 11 Car, Android 12 )
FocusArea দুই ধরনের হাইলাইট আঁকতে পারে যখন এর বংশধরদের একজন ফোকাস করে। উভয়ই একত্রে ব্যবহার করা যেতে পারে, যদি ইচ্ছা হয়। এই বৈশিষ্ট্যটি AOSP-তে ডিফল্টরূপে অক্ষম করা হয়েছে, কিন্তু car-ui-লাইব্রেরি সংস্থানগুলিকে ওভাররাইড করে সক্ষম করা যেতে পারে:

  • car_ui_enable_focus_area_foreground_highlight : FocusArea এবং এর বংশধরের উপরে একটি হাইলাইট আঁকুন। AOSP-তে, এই অঙ্কনযোগ্য FocusArea চারপাশে একটি রূপরেখা। OEMs car_ui_focus_area_foreground_highlight অঙ্কনযোগ্য ওভাররাইড করতে পারে।
  • car_ui_enable_focus_area_background_highlight : FocusArea উপরে কিন্তু এর বংশধরদের পিছনে একটি হাইলাইট আঁকুন। AOSP-এ, এই অঙ্কনযোগ্য একটি কঠিন ভরাট। OEMs car_ui_focus_area_background_highlight অঙ্কনযোগ্য ওভাররাইড করতে পারে।

ইনপুট পদ্ধতি সম্পাদক

ইনপুট মেথড এডিটর (IME) হল ইনপুট পদ্ধতি। উদাহরণস্বরূপ, একটি অন-স্ক্রীন কীবোর্ড।

( Android 11 QPR3, Android 11 Car, Android 12 )
টাচ-ভিত্তিক IME-এর ComponentName নির্দিষ্ট করতে OEM-কে অবশ্যই RotaryServicedefault_touch_input_method স্ট্রিং রিসোর্স ওভারলে করতে হবে। উদাহরণস্বরূপ, যদি OEM Android Automotive-এর সাথে প্রদত্ত IME ব্যবহার করে, তাহলে তাদের com.google.android.apps.automotive.inputmethod/.InputMethodService উল্লেখ করা উচিত।

( Android 11 QPR3, Android 11 Car, Android 12 )
যদি OEM বিশেষভাবে রোটারির জন্য একটি IME তৈরি করে থাকে, তাহলে তাদের rotary_input_method রিসোর্সে এর ComponentName উল্লেখ করা উচিত। যদি এই সংস্থানটি ওভারলেড করা হয়, ব্যবহারকারী যখনই রোটারি কন্ট্রোলারের নাজ, ঘূর্ণন এবং কেন্দ্র বোতামের মাধ্যমে হেড ইউনিটের সাথে ইন্টারঅ্যাক্ট করে তখন নির্দিষ্ট আইএমই ব্যবহার করা হয়। ব্যবহারকারী যখন স্ক্রিনে স্পর্শ করবেন, তখন আগের আইএমই ব্যবহার করা হবে। পিছনের বোতাম (এবং রোটারি কন্ট্রোলারের অন্যান্য বোতাম) IME নির্বাচনের উপর কোন প্রভাব ফেলে না। যদি এই সংস্থানটি ওভারলেড না করা হয়, কোন IME স্যুইচিং ঘটে না। কার্বোর্ড রোটারি সমর্থন করে না তাই যদি OEM একটি ঘূর্ণমান IME প্রদান না করে থাকে তাহলে ব্যবহারকারী রোটারি কন্ট্রোলারের মাধ্যমে পাঠ্য লিখতে পারবেন না।

RotaryIME একটি ডেমো রোটারি আইএমই। মৌলিক হলেও, উপরে বর্ণিত স্বয়ংক্রিয় IME স্যুইচিং চেষ্টা করার জন্য এটি যথেষ্ট। RotaryIME এর সোর্স কোড packages/apps/Car/tests/RotaryIME/ -এ পাওয়া যাবে।

অফ-স্ক্রিন nudges

ডিফল্টরূপে, ব্যবহারকারী যখন স্ক্রিনের প্রান্তটি বন্ধ করার চেষ্টা করে, তখন কিছুই ঘটে না। ই এম কনফিগার করতে পারে যে কোন একটি সংমিশ্রণ নির্দিষ্ট করে চারটি দিকের প্রতিটির জন্য কী ঘটতে হবে:

  1. AccessibilityService দ্বারা সংজ্ঞায়িত একটি বিশ্বব্যাপী কর্ম। উদাহরণস্বরূপ, GLOBAL_ACTION_BACK
  2. একটি কী কোড, যেমন KEYCODE_BACK
  3. একটি URL হিসাবে উপস্থাপিত একটি কার্যকলাপ চালু করার একটি অভিপ্রায়৷

( Android 11 QPR3, Android 11 Car, 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 Car, Android 12 )
    config_showHeadsUpNotificationOnBottom : শীর্ষের বিপরীতে হেড-আপ বিজ্ঞপ্তিগুলি নীচে দেখানো উচিত কিনা তা প্রতিনিধিত্ব করার জন্য বুলিয়ান মান। frameworks/base/packages/CarSystemUI/res/values/config.xml এ এটির config_showHeadsUpNotificationOnBottom বুলিয়ান রিসোর্সের মতো একই মান থাকতে হবে
  • ( Android 11 QPR3, Android 11 Car, Android 12 )
    notification_headsup_card_margin_horizontal : হেডস-আপ বিজ্ঞপ্তি উইন্ডোর জন্য বাম এবং ডান মার্জিন। packages/apps/Car/Notification/res/values/dimens.xmlnotification_headsup_card_margin_horizontal ডাইমেন রিসোর্সের মতই এটির মান থাকতে হবে
  • ( অ্যান্ড্রয়েড 12 )
    excluded_application_overlay_window_titles : উইন্ডোর শিরোনামগুলির একটি অ্যারে যেটিকে ওভারলে উইন্ডো হিসাবে বিবেচনা করা উচিত নয়। এতে অ্যাপ উইন্ডোর শিরোনাম অন্তর্ভুক্ত করা উচিত যা TaskViews বা TaskDisplayAreas প্রতিনিধিত্ব করে। ডিফল্টরূপে, এই তালিকায় শুধুমাত্র "মানচিত্র" থাকে।

আপনি নিম্নলিখিত RotaryService সংস্থানগুলিকে ওভারলে করতে পারেন:

  • ( Android 11 QPR3, Android 11 Car, Android 12 )
    long_press_ms : একটি লং-প্রেস ট্রিগার করার জন্য কেন্দ্র বোতামটি কত মিলিসেকেন্ড চেপে রাখতে হবে তা প্রতিনিধিত্ব করার জন্য পূর্ণসংখ্যার মান। জিরো নির্দেশ করে যে সিস্টেম ডিফল্ট দীর্ঘ-প্রেস টাইমআউট ব্যবহার করা উচিত। এটি ডিফল্ট মান।