כדי להגדיר את סשן ה-Cast של האפליקציה, צריך לספק OptionsProvider. משתמשים באובייקט CastOptions שנוצר על ידי הספק כדי להגדיר את מזהה האפליקציה המקבלת, לנהל את מחזורי החיים של הסשנים ולהתאים אישית את אופן ההפעלה של המדיה.
שימוש בספק האפשרויות שמוגדר כברירת מחדל
כדי להגדיר הגדרה בסיסית שמשתמשת באפליקציית ברירת המחדל של מקלט Cast, מוסיפים את DefaultCastOptionsProvider לקובץ AndroidManifest.xml של האפליקציה:
<application>
...
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="androidx.media3.cast.DefaultCastOptionsProvider" />
...
</application>
יצירת ספק אפשרויות בהתאמה אישית
כדי להגדיר הגדרות מתקדמות יותר, כמו הגדרת מזהה אפליקציה מותאם אישית למקלט, צריך ליצור OptionsProvider משלכם.
1. הצהרה על הספק במניפסט
קודם כל, צריך להצהיר על הספק בהתאמה אישית ב-AndroidManifest.xml. חשוב להשתמש בשם המלא של המחלקה.
<application>
...
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="path.to.your.class.MyCustomCastOptionsProvider" />
...
</application>
2. הטמעת הממשק OptionsProvider
בשלב הבא, יוצרים מחלקה שמטמיעה את הממשק של OptionsProvider. במחלקה הזו, צריך לשנות את getCastOptions() כדי להחזיר מופע של CastOptions.
במחלקה המותאמת אישית OptionsProvider מגדירים את סשן ה-Cast, לדוגמה, על ידי הגדרת מזהה האפליקציה של המקלט המותאם אישית.
מידע נוסף זמין במאמר בנושא CastOptions.Builder.
Kotlin
class MyCustomCastOptionsProvider : OptionsProvider { override fun getCastOptions(context: Context): CastOptions { return CastOptions.Builder() .setReceiverApplicationId(APP_ID) .setRemoteToLocalEnabled(true) .build() } override fun getAdditionalSessionProviders(context: Context): List<SessionProvider>? { return null } companion object { // Add your receiver app ID in <APP_ID>. private const val APP_ID = "<APP_ID>" } }
Java
public static final class MyCustomCastOptionsProvider implements OptionsProvider { // Add your receiver app ID in <APP_ID>. public static final String APP_ID = "<APP_ID>"; @Override public CastOptions getCastOptions(Context context) { return new CastOptions.Builder() .setReceiverApplicationId(APP_ID) .setRemoteToLocalEnabled(true) .build(); } @Override public @Nullable List<SessionProvider> getAdditionalSessionProviders(Context context) { return null; } }