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

CarSettings-এ ManageAssistActivity দ্বারা সক্রিয় VIA নির্বাচন করা হয়। সেটিংস স্ক্রিনের ডিফল্ট অ্যাপস বিভাগের অংশ হিসেবে, PackageInstaller অ্যাপ দ্বারা এই প্রবাহটি ট্রিগার করা হয়।

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

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

নির্বাচিত VIA দুটি উপায়ে সিস্টেমের সংস্পর্শে আসে:

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

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

হটওয়ার্ড ট্রিগার করা হচ্ছে

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

হটওয়ার্ড ট্রিগার করা হচ্ছে

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

কিংবদন্তি। সিস্টেম পরিষেবাগুলি হালকা নীল রঙে, VIA উপাদানগুলি সবুজ রঙে প্রদর্শিত হয়।

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

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

  • ছোট PTT ইভেন্টগুলি ( KeyEvent.KEYCODE_VOICE_ASSIST ) একটি নতুন ভয়েস সেশন শুরু করার জন্য VoiceInteractionManagerService এ পাঠানো হয়।
  • দীর্ঘ PTT ইভেন্টগুলি প্রথমে প্রজেকশন রিসিভারগুলিতে (উদাহরণস্বরূপ, অ্যান্ড্রয়েড অটো বা কারপ্লে), তারপর ব্লুটুথ-সংযুক্ত ডিভাইসগুলিতে এবং অবশেষে স্থানীয় 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 বিজ্ঞপ্তি হিসাবে চিহ্নিত বিজ্ঞপ্তি কেন্দ্রে পোস্ট করা বিজ্ঞপ্তিগুলিতে (উদাহরণস্বরূপ, SMS বার্তা) একটি প্লে অ্যাকশন বোতাম অন্তর্ভুক্ত থাকে, যা ব্যবহারকারীকে নির্বাচিত VIA দ্বারা উচ্চস্বরে বিজ্ঞপ্তিগুলি পড়তে এবং ঐচ্ছিকভাবে, ভয়েসের মাধ্যমে উত্তর দিতে দেয়।

বিজ্ঞপ্তি

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

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

গাড়ির লঞ্চার থেকে VIA চালু করুন

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

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

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

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

অনুমতিসমূহ

সিস্টেম-বিশেষাধিকারপ্রাপ্ত অনুমতিগুলি মঞ্জুর করুন

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

এটি করার জন্য, আপনার প্রকল্পে একটি বিশেষাধিকার allowlist নির্ভরতা যোগ করুন:

Android.bp

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

yourdata/etc/car ফোল্ডারে system-privilege allowlist অনুমতি ফাইলটি যোগ করুন:

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) এর বিভাগ 9 দেখুন।

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

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

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

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

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

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