মিডিয়া অ্যাপগুলির গভীর লিঙ্কগুলিকে একীভূত করুন৷

এই ডকুমেন্টের উদ্দেশ্য হলো, কীভাবে থার্ড পার্টি (3P) অ্যাপ ডেভেলপাররা AAOS মিডিয়া অ্যাপে ডিপ লিঙ্ক যোগ করতে পারেন, তা বর্ণনা করা। মিডিয়া ডিপ লিঙ্ক আপনাকে মোবাইল ডিভাইসের মতোই ডিপ লিঙ্কের মাধ্যমে AAOS মিডিয়া অ্যাপ খোলার সুযোগ দেয়।

সমর্থিত সংস্করণগুলি

সর্বশেষ সমর্থিত সংস্করণ পেতে, সর্বশেষ বিল্ড আর্টিফ্যাক্টস দেখুন।

  • CarMediaApp.apk
  • TestMediaApp.apk

এটি কীভাবে কাজ করে

AAOS-এ যখন কোনো ডিপ লিঙ্ক খোলা হয়, তখন এটি সেই মিডিয়া অ্যাপটি খোলে যা নির্দিষ্ট স্কিমটি পরিচালনা করে। এরপর মিডিয়া অ্যাপটি URL-টি ডিকোড করে, সেই লিঙ্কের তথ্য দিয়ে একটি মিডিয়া ইন্টেন্ট তৈরি করে এবং তারপর সেই ইন্টেন্টটি ব্যবহার করে মিডিয়া স্ক্রিনটি খোলে।

নতুন ইনটেন্ট এবং নতুন এক্সট্রা সমর্থন করার জন্য বাস্তবায়ন:

  • থার্ড-পার্টি (3P) ডেভেলপারদের জন্য ইনটেন্টগুলোর একটি হালনাগাদ ফরম্যাট প্রদান করা হয়েছে, যা মিডিয়া দ্বারা পরিচালনাযোগ্য, যাতে তারা ইনটেন্টের মাধ্যমে মিডিয়াতে প্রয়োজনীয় তথ্য পাঠাতে পারে।

  • এটি থার্ড-পার্টি অ্যাপ থেকে আসা সেইসব ইনটেন্ট পরিচালনা করে, যেগুলিতে কোনো নির্দিষ্ট মিডিয়া আইটেম বা সার্চ কোয়েরি থাকে এবং এরপর মিডিয়াতে অনুরোধ করা তথ্যসহ একটি পেজ খোলে।

3P ডেভেলপাররা তাদের অ্যাপ আপডেট করার জন্য দায়ী, যাতে অ্যাপটি ওয়েব ইউআরআই ইন্টেন্ট দ্বারা আহ্বান করা যায় এবং একটি ইন্টেন্টের মাধ্যমে মিডিয়াতে প্রয়োজনীয় তথ্য পাঠাতে পারে।

3P অ্যাপের জন্য প্রয়োজনীয়তা

TestMediaApp অ্যাপের TmaTrampolineActivity টি একটি উদাহরণ হিসেবে দেওয়া হয়েছে।

ধাপ ১

ডেভেলপারদের TestMediaAppTmaTrampolineActivity মতো একটি অ্যাক্টিভিটি অবশ্যই থাকতে হবে। ডিপ লিঙ্ক করার জন্য, এই অ্যাক্টিভিটির ম্যানিফেস্টে একটি ইন্টেন্ট ফিল্টার প্রয়োজন। এই ইন্টেন্ট ফিল্টারটিতে "ইনকামিং লিঙ্কের জন্য ইন্টেন্ট ফিল্টার যোগ করুন" অংশে বর্ণিত পদ্ধতি অনুযায়ী হ্যান্ডেল করার জন্য সমস্ত URL অন্তর্ভুক্ত থাকা উচিত।

আমরা পরামর্শ দিচ্ছি যে, ইন্টেন্ট ফিল্টারে ফোন ভার্সন অ্যাপটি যে স্কিম এবং হোস্টগুলো ব্যবহার করে, সেগুলো অন্তর্ভুক্ত করা হোক, যাতে ডিপ লিঙ্কগুলো বিভিন্ন প্ল্যাটফর্মে কাজ করে।

<activity android:name=".automotive.TmaTrampolineActivity"
                  android:exported="true">
            <intent-filter android:label="TmaTrampolineActivity_label">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="app"
                      android:host="com.android.car.media.testmediaapp"/>
            </intent-filter>
        </activity>

ধাপ ২

এই অ্যাক্টিভিটিতে, মিডিয়া অ্যাপটি লিঙ্ক থেকে তথ্য সংগ্রহ করে এবং মিডিয়ার জন্য একটি ইন্টেন্ট তৈরি করে।

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

অভিপ্রায় তথ্য

এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, ডেভেলপারদের অবশ্যই ইন্টেন্ট অ্যাকশন, ACTION_MEDIA_TEMPLATE_V2 , সমর্থন করার জন্য মিডিয়ার সর্বশেষ সংস্করণটি ইনস্টল করতে হবে। ইন্টেন্ট অ্যাকশন এবং নিম্নলিখিত ইন্টেন্ট এক্সট্রাগুলো MediaIntentExtras.java ক্লাসের মধ্যে অন্তর্ভুক্ত রয়েছে। এই এক্সট্রাগুলো ইন্টেন্টে যোগ করা যেতে পারে।

অতিরিক্ত নাম মূল্য বর্ণনা
অতিরিক্ত_মূল_মিডিয়া_উপাদান কম্পোনেন্টনেমের জন্য স্ট্রিং ACTION_MEDIA_TEMPLATE_V2-এর সাথে একটি স্ট্রিং অতিরিক্ত ফিল্ড হিসাবে ব্যবহৃত কী-টি দিয়ে সেই MediaBrowserService-টি নির্দিষ্ট করা হয়, যেখান থেকে ব্যবহারকারী মিডিয়াটি শুরু করতে চান। এটি অনির্দিষ্ট থাকলে, সক্রিয় মিডিয়া উৎসটি খোলা হয়।
অতিরিক্ত_কী_মিডিয়া_আইডি মিডিয়া আইডি ACTION_MEDIA_TEMPLATE_V2-এর সাথে স্ট্রিং এক্সট্রা ফিল্ড হিসেবে ব্যবহৃত কী-টি সেই মিডিয়া আইটেমটি নির্দিষ্ট করে যা ব্রাউজ ভিউতে প্রদর্শিত হবে। এটি অবশ্যই MediaBrowserServiceCompat API-তে ব্যবহৃত আইডিগুলোর সাথে মিলতে হবে।
অতিরিক্ত_কী_অনুসন্ধান_কোয়েরি অনুসন্ধান প্রশ্ন ACTION_MEDIA_TEMPLATE_V2-এর সাথে একটি স্ট্রিং অতিরিক্ত ফিল্ড হিসাবে ব্যবহৃত কী, যা বর্তমান MediaBrowserService-এ অথবা EXTRA_KEY_MEDIA_COMPONENT দ্বারা নির্দিষ্ট করা MediaBrowserService-এ পাঠানোর জন্য সার্চ কোয়েরি নির্দিষ্ট করে।
অতিরিক্ত_কী_অনুসন্ধান_অ্যাকশন

পূর্ণসংখ্যা:

  • 0: অতিরিক্ত_মান_অনুসন্ধান_কার্যক্রম_নেই
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
সার্চ কোয়েরি লোড হওয়ার পর মিডিয়ার উপর কী পদক্ষেপ নেওয়া হবে তা নির্দিষ্ট করার জন্য, এই কী-টি ACTION_MEDIA_TEMPLATE_V2-এর সাথে একটি int অতিরিক্ত ফিল্ড হিসেবে ব্যবহৃত হয়।

মানটি হলো EXTRA_VALUE_NO_SEARCH_ACTION অথবা EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH-এর মধ্যে একটি। এই অতিরিক্তটি শুধুমাত্র EXTRA_KEY_SEARCH_QUERY-এর সাথে ব্যবহার করা উচিত।

এই অতিরিক্ত অংশটি নির্দিষ্ট করা না থাকলে, অনুসন্ধানের ফলাফল লোড হওয়ার পর আর কোনো পদক্ষেপ নেওয়া হয় না।

বিশেষ ক্ষেত্রে

যদি একটি ইন্টেন্টে একসাথে একাধিক এক্সট্রা যোগ করা হয়, যেমন EXTRA_KEY_MEDIA_ID এবং EXTRA_KEY_SEARCH_QUERY উভয়ই এই ইন্টেন্টে অন্তর্ভুক্ত থাকে, তাহলে বর্তমান ইমপ্লিমেন্টেশনটি প্রথমে মিডিয়া আইডিটি হ্যান্ডেল করে এবং শুধুমাত্র যখন মিডিয়া আইডিটি খালি থাকে, তখনই মিডিয়াটি সার্চ কোয়েরিটি চালায়।

পরীক্ষা

3P মিডিয়া অ্যাপের ইন্টিগ্রেশন সম্পূর্ণ হয়ে গেলে, একটি ডিপ লিঙ্ক পাঠাতে adb কমান্ড ব্যবহার করুন। এতে কাঙ্ক্ষিত তথ্যসহ মিডিয়া খুলে যাবে। উদাহরণস্বরূপ, TestMediaApp এর জন্য এই কমান্ডটি:

adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"