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

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

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

এইচডব্লিউ_কাস্টম_ইনপুট

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

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

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

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

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

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

কাস্টমইনপুটইভেন্ট এবং কার ইনপুট এপিআই

ইনপুটহালসার্ভিস হল গাড়ি পরিষেবা যা যানবাহন HAL থেকে একটি আগত HW_CUSTOM_INPUT গ্রহণ করে।

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

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

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

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

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

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

CarInputService থেকে আগত CustomInputEvents পরিচালনা করার জন্য OEM গুলি তাদের অ্যান্ড্রয়েড সিস্টেম পরিষেবা প্রদান করে।

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

OEM অ্যান্ড্রয়েড সিস্টেম পরিষেবাগুলি SystemApi এবং পাবলিক পদ্ধতিগুলি অ্যাক্সেস করতে পারে।

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

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

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

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

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