ইন্টিগ্রেশন প্রবাহ

CarSettings-এর ManageAssistActivity এর মাধ্যমে সক্রিয় VIA নির্বাচন করা হয়। Settings স্ক্রিনের Default apps সেকশনের অংশ হিসেবে PackageInstaller অ্যাপটি এই প্রক্রিয়াটি চালু করে।

সেটিংস স্ক্রিনে ডিফল্ট অ্যাপগুলি

চিত্র ১. সেটিংস স্ক্রিনের ডিফল্ট অ্যাপসমূহ

নির্বাচিত VIA-টি দুইভাবে সিস্টেমের সংস্পর্শে আসে:

  1. RolesManager সিস্টেম পরিষেবার অংশ হিসেবে
  2. AssistUtils অভ্যন্তরীণ API-এর মাধ্যমে VoiceInteractionManagerService দ্বারা।

android.app.role.ASSISTANT রোল নামটি ব্যবহার করে RolesManager মাধ্যমে সম্ভাব্য VIA-গুলির একটি তালিকা পাওয়া যেতে পারে।

হটওয়ার্ড ট্রিগারিং

অ্যান্ড্রয়েড হার্ডওয়্যার ডিএসপি-র উপরে একটি অ্যাবস্ট্রাকশন হিসেবে AlwaysOnHotwordDetector প্রদান করে। এটি কম শক্তি খরচকারী সর্বদা-সক্রিয় ভয়েস রিকগনিশনের জন্য একটি ভয়েস মডেলের সাথে একটি VoiceInteractionService যুক্ত করার একটি সুবিধাজনক উপায় প্রদান করে। এটি সবচেয়ে সাধারণ এবং সুপরিচিত ইন্টারঅ্যাকশন ফ্লো, যেখানে ব্যবহারকারী একটি নতুন কথোপকথন শুরু করার জন্য একটি ভয়েস অ্যাপ্লিকেশনের (VA) সাথে ইন্টারঅ্যাক্ট করার অনুরোধ করে। এইভাবে শুরু হওয়া ভয়েস সেশনগুলি SHOW_SOURCE_ASSIST_GESTURE flag দ্বারা চিহ্নিত করা হয়।

হটওয়ার্ড ট্রিগারিং

চিত্র ২. হটওয়ার্ড ট্রিগারিং

নির্দেশিকা। সিস্টেম পরিষেবাগুলো হালকা নীল রঙে এবং ভিআইএ (VIA) উপাদানগুলো সবুজ রঙে দেখানো হয়েছে।

পিটিটি ট্রিগারিং

এটি হার্ডওয়্যার বাটনের দীর্ঘ বা সংক্ষিপ্ত চাপের ক্ষেত্রে প্রযোজ্য। AAOS-এ, PTT পরিচালনা করে CarInputService । একটি ডিফল্ট বাস্তবায়নে, এই সার্ভিসটি Vehicle HAL-এর মাধ্যমে প্রাপ্ত ইনপুট ইভেন্টগুলো পরিচালনা করে, এবং বিশেষ করে ভয়েস ইন্টারঅ্যাকশনের ক্ষেত্রে, এটি কী ইভেন্টগুলোতে নিম্নলিখিত লজিক প্রয়োগ করে:

  • একটি নতুন ভয়েস সেশন শুরু করার জন্য সংক্ষিপ্ত PTT ইভেন্টগুলি ( KeyEvent.KEYCODE_VOICE_ASSIST ) VoiceInteractionManagerService এ পাঠানো হয়।
  • দীর্ঘ PTT ইভেন্টগুলি প্রথমে প্রজেকশন রিসিভারের (যেমন, Android Auto বা CarPlay) কাছে, তারপর ব্লুটুথ-সংযুক্ত ডিভাইসগুলির কাছে এবং অবশেষে স্থানীয় VIA অ্যাপের কাছে হস্তান্তর করা হয়।

এই ফ্লো ব্যবহার করে শুরু হওয়া সেশনগুলো SHOW_SOURCE_PUSH_TO_TALK দ্বারা চিহ্নিত করা হয়।

পিটিটি ট্রিগারিং

চিত্র ৩. পিটিটি ট্রিগারিং

AAOS-এ একটি হার্ডওয়্যার ভয়েস-কন্ট্রোল বাটন সংহত করতে, অটোমোটিভ কী ইনপুট ইন্টিগ্রেশন দেখুন।

ট্যাপ-টু-টক ট্রিগারিং (বা সফটওয়্যার বাটন)

সিস্টেম UI থেকে ভয়েস ইন্টারঅ্যাকশন চালু করা হয় AssistUtil ব্যবহার করে। এটি একটি লুকানো সিস্টেম API যা শুধুমাত্র বান্ডেল করা সিস্টেম অ্যাপগুলো ব্যবহার করতে পারে, যেমন সেই সিস্টেম UI যা নিম্নলিখিত বিষয়গুলো সক্ষম করে:

  • ভয়েস কন্ট্রোল সেশন শুরু করার জন্য VoiceInteractionManagerService সাথে ইন্টারঅ্যাক্ট করা হচ্ছে।
  • বর্তমানে নির্বাচিত VIA কোনটি তা নির্ধারণ করুন।

নির্বাচিত VIA অ্যাপটি ডায়নামিকভাবে প্রদর্শন করার জন্য, সিস্টেম UI, RoleManager ব্যবহার করতে পারে এবং ROLE_ASSISTANT রোল হোল্ডারের পরিবর্তনগুলো অনুসরণ করতে পারে। TTT ট্রিগারিং কীভাবে প্রয়োগ করতে হয় তার একটি উদাহরণ CarSystemUI-এর AssistantButton এ পাওয়া যাবে।

ট্যাপ-টু-টক ট্রিগারিং

চিত্র ৪. ট্যাপ-টু-টক ট্রিগারিং

ভয়েস অ্যাসিস্ট্যান্ট ট্যাপ-টু-রিড (TTR)

অটোমোটিভ ক্ষেত্রে, নোটিফিকেশন সেন্টারে পোস্ট করা INBOX বা INBOX_IN_GROUP নোটিফিকেশন (যেমন, এসএমএস বার্তা) হিসেবে চিহ্নিত বিজ্ঞপ্তিগুলিতে একটি প্লে অ্যাকশন বাটন থাকে, যা ব্যবহারকারীকে নির্বাচিত VIA দ্বারা বিজ্ঞপ্তিগুলি উচ্চস্বরে পড়িয়ে নিতে এবং ঐচ্ছিকভাবে, ভয়েসের মাধ্যমে উত্তর দেওয়ার সুযোগ দেয়।

বিজ্ঞপ্তি

চিত্র ৫. বিজ্ঞপ্তি

এই প্রবাহটি কীভাবে বাস্তবায়ন করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, "মেসেজিং কমান্ড পরিচালনা" দেখুন।

গাড়ি লঞ্চার থেকে VIA উৎক্ষেপণ করুন

অন্যান্য অ্যাপের মতোই, VIA-গুলো তাদের ম্যানিফেস্টে এক বা একাধিক লঞ্চার অ্যাক্টিভিটি অন্তর্ভুক্ত করতে পারে। এই অ্যাক্টিভিটিগুলো কী কাজ করবে, তা নির্ধারণ করার দায়িত্ব অ্যাপ ডেভেলপার এবং এই অ্যাপটি প্রি-ইনস্টল করতে সম্মত হওয়া OEM-এর উপর নির্ভর করে।

গুরুত্বপূর্ণ। অটোমোটিভ ক্ষেত্রে, গাড়ি চালানোর সময় সিস্টেম অ্যাক্টিভিটি সহ সমস্ত কার্যকলাপ ইউএক্স (UX) বিধিনিষেধের অধীন। যদি আপনি লঞ্চার আইকন থেকে যে অভিজ্ঞতাটি চালু করতে চান তা গাড়ি চালানোর সময় অবশ্যই উপলব্ধ থাকতে হয়, তবে হয় সেটিকে অ্যালাওলিস্টে (allowlist) যোগ করুন (যদি আপনি একজন ওইএম বা OEM হন) অথবা অ্যাক্টিভিটিটিকে distractionOptimized মেটাডেটা দিয়ে টীকাযুক্ত করুন। আরও তথ্যের জন্য, ড্রাইভার ডিস্ট্র্যাকশন গাইডলাইনস (Driver distraction guidelines ) দেখুন।

ডিএসপি এবং অডিও এইচএএল

কনকারেন্ট ক্যাপচার- এ যুগপৎ সর্বদা-চালু অডিও রেকর্ডিং এবং অডিও HAL সম্পর্কিত হালনাগাদ নির্দেশিকাগুলো অবশ্যই পর্যালোচনা করুন। রেসপন্ডিং টু হটওয়ার্ডস- এ যেমন ব্যাখ্যা করা হয়েছে, এই API-গুলোতে অ্যাক্সেস হটওয়ার্ড ডিটেকশনের পারফরম্যান্সের উপর উল্লেখযোগ্য প্রভাব ফেলতে পারে।

অনুমতি

সিস্টেম-বিশেষাধিকারপ্রাপ্ত অনুমতি প্রদান করুন

যেহেতু ব্যবহারকারী বিশেষাধিকারপ্রাপ্ত অনুমতি প্রদান করতে পারেন না, তাই কোনো VIA-এর যদি সেগুলোর কোনোটির প্রয়োজন হয়, তবে OEM-দের অবশ্যই তাদের সিস্টেম ইমেজে APK প্রি-লোড করতে হবে এবং তাদের বিল্ডে সেই অনুমতিগুলো স্পষ্টভাবে প্রদান করতে হবে। অনুমতি অনুরোধ দেখুন।

এটি করার জন্য, আপনার প্রজেক্টে একটি প্রিভিলেজ অ্যালাওলিস্ট ডিপেন্ডেন্সি যোগ করুন:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

`system-privilege allowlist` পারমিশন ফাইলটি ` 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 কনফিগারেশন ফাইল ব্যবহার করেও আগে থেকে অনুমতি দেওয়া সম্ভব। আগে থেকে অনুমতি দেওয়ার ক্ষেত্রে বিধিনিষেধ সম্পর্কে বিস্তারিত জানতে, Android Compatibility Definition Document (CDD)- এর সেকশন ৯ দেখুন।

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

বিতরণ (প্রি-ইনস্টল এবং ডেপ্লয় আপডেট)

পূর্ব-ইনস্টল করা VIA-গুলি অবশ্যই /product/priv-apps অথবা /vendor/priv-apps পার্টিশন এবং ফোল্ডারের অধীনে থাকতে হবে (পার্টিশন সম্পর্কে আরও জানতে পার্টিশন ওভারভিউ এবং বিল্ড প্রোডাক্ট পার্টিশন দেখুন)।

দ্বিতীয় ক্ষেত্রে, যেহেতু ভেন্ডর পার্টিশনটি সিস্টেম থেকে আলাদাভাবে আপডেট করা যেতে পারে, তাই এখানে হোস্ট করা অ্যাপগুলো @hide সিস্টেম এপিআই অ্যাক্সেস করতে পারবে না। আগে থেকে ইনস্টল করা অ্যাপগুলোর অবস্থানের উপর নির্ভর করে, আপডেটগুলো ওটিএ (OTA) হিসেবে ( ওটিএ আপডেট দেখুন) অথবা কোনো অ্যাপ স্টোর থেকে অ্যাপ আপডেটের মাধ্যমে সম্পন্ন হতে পারে।

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

অটোমোটিভ-নির্দিষ্ট ধারণা অংশে যেমন উল্লেখ করা হয়েছে, অন্য যেকোনো ফর্ম ফ্যাক্টরের তুলনায় অটোমোটিভে UI/UX সামঞ্জস্য এবং কাস্টমাইজেশন বেশি গুরুত্বপূর্ণ। সর্বোচ্চ ইন্টারঅপারেবিলিটির জন্য, AAOS কার UI লাইব্রেরি ব্যবহারের জন্য জোরালোভাবে সুপারিশ করা হয়। এই লাইব্রেরিতে এমন সব কম্পোনেন্ট এবং রিসোর্স রয়েছে যা OEM-দের দ্বারা কাস্টমাইজ করার জন্য ডিজাইন করা অটোমোটিভ অ্যাপে ইন্টিগ্রেট করা যেতে পারে। এইভাবে, একটিমাত্র APK এমনভাবে তৈরি করা যায় যাতে এর UI প্রতিটি গাড়ির মডেলের ডিজাইনের সাথে মিলিয়ে কাস্টমাইজ করা যায়।