গাড়ির জন্য Android এ আপনার মিডিয়া অ্যাপ প্রসারিত করুন

অ্যান্ড্রয়েড অটো বা অ্যান্ড্রয়েড অটোমোটিভ ওএস চালিত যানবাহনগুলিতে আপনার অ্যাপটি নিয়ে আসুন। এমন একটি অ্যাপ আর্কিটেকচার ব্যবহার করুন যা উভয় ক্ষেত্রেই কাজ করে, যাতে প্রত্যেক ব্যবহারকারী আপনার অ্যাপটি উপভোগ করতে পারেন।

গাড়ির জন্য অ্যান্ড্রয়েড কী?

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

গাড়ির জন্য তৈরি অ্যান্ড্রয়েড অ্যাপগুলোকে সবার আগে চালকের মনোযোগ বিঘ্নিত হওয়া থেকে বিরত থাকতে হবে। ভয়েস কমান্ড ব্যবহার এবং একটি অত্যন্ত কার্যকরী ভিজ্যুয়াল ডিজাইনের মতো সেরা পদ্ধতিগুলো অনুসরণ করে আপনি মনোযোগ বিঘ্নিত হওয়ার সম্ভাবনা কমাতে পারেন। এভাবে, আপনার মিডিয়া অ্যাপটি চালককে শুধুমাত্র প্রাসঙ্গিক সময়েই সময়োপযোগী তথ্য দেখাতে পারবে এবং সাধারণ কাজগুলোর জন্য অনুমানযোগ্য প্যাটার্ন ব্যবহার করতে পারবে।

অ্যান্ড্রয়েড অটো

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

অ্যান্ড্রয়েড অটোমোটিভ ওএস

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

সমর্থিত অ্যাপ বিভাগ

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

MediaLibraryService এবং MediaSession ব্যবহার করে মিডিয়া অ্যাপ তৈরি করা হয়। অ্যান্ড্রয়েড অটোমোটিভ ওএস-এ, আপনি Views বা Compose ব্যবহার করে সাইন-ইন এবং সেটিংস স্ক্রিনও (গাড়ি পার্ক করা অবস্থায় ব্যবহারের জন্য) তৈরি করতে পারেন।

ভিডিও অ্যাপ ব্যবহারকারীদের গাড়ি পার্ক করা অবস্থায় স্ট্রিমিং ভিডিও দেখার সুযোগ দেয়। এই অ্যাপগুলোর মূল উদ্দেশ্য হলো স্ট্রিমিং ভিডিও প্রদর্শন করা। এই অ্যাপগুলো ভিউস (Views) বা কম্পোজ (Compose) ব্যবহার করে তৈরি করা হয়। আরও তথ্যের জন্য, অ্যান্ড্রয়েড অটোমোটিভ ওএস-এর জন্য ভিডিও প্লেব্যাক অ্যাপ তৈরি করুন (Build video playback apps for Android Automotive OS ) দেখুন। অ্যান্ড্রয়েড অটোমোটিভ ওএস- এর জন্য ভিডিও অ্যাপ তৈরি করুন (Build video apps for Android Automotive OS) -এ আরও তথ্য পাওয়া যাবে।

গাড়ির জন্য অডিও প্লেব্যাক অ্যাপ তৈরি করুন

এই নির্দেশিকাটি ধরে নেয় যে আপনার কাছে আগে থেকেই একটি সাধারণ মিডিয়া প্লেব্যাক অ্যাপ আছে। যদি না থাকে, তবে শুরু করার জন্য, “একটি সাধারণ মিডিয়া প্লেয়ার অ্যাপ তৈরি করুন” অংশে যান।

এই নির্দেশিকাটিতে আপনাকে কী করতে হবে সে সম্পর্কে তথ্য দেওয়া হয়েছে এবং এতে সুনির্দিষ্ট নির্দেশনাসহ আরও তথ্যের লিঙ্কও অন্তর্ভুক্ত রয়েছে।

প্লেব্যাক উপাদান

মিডিয়া৩ প্লেব্যাক ব্যবহারের জন্য বেশ কিছু গুরুত্বপূর্ণ উপাদান সরবরাহ করে। আপনি যদি পূর্ববর্তী অ্যান্ড্রয়েড মিডিয়া লাইব্রেরি নিয়ে কাজ করে থাকেন, তবে এই উপাদানগুলো যে ক্লাসগুলো দিয়ে গঠিত, সেগুলো আপনার কাছে পরিচিত মনে হবে।

নিম্নলিখিত ডায়াগ্রামটি দেখায় যে একটি সাধারণ অ্যাপে এই উপাদানগুলি কীভাবে একত্রিত হয়।

Media3 ব্যবহারকারী একটি মিডিয়া অ্যাপের বিভিন্ন উপাদান তাদের ইন্টারফেস এবং ক্লাস শেয়ার করার কারণে বেশ কিছু সহজ উপায়ে একে অপরের সাথে সংযুক্ত হয়।
চিত্র ১ : মিডিয়া অ্যাপের উপাদানসমূহ

আরও তথ্যের জন্য, প্লেব্যাক উপাদানসমূহ দেখুন।

একটি MediaLibraryService এবং MediaLibrarySession বাস্তবায়ন করুন

একটি MediaLibraryService আপনার মিডিয়া লাইব্রেরি পরিবেশন করতে এবং তাতে অ্যাক্সেস দেওয়ার জন্য একটি প্রমিত API প্রদান করে। আপনার মিডিয়া অ্যাপে Android Auto বা Android Automotive OS-এর জন্য সাপোর্ট যোগ করার সময় এটির প্রয়োজন হয়, কারণ এই প্ল্যাটফর্মগুলো আপনার মিডিয়া লাইব্রেরির জন্য তাদের নিজস্ব ড্রাইভার-নিরাপদ UI প্রদান করে। একটি MediaLibraryService প্রয়োগ এবং ব্যবহার সম্পর্কে আরও তথ্যের জন্য, "MediaLibraryService দিয়ে কন্টেন্ট পরিবেশন করুন" দেখুন।

প্লেব্যাক নিয়ন্ত্রণের জন্য একটি মিডিয়া সেশন ব্যবহার করুন। MediaSession API একটি অডিও বা ভিডিও প্লেয়ারের সাথে ইন্টারঅ্যাক্ট করার একটি সার্বজনীন উপায় প্রদান করে। Jetpack Media3 লাইব্রেরিতে MediaLibrarySession অন্তর্ভুক্ত রয়েছে, যা কন্টেন্ট ব্রাউজিং API যোগ করার জন্য MediaSession প্রসারিত করে।

একটি প্লেয়ারের সাথে মিডিয়া সেশন সংযোগ করলে, অ্যাপটি বাহ্যিকভাবে মিডিয়া প্লেব্যাকের বিজ্ঞাপন দিতে পারে এবং অ্যান্ড্রয়েড অটো, অ্যান্ড্রয়েড অটোমোটিভ ওএস বা গুগল অ্যাসিস্ট্যান্টের মতো বাহ্যিক উৎস থেকে প্লেব্যাক কমান্ড গ্রহণ করতে পারে। আরও তথ্যের জন্য, ‘একটি MediaSession ব্যবহার করে প্লেব্যাক নিয়ন্ত্রণ ও বিজ্ঞাপন দেওয়া’ এবং ‘একটি MediaLibrarySession ব্যবহার করা’ দেখুন।

ন্যূনতমপক্ষে, আপনার মিডিয়া সেশনে নিম্নলিখিত প্লেয়ার কমান্ডগুলোর জন্য সমর্থন ঘোষণা করা উচিত:

প্লেব্যাক কন্ট্রোল সক্ষম করুন নির্দেশিকাটিতে গাড়িতে আপনার প্লেব্যাক কন্ট্রোলগুলো কাস্টমাইজ করার উপায়গুলো বর্ণনা করা হয়েছে।

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

এই প্ল্যাটফর্মগুলো আপনার কন্টেন্ট লাইব্রেরির গঠনের উপর অতিরিক্ত সীমাবদ্ধতা আরোপ করে। আপনার কন্টেন্ট লাইব্রেরি কীভাবে প্রদর্শিত হবে তা কাস্টমাইজ করার বিস্তারিত তথ্যের জন্য, ‘আপনার মিডিয়া ব্রাউজার পরিষেবা তৈরি করুন’ নির্দেশিকাটি দেখুন।

অ্যান্ড্রয়েড অটোর জন্য সমর্থন ঘোষণা করুন

আপনার ফোন অ্যাপটি যে অ্যান্ড্রয়েড অটো সমর্থন করে, তা ঘোষণা করতে নিম্নলিখিত ম্যানিফেস্ট এন্ট্রিটি ব্যবহার করুন:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

এই ম্যানিফেস্ট এন্ট্রিটি একটি XML ফাইলকে নির্দেশ করে, যা ঘোষণা করে আপনার অ্যাপটি কী কী অটোমোটিভ সক্ষমতা সমর্থন করে। আপনার একটি মিডিয়া অ্যাপ আছে তা বোঝানোর জন্য, আপনার প্রোজেক্টের res/xml/ ডিরেক্টরিতে automotive_app_desc.xml নামের একটি XML ফাইল যোগ করুন। এই ফাইলটিতে নিম্নলিখিত বিষয়বস্তু অন্তর্ভুক্ত থাকা উচিত:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

অ্যান্ড্রয়েড অটোমোটিভ ওএস-এর জন্য সমর্থন ঘোষণা করুন।

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

আপনার প্রজেক্টে একটি অটোমোটিভ মডিউল যোগ করতে এই ধাপগুলো অনুসরণ করুন:

  1. অ্যান্ড্রয়েড স্টুডিওতে, ফাইল > নতুন > নতুন মডিউল-এ ক্লিক করুন।
  2. অটোমোটিভ মডিউল নির্বাচন করুন, তারপর নেক্সট-এ ক্লিক করুন।
  3. একটি অ্যাপ্লিকেশন/লাইব্রেরির নাম লিখুন। অ্যান্ড্রয়েড অটোমোটিভ ওএস-এ ব্যবহারকারীরা আপনার অ্যাপের জন্য এই নামটিই দেখতে পান।
  4. একটি মডিউলের নাম লিখুন।
  5. আপনার অ্যাপের সাথে মিলিয়ে প্যাকেজের নামটি পরিবর্তন করুন।
  6. ন্যূনতম SDK হিসেবে API 28: Android 9.0 (Pie) নির্বাচন করুন, এবং তারপর Next ক্লিক করুন।

    অ্যান্ড্রয়েড অটোমোটিভ ওএস সমর্থনকারী সমস্ত গাড়ি অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) বা তার উচ্চতর সংস্করণে চলে, তাই এই মানটি নির্বাচন করলে সমস্ত সামঞ্জস্যপূর্ণ গাড়ি এর আওতায় আসবে।

  7. ‘কোনো কার্যকলাপ নেই’ নির্বাচন করুন, এবং তারপর ‘সমাপ্ত’ ক্লিক করুন।

অ্যান্ড্রয়েড স্টুডিওতে আপনার মডিউল তৈরি করার পরে, আপনার নতুন অটোমোটিভ মডিউলে AndroidManifest.xml ফাইলটি খুলুন:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

application এলিমেন্টটিতে কিছু সাধারণ অ্যাপ তথ্যের পাশাপাশি একটি uses-feature এলিমেন্ট রয়েছে, যা অ্যান্ড্রয়েড অটোমোটিভ ওএস-এর জন্য সমর্থন ঘোষণা করে। উল্লেখ্য যে, ম্যানিফেস্টে কোনো অ্যাক্টিভিটি ঘোষণা করা হয়নি।

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

যেকোনো সেটিংস বা সাইন-ইন অ্যাক্টিভিটি যোগ করার পর, application এলিমেন্টে android:appCategory="audio" অ্যাট্রিবিউটটি সেট করে এবং নিম্নলিখিত uses-feature এলিমেন্টগুলো যোগ করে আপনার ম্যানিফেস্ট ফাইলটি সম্পূর্ণ করুন:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

এই বৈশিষ্ট্যগুলিকে স্পষ্টভাবে required="false" হিসেবে সেট করলে, আপনার অ্যাপটি Automotive OS ডিভাইসগুলিতে উপলব্ধ হার্ডওয়্যার বৈশিষ্ট্যগুলির সাথে সাংঘর্ষিক হবে না।

আপনার অ্যাপটি যে অ্যান্ড্রয়েড অটোমোটিভ ওএস সমর্থন করে, তা ঘোষণা করতে নিম্নলিখিত ম্যানিফেস্ট এন্ট্রিটি ব্যবহার করুন:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

এই ম্যানিফেস্ট এন্ট্রিটি একটি XML ফাইলকে নির্দেশ করে, যা আপনার অ্যাপের সমর্থিত স্বয়ংচালিত সক্ষমতাগুলো ঘোষণা করে।

আপনার একটি মিডিয়া অ্যাপ আছে তা বোঝানোর জন্য, আপনার প্রজেক্টের res/xml/ ডিরেক্টরিতে automotive_app_desc.xml নামের একটি XML ফাইল যোগ করুন। এই ফাইলে নিম্নলিখিত বিষয়বস্তু অন্তর্ভুক্ত করুন:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

অভিপ্রায় ফিল্টার

অ্যান্ড্রয়েড অটোমোটিভ ওএস আপনার মিডিয়া অ্যাপে অ্যাক্টিভিটি ট্রিগার করার জন্য এক্সপ্লিসিট ইনটেন্ট ব্যবহার করে। ম্যানিফেস্ট ফাইলে CATEGORY_LAUNCHER বা ACTION_MAIN ইনটেন্ট ফিল্টারযুক্ত কোনো অ্যাক্টিভিটি অন্তর্ভুক্ত করবেন না।

নিম্নলিখিত উদাহরণের মতো অ্যাক্টিভিটিগুলো সাধারণত একটি ফোন বা অন্য কোনো মোবাইল ডিভাইসকে লক্ষ্য করে তৈরি করা হয়। এই অ্যাক্টিভিটিগুলো ফোন অ্যাপ তৈরি করে এমন মডিউলে ডিক্লেয়ার করুন, আপনার অ্যান্ড্রয়েড অটোমোটিভ ওএস অ্যাপ তৈরি করে এমন মডিউলে নয়।

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

পরবর্তী পদক্ষেপ

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

অ্যান্ড্রয়েড অটোমোটিভ ওএস-এর জন্য ভিডিও প্লেব্যাক অ্যাপ তৈরি করুন

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

আপনার অ্যাপটিকে একটি ভিডিও অ্যাপ হিসেবে চিহ্নিত করুন

আপনার অ্যাপ যে ভিডিও সমর্থন করে, তা বোঝানোর জন্য আপনার প্রোজেক্টের res/xml/ ডিরেক্টরিতে automotive_app_desc.xml নামের একটি XML ফাইল যোগ করুন। এই ফাইলে নিম্নলিখিত বিষয়বস্তু অন্তর্ভুক্ত করুন:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

তারপর, আপনার ম্যানিফেস্টের application এলিমেন্টের মধ্যে, XML ফাইলটিকে রেফারেন্স করে নিম্নলিখিত meta-data এলিমেন্টটি যোগ করুন:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>