این سند با هدف توصیف چگونگی افزودن لینکهای عمیق به برنامههای رسانهای AAOS توسط توسعهدهندگان برنامههای شخص ثالث (3P) تهیه شده است. لینکهای عمیق رسانهای به شما این امکان را میدهند که برنامههای AAOS Media را از طریق لینکهای عمیق، همانند یک دستگاه تلفن همراه، باز کنید.
نسخههای پشتیبانیشده
برای دریافت آخرین نسخه پشتیبانیشده، به جدیدترین Build Artifacts مراجعه کنید.
-
CarMediaApp.apk -
TestMediaApp.apk
چگونه کار میکند؟
وقتی یک لینک عمیق در AAOS باز میشود، برنامهی رسانهای که طرح خاص را مدیریت میکند، باز میشود. سپس برنامهی رسانهای، URL را رمزگشایی میکند و یک Media intent با اطلاعات موجود در آن لینک ایجاد میکند و سپس از آن intent برای باز کردن صفحهی رسانه استفاده میکند.
پیادهسازی برای پشتیبانی از اهداف جدید و موارد اضافی جدید:
قالب بهروز شدهای از intentهایی را که میتوانند توسط Media به توسعهدهندگان 3P مدیریت شوند، ارائه میدهد تا آنها بتوانند اطلاعات لازم را از طریق intent به Media ارسال کنند.
اینتنتهای برنامههای 3P که حاوی یک آیتم رسانهای خاص یا یک عبارت جستجو هستند را مدیریت میکند و سپس صفحهای را با اطلاعات درخواستی در بخش رسانه باز میکند.
توسعهدهندگان 3P مسئول بهروزرسانی برنامه خود هستند تا برنامه بتواند توسط intentهای URI وب فراخوانی شود و اطلاعات لازم را از طریق یک intent به Media ارسال کند.
الزامات برنامههای 3P
به عنوان مثال، TmaTrampolineActivity در برنامه TestMediaApp ارائه شده است.
مرحله ۱
توسعهدهندگان باید یک activity مشابه TmaTrampolineActivity در TestMediaApp داشته باشند. برای لینکدهی عمیق، این activity به یک intent filter در مانیفست نیاز دارد. این intent filter باید شامل تمام URLهایی باشد که قرار است مدیریت شوند، همانطور که در بخش «افزودن فیلترهای intent برای لینکهای ورودی» توضیح داده شده است.
ما پیشنهاد میکنیم که فیلتر intent شامل طرحها و میزبانهایی باشد که برنامه نسخه تلفن از آنها استفاده میکند تا مطمئن شود که لینکهای عمیق در سراسر پلتفرمها کار میکنند.
<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>
مرحله ۲
در این activity، برنامهی Media اطلاعات را از لینک بازیابی میکند و یک intent برای Media ایجاد میکند.
بخش رسانه از دو تابع پشتیبانی میکند. تابع اول باز کردن یک آیتم رسانهای با یک آیتم رسانهای خاص و تابع دوم نمایش نتایج یک عبارت جستجو است. شناسه آیتم رسانهای یا رشته عبارت جستجو باید در intent extra گنجانده شود.
اطلاعات قصد
برای استفاده از این ویژگی، توسعهدهندگان باید جدیدترین نسخه Media را برای پشتیبانی از اکشن Intent، یعنی ACTION_MEDIA_TEMPLATE_V2 ، نصب کنند. اکشن Intent و موارد اضافی intent که در ادامه آمده است، در کلاس MediaIntentExtras.java گنجانده شدهاند. این موارد اضافی را میتوان به intent اضافه کرد.
| نام اضافی | ارزش | توضیحات |
|---|---|---|
| کامپوننت رسانهای کلید اضافی | رشته برای نام کامپوننت | کلید به عنوان یک فیلد اضافی رشتهای با ACTION_MEDIA_TEMPLATE_V2 برای مشخص کردن MediaBrowserService که کاربر میخواهد رسانه را روی آن شروع کند، استفاده میشود. وقتی مشخص نشده باشد، منبع رسانه فعال باز میشود. |
| شناسه رسانهای کلید اضافی | شناسه رسانه | کلید استفاده شده به عنوان یک فیلد اضافی رشتهای با ACTION_MEDIA_TEMPLATE_V2، آیتم رسانهای را که باید در نمای مرور نمایش داده شود، مشخص میکند. باید با شناسههای استفاده شده در API MediaBrowserServiceCompat مطابقت داشته باشد. |
| جستجوی کلید اضافی | عبارت جستجو | کلید به عنوان یک فیلد اضافی رشتهای با ACTION_MEDIA_TEMPLATE_V2 استفاده میشود تا عبارت جستجو را برای ارسال به MediaBrowserService فعلی یا موردی که با EXTRA_KEY_MEDIA_COMPONENT مشخص شده است، مشخص کند. |
| کلید_اضافی_جستجو_عملکرد | عدد صحیح:
| کلیدی که به عنوان یک فیلد اضافی از نوع int به همراه ACTION_MEDIA_TEMPLATE_V2 استفاده میشود تا عملی را که رسانه پس از بارگذاری عبارت جستجو باید انجام دهد، مشخص کند. مقدار مورد نظر یکی از دو گزینهی EXTRA_VALUE_NO_SEARCH_ACTION یا EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH است. این مقدار اضافی فقط باید با EXTRA_KEY_SEARCH_QUERY استفاده شود. اگر این مورد اضافی مشخص نشده باشد، پس از بارگذاری نتایج جستجو، هیچ اقدام دیگری انجام نمیشود. |
موارد خاص
اگر چندین مورد اضافی با هم به intent اضافه شوند، مثلاً هر دوی EXTRA_KEY_MEDIA_ID و EXTRA_KEY_SEARCH_QUERY در این intent گنجانده شوند، پیادهسازی فعلی ابتدا شناسه رسانه را مدیریت میکند و تنها زمانی که شناسه رسانه خالی باشد، Media کوئری جستجو را اجرا میکند.
تست
پس از تکمیل ادغام برنامه رسانهای 3P، از دستور adb برای ارسال یک لینک عمیق استفاده کنید. رسانه با اطلاعات مورد نظر باز میشود. به عنوان مثال، این دستور برای TestMediaApp :
adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"