Android Auto বা Android Automotive OS-এ চলে এমন গাড়িতে আপনার অ্যাপ নিয়ে আসুন। এমন একটি অ্যাপ আর্কিটেকচার ব্যবহার করুন যা দুটি ক্ষেত্রেই কাজ করে যাতে প্রতিটি ব্যবহারকারী আপনার অ্যাপ উপভোগ করতে পারেন।
গাড়ির জন্য Android কী?
গাড়ির জন্য মিডিয়া অ্যাপ ব্যবহারকারীদের তাদের ডিজিটাল জীবনকে গাড়ির সাথে নির্বিঘ্নে কানেক্ট করার সুযোগ করে দেয়। ফোনের জন্য উপলভ্য একই অ্যাপ অটোমোবাইলের জন্য উপলভ্য করার মাধ্যমে, আপনি ব্যবহারকারীর আরও ভালো অভিজ্ঞতা তৈরি করেন। Android Auto বা Android Automotive OS-এর সাথে ইন্টিগ্রেট করে আপনি এটি করতে পারবেন।
গাড়ির জন্য Android অ্যাপকে সবার আগে ড্রাইভারের মনোযোগ যাতে বিঘ্নিত না হয় তা নিশ্চিত করতে হবে। আপনি ভয়েস কমান্ড ও খুব প্র্যাকটিক্যাল ভিজ্যুয়াল ডিজাইনের মতো পেশাদার পদ্ধতি অনুসরণ করে মনোযোগের ব্যাঘাত কমান। এইভাবে, আপনার মিডিয়া অ্যাপ ড্রাইভারকে প্রাসঙ্গিক সময়ে তথ্য দেখাতে পারে এবং সাধারণ টাস্কের জন্য অনুমানযোগ্য প্যাটার্ন ব্যবহার করতে পারে।
Android Auto
Android Auto অ্যাপ সহ Android ফোন এবং মানানসই গাড়ি বা আফটারমার্কেট স্টিরিও সিস্টেম আছে এমন ব্যবহারকারীদের জন্য Android Auto ড্রাইভার-অপ্টিমাইজ করা অ্যাপ অভিজ্ঞতা প্রদান করে। তারা নিজের ফোন কানেক্ট করে সরাসরি গাড়ির ডিসপ্লেতে আপনার অ্যাপ ব্যবহার করতে পারবেন। আপনি Android Auto-কে আপনার ফোন অ্যাপের সাথে কানেক্ট করার অনুমতি দেন এমন পরিষেবা তৈরি করে যা Android Auto ব্যবহার করে ড্রাইভারের জন্য অপ্টিমাইজ করা ইন্টারফেস ড্রাইভারকে দেখানোর জন্য।
Android Automotive OS
Android Automotive OS হল Android-ভিত্তিক ইনফোটেনমেন্ট সিস্টেম যা গাড়িতে বিল্ট-ইন থাকে। গাড়ির সিস্টেম হল একটি স্বতন্ত্র Android-চালিত ডিভাইস যা ড্রাইভিংয়ের জন্য অপ্টিমাইজ করা হয়েছে। Android Automotive OS-এর মাধ্যমে, ব্যবহারকারীরা তাদের ফোনের পরিবর্তে সরাসরি গাড়িতে আপনার অ্যাপ ইনস্টল করেন।
কাজ করে এমন অ্যাপের বিভাগ
মিডিয়া অ্যাপ ব্যবহারকারীদের গাড়িতে মিউজিক, রেডিও, অডিওবুক এবং অন্যান্য অডিও কন্টেন্ট ব্রাউজ করতে এবং চালাতে দেয়। আরও তথ্যের জন্য, গাড়ির জন্য অডিও প্লেব্যাক অ্যাপ তৈরি করুন এবং গাড়ির জন্য মিডিয়া অ্যাপ তৈরি করুন দেখুন।
মিডিয়া অ্যাপ MediaLibraryService
এবং MediaSession ব্যবহার করে তৈরি করা হয়।
Android
Automotive OS-এ, আপনি Views বা Compose ব্যবহার করে সাইন-ইন এবং সেটিংস স্ক্রিনও (পার্ক করার সময় ব্যবহারের জন্য)
তৈরি করতে পারবেন।
গাড়ি পার্ক করা থাকলে ভিডিও অ্যাপ ব্যবহারকারীদের স্ট্রিমিং ভিডিও দেখতে দেয়। এইসব অ্যাপের মূল উদ্দেশ্য হল স্ট্রিমিং ভিডিও দেখানো। এইসব অ্যাপ Views বা Compose ব্যবহার করে তৈরি করা হয়। আরও তথ্যের জন্য, Android Automotive OS-এর জন্য ভিডিও প্লেব্যাক অ্যাপ তৈরি করুন এবং Android Automotive OS-এর জন্য ভিডিও অ্যাপ তৈরি করুন দেখুন।
গাড়ির জন্য অডিও প্লেব্যাক অ্যাপ তৈরি করা
এই নির্দেশিকা ধরে নেয় যে আপনার কাছে আগে থেকেই একটি বেসিক মিডিয়া প্লেব্যাক অ্যাপ আছে। আপনার কাছে না থাকলে, শুরু করতে, বেসিক মিডিয়া প্লেয়ার অ্যাপ তৈরি করুন বিকল্পে যান।
এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে আপনাকে কী করতে হবে, এর মধ্যে নির্দিষ্ট নির্দেশিকা সহ আরও রিসোর্সের লিঙ্কও অন্তর্ভুক্ত আছে।
প্লেব্যাক কম্পোনেন্ট
Media3 প্লেব্যাক ব্যবহারের ক্ষেত্রে বেশ কিছু মূল কম্পোনেন্ট অফার করে। আপনি যদি আগে Android মিডিয়া লাইব্রেরি নিয়ে কাজ করে থাকেন, তাহলে এইসব কম্পোনেন্ট তৈরি করার ক্লাস আপনার পরিচিত হবে।
নিম্নলিখিত ডায়াগ্রামটি দেখায় যে কীভাবে এই কম্পোনেন্টগুলি একটি সাধারণ অ্যাপে একসাথে কাজ করে।
আরও তথ্যের জন্য, প্লেব্যাক কম্পোনেন্ট দেখুন।
MediaLibraryService ও MediaLibrarySession প্রয়োগ করুন
MediaLibraryService
আপনার মিডিয়া লাইব্রেরি অ্যাক্সেস করার অনুমতি দিতে ও পরিষেবা প্রদান করতে একটি স্ট্যান্ডার্ডাইজড API প্রদান করে।
আপনার মিডিয়া অ্যাপে Android Auto বা Android Automotive OS-এর জন্য সহায়তা যোগ করার সময় এটি প্রয়োজন, কারণ এই প্ল্যাটফর্মগুলি আপনার মিডিয়া লাইব্রেরির জন্য নিজস্ব ড্রাইভার-সেফ UI প্রদান করে। MediaLibraryService প্রয়োগ ও ব্যবহার করা সম্পর্কে আরও জানতে, MediaLibraryService-এর মাধ্যমে কন্টেন্ট পরিবেশন করুন দেখুন।
প্লেব্যাক কন্ট্রোলের জন্য, মিডিয়া সেশন ব্যবহার করুন। MediaSession API, অডিও বা ভিডিও প্লেয়ারের সাথে ইন্টার্যাক্ট করার
একটি সর্বজনীন উপায় প্রদান করে। Jetpack Media3
লাইব্রেরিতে MediaLibrarySession অন্তর্ভুক্ত আছে, যা কন্টেন্ট ব্রাউজিং API যোগ করার জন্য MediaSession-কে এক্সটেন্ড করে।
কোনও প্লেয়ারের সাথে মিডিয়া সেশন কানেক্ট করলে, কোনও অ্যাপ এক্সটার্নাল সোর্স থেকে মিডিয়া প্লেব্যাক বিজ্ঞাপন দেখাতে এবং প্লেব্যাক কমান্ড পেতে পারে। এই ধরনের এক্সটার্নাল সোর্সের মধ্যে Android Auto, Android Automotive OS বা Google Assistant অন্তর্ভুক্ত। আরও তথ্যের জন্য, MediaSession ব্যবহার করে প্লেব্যাক কন্ট্রোল ও বিজ্ঞাপন দেখানো এবং MediaLibrarySession ব্যবহার করা দেখুন।
কমপক্ষে, আপনার মিডিয়া সেশন নিম্নলিখিত প্লেয়ার কমান্ডের জন্য সমর্থন ঘোষণা করা উচিত:
প্লেব্যাক কন্ট্রোল চালু করুন নির্দেশিকা গাড়িতে আপনার প্লেব্যাক কন্ট্রোল কাস্টমাইজ করার বিভিন্ন উপায় বর্ণনা করে।
Android Auto বা Android Automotive OS আপনার অ্যাপের সাথে কানেক্ট করলে, সেগুলি দেখানোর জন্য কন্টেন্ট লাইব্রেরির অনুরোধ করে, যা onGetLibraryRoot() কলব্যাক পদ্ধতি ট্রিগার করে। আপনার লাইব্রেরিতে অ্যাক্সেস দিতে আপনি দ্রুত একটি রুট মিডিয়া আইটেম ফেরত দিতে পারেন। Android Auto বা Android Automotive OS আপনার কন্টেন্ট লাইব্রেরির আরও গভীরে ব্রাউজ করার চেষ্টা করলে onGetChildren() কলব্যাক পদ্ধতি কল করা হয়।
আপনার কন্টেন্ট লাইব্রেরি কীভাবে সাজানো হবে তার উপর এইসব প্ল্যাটফর্ম অতিরিক্ত সীমা আরোপ করে। আপনার কন্টেন্ট লাইব্রেরি কীভাবে দেখানো হবে তা কাস্টমাইজ করার ব্যাপারে বিস্তারিত জানতে, আপনার মিডিয়া ব্রাউজার পরিষেবা তৈরি করুন গাইড দেখুন।
Android Auto-এর জন্য সাপোর্ট ঘোষণা করুন
আপনার ফোন অ্যাপ যে Android Auto-কে সাপোর্ট করে তা ঘোষণা করতে নিম্নলিখিত ম্যানিফেস্ট এন্ট্রি ব্যবহার করুন:
<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>
Android Automotive OS-এর জন্য সহায়তা ঘোষণা করুন
আপনাকে একটি অটোমোটিভ মডিউল তৈরি করতে হবে কারণ আপনার অ্যাপের সব লজিক অটোমোটিভ অ্যাপের সাথে শেয়ার করা যাবে না। Android Automotive OS-এর কিছু কম্পোনেন্ট, যেমন ম্যানিফেস্টের প্ল্যাটফর্ম-নির্দিষ্ট প্রয়োজনীয়তা আছে। এমন একটি মডিউল তৈরি করুন যা আপনার প্রোজেক্টের অন্যান্য কোড থেকে এইসব কম্পোনেন্টের কোড আলাদা রাখতে পারে, যেমন আপনার মোবাইল অ্যাপের জন্য ব্যবহৃত কোড।
আপনার প্রোজেক্টে অটোমোটিভ মডিউল যোগ করতে এইসব ধাপ অনুসরণ করুন:
- Android Studio-তে, ফাইল > নতুন > নতুন মডিউল বিকল্পে ক্লিক করুন।
- অটোমোটিভ মডিউল বেছে নিয়ে পরবর্তী বিকল্পে ক্লিক করুন।
- অ্যাপ্লিকেশন/লাইব্রেরির নাম লিখুন। Android Automotive OS-এ আপনার অ্যাপের জন্য ব্যবহারকারীরা এই নাম দেখতে পান।
- মডিউলের নাম লিখুন।
- আপনার অ্যাপের সাথে ম্যাচ করাতে প্যাকেজের নাম অ্যাডজাস্ট করুন।
ন্যূনতম SDK-এর জন্য API 28: Android 9.0 (Pie) বেছে নিন এবং তারপরে পরবর্তী বিকল্পে ক্লিক করুন।
Android Automotive OS কাজ করে এমন সব গাড়ি Android 9 (API লেভেল ২৮) বা তার পরবর্তী যেকোনও ভার্সনে চলে, তাই এই ভ্যালু বেছে নিলে মানানসই সব গাড়ি টার্গেট করা হয়।
কোনও অ্যাক্টিভিটি নেই বিকল্প বেছে নিয়ে শেষ করুন বিকল্পে ক্লিক করুন।
Android Studio-তে আপনার মডিউল তৈরি করার পরে, আপনার নতুন অটোমোটিভ মডিউলে 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 এলিমেন্ট থাকে যা Android Automotive OS-এর জন্য সহায়তা ঘোষণা করে।
মনে রাখবেন, ম্যানিফেস্টে কোনও অ্যাক্টিভিটি ঘোষণা করা নেই।
আপনি সেটিংস বা সাইন-ইন অ্যাক্টিভিটি প্রয়োগ করলে, সেগুলি এখানে যোগ করুন। এইসব অ্যাক্টিভিটি এক্সপ্লিসিট ইনটেন্ট ব্যবহার করে সিস্টেমের মাধ্যমে ট্রিগার করা হয় এবং এগুলিই হল একমাত্র অ্যাক্টিভিটি যা আপনি Android Automotive OS অ্যাপের জন্য ম্যানিফেস্টে ঘোষণা করেন।
কোনও সেটিংস বা সাইন-ইন অ্যাক্টিভিটি যোগ করার পরে, 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 ডিভাইসে উপলভ্য হার্ডওয়্যার ফিচারের সাথে কোনও বিরোধ না করে তা নিশ্চিত করা যায়।
আপনার অ্যাপ যে Android 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>
ইনটেন্ট ফিল্টার
Android Automotive OS আপনার মিডিয়া অ্যাপে অ্যাক্টিভিটি ট্রিগার করতে এক্সপ্লিসিট ইনটেন্ট ব্যবহার করে। ম্যানিফেস্ট ফাইলে
CATEGORY_LAUNCHER
বা ACTION_MAIN ইনটেন্ট ফিল্টার আছে এমন কোনও অ্যাক্টিভিটি অন্তর্ভুক্ত করবেন না।
নিচের উদাহরণের মতো অ্যাক্টিভিটি সাধারণত ফোন বা অন্য কোনও মোবাইল ডিভাইসকে টার্গেট করে। এইসব অ্যাক্টিভিটি ফোন অ্যাপ তৈরি করে এমন মডিউলে ঘোষণা করুন, আপনার Android Automotive OS অ্যাপ তৈরি করে এমন মডিউলে নয়।
<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>
পরবর্তী ধাপ
এখন আপনার কাছে Android Auto এবং Android Automotive OS-এর জন্য অ্যাপ আছে, তাই আপনি ড্রাইভ করার সময় আরও নিরাপদে ব্যবহার করার জন্য আপনার অ্যাপ অপ্টিমাইজ করতে অতিরিক্ত পদক্ষেপ নিতে চাইবেন। ব্যবহারকারীর জন্য নিরাপদ ও সুবিধাজনক অভিজ্ঞতা নিশ্চিত করতে সাহায্য করার জন্য আরও সাজেশন পেতে, ভয়েস অ্যাকশন, মনোযোগ বিঘ্নিত হওয়া থেকে রক্ষা করা এবং সমস্যা সমাধান করা সংক্রান্ত টেকনিক্যাল নির্দেশিকা দেখুন।
Android Automotive OS-এর জন্য ভিডিও প্লেব্যাক অ্যাপ তৈরি করা
গাড়িতে ভিডিও অ্যাপকে মিডিয়া অ্যাপ থেকে আলাদাভাবে শ্রেণীবদ্ধ করা হয়, তাই আপনাকে ভিডিও অ্যাপের জন্য কিছু নির্দিষ্ট প্রয়োজনীয়তা সম্পর্কে সচেতন হতে হবে, যেমনটি গাড়ির জন্য পার্ক করা অ্যাপ তৈরি করুন এবং Android Automotive OS-এর জন্য ভিডিও অ্যাপ তৈরি করুন-এ বর্ণনা করা হয়েছে। এই নির্দেশাবলী অনুসরণ করুন:
আপনার অ্যাপকে ভিডিও অ্যাপ হিসেবে চিহ্নিত করুন
আপনার অ্যাপ যে ভিডিও সাপোর্ট করে তা বোঝাতে, আপনার ম্যানিফেস্টের <application>
এলিমেন্টে android:appCategory="video" অ্যাট্রিবিউট যোগ করুন।
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
Android Automotive OS হার্ডওয়্যার ফিচার ঘোষণা করুন
আপনার অ্যাপ Android Automotive OS ডিভাইসে কাজ করে তা ঘোষণা করতে, আপনার ম্যানিফেস্টে
android.hardware.type.automotive <uses-feature> এলিমেন্ট যোগ করুন।
android:required অ্যাট্রিবিউট "false" নাকি "true"-এ সেট করতে হবে সেই বিষয়ে নির্দেশিকার জন্য
AAOS হার্ডওয়্যার ফিচার ঘোষণা করুন
দেখুন।
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>