সক্রিয় ভিআইএ নির্বাচন করা হয় CarSettings-এ ManageAssistActivity
দ্বারা। এই প্রবাহটি PackageInstaller
অ্যাপ দ্বারা ট্রিগার করা হয়েছে, সেটিংস স্ক্রিনের ডিফল্ট অ্যাপস বিভাগের অংশ হিসেবে।
চিত্র 1. সেটিংস স্ক্রিনে ডিফল্ট অ্যাপ
নির্বাচিত ভিআইএ দুটি উপায়ে সিস্টেমের সংস্পর্শে আসে:
-
RolesManager
সিস্টেম পরিষেবার অংশ হিসাবে -
AssistUtils
অভ্যন্তরীণ API এর মাধ্যমেVoiceInteractionManagerService
দ্বারা।
ভূমিকার নাম android.app.role.ASSISTANT
সহ RolesManager
ব্যবহার করে প্রার্থী VIA-এর একটি তালিকা পাওয়া যেতে পারে।
হটওয়ার্ড ট্রিগারিং
Android হার্ডওয়্যার DSP-এর উপরে একটি বিমূর্ততা হিসাবে AlwaysOnHotwordDetector প্রদান করে। এটি একটি VoiceInteractionService
একটি ভয়েস মডেলের সাথে যুক্ত করার একটি সুবিধাজনক উপায় প্রদান করে যাতে সর্বদা কম শক্তি-চালু ভয়েস শনাক্তকরণের জন্য। এটি সবচেয়ে সাধারণ এবং সুপরিচিত মিথস্ক্রিয়া প্রবাহ, যেখানে ব্যবহারকারী একটি নতুন কথোপকথন শুরু করার জন্য একটি ভয়েস অ্যাপ্লিকেশন (VA) এর সাথে যোগাযোগ করার অনুরোধ করে৷ এইভাবে শুরু হওয়া ভয়েস সেশনগুলিকে SHOW_SOURCE_ASSIST_GESTURE flag
দিয়ে চিহ্নিত করা হয়।
চিত্র 2. হটওয়ার্ড ট্রিগারিং
কিংবদন্তি। সিস্টেম পরিষেবাগুলি হালকা নীল, ভিআইএ উপাদানগুলি সবুজ রঙে প্রদর্শিত হয়৷
PTT ট্রিগারিং
এটি একটি দীর্ঘ বা ছোট হার্ডওয়্যার বোতাম প্রেসের ক্ষেত্রে প্রযোজ্য। AAOS-এ, PTT CarInputService দ্বারা পরিচালিত হয়। একটি ডিফল্ট বাস্তবায়নে, এই পরিষেবাটি যানবাহন HAL এর মাধ্যমে প্রাপ্ত ইনপুট ইভেন্টগুলি পরিচালনা করে এবং ভয়েস ইন্টারঅ্যাকশনের বিশেষ ক্ষেত্রে, এটি মূল ইভেন্টগুলিতে নিম্নলিখিত যুক্তি প্রয়োগ করে:
- ছোট PTT ইভেন্টগুলি (
KeyEvent.KEYCODE_VOICE_ASSIST
) একটি নতুন ভয়েস সেশন শুরু করার জন্যVoiceInteractionManagerService
এ নির্দেশিত হয়৷ - দীর্ঘ পিটিটি ইভেন্টগুলি প্রথমে প্রজেকশন রিসিভারের কাছে হস্তান্তর করা হয় (উদাহরণস্বরূপ, অ্যান্ড্রয়েড অটো বা কারপ্লে), তারপরে ব্লুটুথ-সংযুক্ত ডিভাইসগুলিতে এবং অবশেষে স্থানীয় ভিআইএ অ্যাপে।
এই ফ্লো ব্যবহার করে শুরু হওয়া সেশনগুলিকে SHOW_SOURCE_PUSH_TO_TALK
দিয়ে চিহ্নিত করা হয়।
চিত্র 3. PTT ট্রিগারিং
AAOS-এ একটি হার্ডওয়্যার ভয়েস-কন্ট্রোল বোতাম সংহত করতে, স্বয়ংচালিত কী ইনপুট ইন্টিগ্রেশন দেখুন।
ট্যাপ-টু-টক ট্রিগারিং (বা সফ্টওয়্যার বোতাম)
সিস্টেম UI থেকে ভয়েস ইন্টারঅ্যাকশন ট্রিগার করা AssistUtil ব্যবহার করে করা হয়। এটি একটি লুকানো সিস্টেম API যা শুধুমাত্র বান্ডিল করা সিস্টেম অ্যাপ দ্বারা ব্যবহার করা যেতে পারে যেমন সিস্টেম UI যা সক্ষম করে:
- ভয়েস কন্ট্রোল সেশন শুরু করতে
VoiceInteractionManagerService
এর সাথে ইন্টারঅ্যাক্ট করা হচ্ছে। - বর্তমানে নির্বাচিত VIA কোনটি নির্ধারণ করুন।
নির্বাচিত VIA অ্যাপটিকে গতিশীলভাবে উপস্থাপন করতে, সিস্টেম UI RoleManager
ব্যবহার করতে পারে এবং ROLE_ASSISTANT
এর জন্য ভূমিকা ধারকের পরিবর্তনগুলি অনুসরণ করতে পারে৷ TTT ট্রিগারিং কিভাবে প্রয়োগ করা যায় তার একটি উদাহরণ CarSystemUI, AssistantButton
এ পাওয়া যাবে।
চিত্র 4. ট্যাপ-টু-টক ট্রিগারিং
ভয়েস সহকারী ট্যাপ-টু-রিড (TTR)
অটোমোটিভ-এ, বিজ্ঞপ্তি কেন্দ্রে পোস্ট করা বিজ্ঞপ্তিগুলিINBOX
বা INBOX_IN_GROUP
বিজ্ঞপ্তি হিসাবে চিহ্নিত (উদাহরণস্বরূপ, এসএমএস বার্তাগুলি) একটি প্লে অ্যাকশন বোতাম অন্তর্ভুক্ত করে, যা ব্যবহারকারীকে নির্বাচিত VIA দ্বারা উচ্চস্বরে বিজ্ঞপ্তি পড়তে দেয় এবং বিকল্পভাবে, ভয়েসের মাধ্যমে উত্তর দিতে দেয়৷চিত্র 5. বিজ্ঞপ্তি
এই প্রবাহটি কীভাবে বাস্তবায়ন করা যায় সে সম্পর্কে আরও তথ্যের জন্য, বার্তা পাঠানোর কমান্ডগুলি পরিচালনা করুন দেখুন।
গাড়ী লঞ্চার থেকে VIA লঞ্চ করুন
অন্য যেকোনো অ্যাপের মতো, VIA তাদের ম্যানিফেস্টে এক বা একাধিক লঞ্চার কার্যকলাপ অন্তর্ভুক্ত করতে পারে। এই ক্রিয়াকলাপগুলি কী করবে তা সিদ্ধান্ত নেওয়ার জন্য অ্যাপ বিকাশকারী এবং OEM এই অ্যাপটিকে আগে থেকে ইনস্টল করার জন্য সম্মতির উপর নির্ভর করে৷
গুরুত্বপূর্ণ। মোটরগাড়িতে, সিস্টেমের ক্রিয়াকলাপ সহ সমস্ত ক্রিয়াকলাপ, গাড়ি চালানোর সময় UX বিধিনিষেধের অধীন। লঞ্চার আইকন থেকে আপনি যে অভিজ্ঞতাটি সক্ষম করতে চান তা ড্রাইভিং করার সময় অবশ্যই উপলব্ধ থাকতে হবে, হয় এটিকে অনুমোদিত তালিকায় যুক্ত করুন (যদি আপনি একজন OEM হন) অথবা distractionOptimized
মেটাডেটা সহ কার্যকলাপটি টীকা করুন৷ আরও তথ্যের জন্য, ড্রাইভারের বিভ্রান্তি নির্দেশিকা দেখুন।
ডিএসপি এবং অডিও HAL
কনকারেন্ট ক্যাপচারে অডিও রেকর্ডিং এবং অডিও এইচএএল-এর বিষয়ে আপডেট করা নির্দেশিকা পর্যালোচনা করতে ভুলবেন না। এই APIগুলিতে অ্যাক্সেস হটওয়ার্ড সনাক্তকরণের কার্যকারিতার উপর উল্লেখযোগ্য প্রভাব ফেলতে পারে যেমন হটওয়ার্ডের প্রতিক্রিয়াতে ব্যাখ্যা করা হয়েছে।
অনুমতি
সিস্টেম-সুবিধাপ্রাপ্ত অনুমতি প্রদান করুন
প্রদত্ত যে বিশেষাধিকারপ্রাপ্ত অনুমতি ব্যবহারকারীর দ্বারা মঞ্জুর করা যায় না, যদি কোনও VIA-এর প্রয়োজন হয়, তাহলে OEM-গুলিকে অবশ্যই তাদের সিস্টেমের ছবিতে তাদের APK প্রিলোড করতে হবে এবং তাদের বিল্ডগুলিতে স্পষ্টভাবে সেই অনুমতিগুলি প্রদান করতে হবে৷ অনুমতির অনুরোধ দেখুন।
এটি করতে, আপনার প্রকল্পে একটি বিশেষাধিকার অনুমোদন তালিকা নির্ভরতা যোগ করুন:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
yourdata/etc/car
ফোল্ডারে সিস্টেম-সুবিধা অনুমতি তালিকার অনুমতি ফাইল যোগ করুন:
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
বিপজ্জনক অনুমতি প্রাক অনুদান
অনুমতির অনুরোধে নির্দেশিত হিসাবে, VIA-এর কিছু কার্যকারিতা অ্যাক্সেস করার জন্য ব্যবহারকারীর সম্মতি প্রয়োজন। এই অনুমতিগুলির মধ্যে কিছু ডিফল্ট VoiceInteractionService
এ আগে থেকে দেওয়া হয় (দেখুন DefaultPermissionGrantPolicy.java
)। ডিফল্ট হ্যান্ডলারের অনুমতি সম্পর্কে আরও তথ্যের জন্য, শুধুমাত্র ডিফল্ট হ্যান্ডলারে ব্যবহৃত অনুমতিগুলি দেখুন। এছাড়াও default-permissions.xml
কনফিগারেশন ফাইল ব্যবহার করে প্রাক-মঞ্জুরি দেওয়া সম্ভব। অনুমতির প্রাক-মঞ্জুরি সংক্রান্ত বিধিনিষেধের বিশদ বিবরণের জন্য, অ্যান্ড্রয়েড সামঞ্জস্যতা সংজ্ঞা নথি (CDD) এর বিভাগ 9 দেখুন।
গুরুত্বপূর্ণ। সমস্ত ক্ষেত্রে, শুধুমাত্র ডিফল্ট VIA-এর কাছে এই অনুমতিগুলি আগে থেকে দেওয়া থাকবে। যদি সিস্টেমে একাধিক ভিআইএ প্রিলোড করা থাকে, তবে নন-ডিফল্ট VIA অবশ্যই তার সেটআপের অংশ হিসাবে বা প্রথম ব্যবহারের সময় ব্যবহারকারীর কাছে স্পষ্টভাবে অনুমতির অনুরোধ করবে।
বিতরণ (প্রি-ইনস্টল এবং আপডেটগুলি স্থাপন)
প্রি-ইনস্টল করা VIA গুলিকে অবশ্যই /product/priv-apps
বা /vendor/priv-apps
পার্টিশন এবং ফোল্ডারের অধীনে থাকতে হবে ( পার্টিশন ওভারভিউ এবং বিল্ড প্রোডাক্ট পার্টিশনে পার্টিশন সম্পর্কে আরও দেখুন)।
দ্বিতীয় ক্ষেত্রে, বিক্রেতা পার্টিশনটি সিস্টেম থেকে আলাদাভাবে আপডেট করা যেতে পারে, এখানে হোস্ট করা অ্যাপগুলি @hide সিস্টেম API অ্যাক্সেস করতে পারবে না। আগে থেকে ইনস্টল করা অ্যাপগুলির অবস্থানের উপর নির্ভর করে, আপডেটগুলি একটি OTA ( OTA আপডেটগুলি দেখুন) হিসাবে বা একটি অ্যাপ স্টোর থেকে অ্যাপ আপডেটের মাধ্যমে সম্পাদন করা যেতে পারে।
কাস্টমাইজেশন
স্বয়ংচালিত-নির্দিষ্ট ধারণাগুলিতে উল্লিখিত হিসাবে, UI/UX সামঞ্জস্য এবং কাস্টমাইজেশন স্বয়ংচালিত অন্য যে কোনও ফর্ম ফ্যাক্টরের চেয়ে বেশি গুরুত্বপূর্ণ। সর্বাধিক আন্তঃব্যবহারযোগ্যতার জন্য, AAOS Car UI লাইব্রেরির ব্যবহার দৃঢ়ভাবে সুপারিশ করা হয়। এই লাইব্রেরিতে এমন উপাদান এবং সংস্থান রয়েছে যা OEMs দ্বারা কাস্টমাইজ করার জন্য ডিজাইন করা স্বয়ংচালিত অ্যাপগুলিতে একীভূত করা যেতে পারে। এইভাবে, একটি একক APK এমনভাবে তৈরি করা যেতে পারে যাতে এর UI প্রতিটি গাড়ির মডেলের ডিজাইনে কাস্টমাইজ করা যায়।