המסמך הזה נועד לתאר איך מפתחי אפליקציות של צד שלישי (3P) יכולים להוסיף קישורים עומק לאפליקציות מדיה של AAOS. קישורי עומק של מדיה מאפשרים לכם לפתוח אפליקציות של AAOS Media דרך קישורי עומק, בדיוק כמו במכשיר נייד.
גרסאות נתמכות
כדי לקבל את הגרסה הנתמכת האחרונה, אפשר לעיין בפריטי ה-build האחרונים.
CarMediaApp.apk
TestMediaApp.apk
איך זה עובד
כשפותחים קישור עומק ב-AAOS, נפתחת אפליקציית המדיה שמטפלת בתוכנית הספציפית. לאחר מכן, אפליקציית המדיה מפענחת את כתובת ה-URL, יוצרת כוונה לשימוש במדיה עם המידע שבקישור הזה ומשתמשת בכוונה הזו כדי לפתוח את מסך המדיה.
ההטמעה שתומכת בכוונות חדשות ובתכונות נוספות חדשות:
הפורמט המעודכן של הכוונות שמערכת המדיה יכולה לטפל בהן, למפתחים של צד שלישי, כדי שיוכלו לשלוח את המידע הנדרש דרך הכוונה למערכת המדיה.
המערכת מטפלת בכוונות (intents) מאפליקציות צד שלישי שמכילות פריט מדיה ספציפי או שאילתה לחיפוש, ואז פותחת דף עם המידע המבוקש ב'מדיה'.
מפתחים של צד שלישי אחראים לעדכן את האפליקציה שלהם כך שאפשר יהיה להפעיל אותה באמצעות כוונות URI של האינטרנט ולשלוח את המידע הנדרש ל-Media באמצעות כוונה.
דרישות לאפליקציות של צד שלישי
הערך TmaTrampolineActivity
באפליקציה TestMediaApp
מופיע כדוגמה.
שלב 1
למפתחים צריכה להיות פעילות דומה ל-TmaTrampolineActivity
ב-TestMediaApp
. כדי ליצור קישור עומק, הפעילות הזו צריכה מסנן Intent במניפסט. מסנן הכוונה הזה צריך לכלול את כל כתובות ה-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>
שלב 2
בפעילות הזו, אפליקציית המדיה מאחזרת את המידע מהקישור ויוצרת כוונה (intent) ל-Media.
המדיה תומכת בשתי פונקציות. הפונקציה הראשונה היא פתיחת פריט מדיה עם פריט מדיה ספציפי, והשנייה היא הצגת התוצאות של שאילתה לחיפוש. צריך לכלול את מזהה פריט המדיה או את מחרוזת השאילתה לחיפוש בפריט הנוסף של כוונת החיפוש.
מידע על כוונת הרכישה
כדי להשתמש בתכונה הזו, המפתחים צריכים להתקין את הגרסה העדכנית ביותר של Media כדי לתמוך בפעולה Intent, ACTION_MEDIA_TEMPLATE_V2
. פעולת ה-Intent והפרטים הנוספים הבאים של ה-Intent כלולים בכיתה MediaIntentExtras.java
. אפשר להוסיף את התוספים האלה לכוונה.
שם נוסף | ערך | תיאור |
---|---|---|
EXTRA_KEY_MEDIA_COMPONENT | מחרוזת עבור componentName | מפתח שמשמש כשדה נוסף של מחרוזת עם ACTION_MEDIA_TEMPLATE_V2 כדי לציין את MediaBrowserService שבו המשתמש רוצה להפעיל את המדיה. אם לא מצוין מקור מדיה ספציפי, נפתח מקור המדיה הפעיל. |
EXTRA_KEY_MEDIA_ID | מזהה מדיה | מפתח המשמש כשדה נוסף של מחרוזת עם ACTION_MEDIA_TEMPLATE_V2 מציין את פריט המדיה שצריך להופיע בתצוגה Browse. המזהה צריך להיות זהה למזהים שמופיעים ב-MediaBrowserServiceCompat API. |
EXTRA_KEY_SEARCH_QUERY | שאילתת חיפוש | מפתח שמשמש כשדה נוסף של מחרוזת עם ACTION_MEDIA_TEMPLATE_V2 כדי לציין את שאילתת החיפוש שתשלח ל-MediaBrowserService הנוכחי או לזה שצוין באמצעות EXTRA_KEY_MEDIA_COMPONENT |
EXTRA_KEY_SEARCH_ACTION | מספר שלם:
|
מפתח שמשמש כשדה נוסף מסוג int עם ACTION_MEDIA_TEMPLATE_V2 כדי לציין את הפעולה שהמדיה תבצע אחרי טעינת שאילתת החיפוש.
הערך יכול להיות אחד מהערכים הבאים: EXTRA_VALUE_NO_SEARCH_ACTION או EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. יש להשתמש בפריט הנוסף הזה רק עם EXTRA_KEY_SEARCH_QUERY. אם לא מציינים את התוספת הזו, לא מתבצעת פעולה נוספת אחרי טעינת תוצאות החיפוש. |
מקרים מיוחדים
אם מוסיפים כמה פריטים נוספים לכוונה יחד, למשל EXTRA_KEY_MEDIA_ID
ו-EXTRA_KEY_SEARCH_QUERY
נכללים בכוונה הזו, ההטמעה הנוכחית מטפלת קודם במזהה המדיה, ורק כשמזהה המדיה ריק, המערכת מפעילה את שאילתת החיפוש ב-Media.
בדיקה
אחרי שמשלימים את השילוב של אפליקציית המדיה של הצד השלישי, משתמשים בפקודה adb
כדי לשלוח קישור עומק. המדיה תיפתח עם המידע הרצוי. לדוגמה, הפקודה הבאה עבור TestMediaApp
:
adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"