OEM কাস্টম ইনপুট

নতুন এবং অ-মানক Android বৈশিষ্ট্যগুলির জন্য নতুন গাড়ি ইনপুট ইভেন্ট যোগ করতে OEM কাস্টম ইনপুটগুলি ব্যবহার করুন৷ অ-মানক ইনপুট ইভেন্টগুলি বিদ্যমান Android KeyEvent দ্বারা ম্যাপ করা হয় না, যা জেনেরিক এবং যেকোনো Android পৃষ্ঠে কাজ করার জন্য ডিজাইন করা হয়েছে কিন্তু OEM-নির্দিষ্ট বৈশিষ্ট্যগুলি বাস্তবায়নের জন্য প্রসারিত করা হয়নি৷ উদাহরণস্বরূপ, স্টিয়ারিং হুইল নিয়ন্ত্রণে অবস্থিত একটি বোতাম যা চাপলে, গাড়ির বর্তমান অবস্থান সহ একটি মানচিত্র অ্যাপ (একটি অভিপ্রায়ের মাধ্যমে) খোলে৷ এই বৈশিষ্ট্যটি চালকদের গাড়ি চালানোর সময় বিভ্রান্ত না হয়ে তাদের বর্তমান অবস্থান কল্পনা করতে সক্ষম করে।

এই নিবন্ধটি বর্ণনা করে যে কীভাবে একটি বিদ্যমান Android KeyEvent পুনঃব্যবহার করতে একটি CustomInputEvent তৈরি করতে হবে শুধুমাত্র তখনই যখন কোনো Android KeyEvent বৈশিষ্ট্য উপস্থাপন করতে ব্যবহার করা যাবে না।

HW_CUSTOM_INPUT

একটি OEM কাস্টম ইনপুট HW_CUSTOM_INPUT এবং CustomInputEvent.java দ্বারা প্রতিনিধিত্ব করা হয়। HW_CUSTOM_INPUT হল নেটিভ ইভেন্ট, গাড়ির হার্ডওয়্যার (যানবাহন HAL) দ্বারা তাৎক্ষণিক৷ এই ইভেন্টটি কিভাবে ইনস্ট্যান্টিউট করা যায় তা OEM নির্ধারণ করে। VehiclePropertyAccess:READ সহ HW_CUSTOM_INPUT- এ অ্যাক্সেস [রিড অনলি]{:.external} হিসেবে সেট করা হয়েছে।

যানবাহন HAL সর্বদা সর্বশেষ উপলব্ধ মান সম্প্রচার করতে পারে তা নিশ্চিত করতে, HW_CUSTOM_INPUT বিজ্ঞপ্তিটি VehiclePropertyChangeMode:ON_CHANGE সহ ON_CHANGE হিসাবে সেট করা হয়েছে।

HW_CUSTOM_INPUT মানগুলি জেনেরিক int32 এর একটি অ্যারে দ্বারা গঠিত, [গ্লোবাল]{:.এক্সটার্নাল} হিসাবে সেট করা হয়েছে ( VehicleArea:GLOBAL সহ) তিনটি জেনেরিক পূর্ণসংখ্যা হল:

  1. প্রথম উপাদানটি OEM দ্বারা সংজ্ঞায়িত করা ইনপুট কোড প্রতিনিধিত্ব করে। আপনি ইনপুট কোডের সাথে যেকোনো শব্দার্থিক যুক্ত করতে পারেন।

  2. দ্বিতীয় উপাদান লক্ষ্য প্রদর্শন সংরক্ষণ করে, যেমন প্রধান প্রদর্শন বা ক্লাস্টার।

  3. তৃতীয় উপাদানটিতে ইভেন্টটি কতবার পুনরাবৃত্তি হয়েছিল তা রয়েছে। উদাহরণস্বরূপ, একটি বোতাম কতবার চাপা হয়েছিল তা নির্দেশ করতে।

CustomInputEvent এবং গাড়ী ইনপুট API

InputHalService হল একটি গাড়ি পরিষেবা যা HAL থেকে HW_CUSTOM_INPUT একটি ইনকামিং পায়৷

InputHalService আগত HW_CUSTOM_INPUT CustomInputEvent এ রূপান্তর করে, একটি জাভা পার্সেলেবল শ্রেণী যা car-lib/src/android/car/input- এ অবস্থিত, সংশ্লিষ্ট aidl ইন্টারফেস সহ।

CarInputService , একটি মূল কার ইনপুট পরিষেবা, ইনকামিং কাস্টমইনপুট ইভেন্টগুলি গ্রহণ করে এবং তারপর সেগুলিকে যেকোন নিবন্ধিত Android সিস্টেম পরিষেবাতে পাঠায়৷

ইনকামিং কাস্টমইনপুট ইভেন্টগুলি নিবন্ধন করতে এবং গ্রহণ করতে, সিস্টেম পরিষেবাগুলি অবশ্যই:

নিম্নলিখিত চিত্রটি একটি OEM কাস্টম ইনপুট ইভেন্টের কর্মপ্রবাহকে চিত্রিত করে৷

OEM কাস্টম ইনপুট ওয়ার্কফ্লো

OEM অ্যান্ড্রয়েড সিস্টেম পরিষেবা

OEM গুলি CarInputService থেকে ইনকামিং CustomInputEvents পরিচালনা করতে তাদের Android সিস্টেম পরিষেবা প্রদান করে৷

শুধুমাত্র android.permission.INJECT_EVENTS বিশেষাধিকার অনুমতি দ্বারা চিহ্নিত পরিষেবাগুলিই কার ইনপুট API ( CarInputManager ) থেকে কাস্টমইনপুট ইভেন্টগুলি নিবন্ধন করতে এবং গ্রহণ করতে পারে৷ এই অ্যান্ড্রয়েড সিস্টেমের অনুমতির সাথে কোন তৃতীয় পক্ষের পরিষেবা বা অ্যাপ্লিকেশন স্বাক্ষর করা যাবে না (শুধুমাত্র OEM পরিষেবাগুলি)। অতএব, কোনো তৃতীয় পক্ষের পরিষেবা বা অ্যাপ্লিকেশন কার ইনপুট API এর বিরুদ্ধে নিবন্ধন করতে পারবে না।

OEM Android সিস্টেম পরিষেবাগুলি SystemApi এবং সর্বজনীন পদ্ধতিগুলি অ্যাক্সেস করতে পারে৷

রেফারেন্স বাস্তবায়ন

প্যাকেজ/পরিষেবা/কার/টেস্ট/SampleCustomInputService- এ রেফারেন্স বাস্তবায়ন দেখুন, যা একটি উদাহরণ এবং একটি নির্দেশিকা হিসাবে দেওয়া হয়েছে। উদাহরণস্বরূপ, স্টিয়ারিং হুইল নিয়ন্ত্রণে একটি নতুন বোতাম যুক্ত করতে। চাপলে, এই নতুন বোতামটি বর্তমান গাড়ির অবস্থানের সাথে মানচিত্র অ্যাপ শুরু করে।

এই উদাহরণে, OEM এই নতুন বৈশিষ্ট্যটি উপস্থাপন করতে INPUT_CODE_F1 (প্রথম CustomInputEvent সুবিধার ফাংশন) নির্বাচন করেছে (বর্তমান গাড়ির অবস্থানের সাথে মানচিত্র অ্যাপটি খোলা)।

স্টার্ট আপের সময়, এই পরিষেবাটি requestInputEventCapture এর মাধ্যমে CarInputManager বিরুদ্ধে নিজেকে নিবন্ধন করে ( রেফারেন্স বাস্তবায়ন রেজিস্ট্রেশন কোড দেখুন।

ইনকামিং CustomInputEvents গ্রহণ করার সময়, এই পরিষেবাটি মানচিত্র অ্যাপ শুরু করার অভিপ্রায় পাঠায়। এটি কীভাবে সম্পন্ন হয় তা জানতে, CustomInputEventListener.java দেখুন।