אפשרויות Cast

כדי להגדיר את סשן ה-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;
  }
}