投射选项

如需配置应用的 Cast 会话,请提供 OptionsProvider。使用提供程序构建的 CastOptions 对象来设置接收器应用 ID、管理会话生命周期和自定义媒体播放行为。

使用默认选项提供程序

对于使用默认 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>

创建自定义选项提供程序

对于更高级的配置(例如设置自定义接收器应用 ID),您需要创建自己的 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 会话,例如通过设置自定义接收器应用 ID 来配置。

如需了解详情,请参阅 CastOptions.Builder

Kotlin

import android.content.Context
import com.google.android.gms.cast.framework.CastOptions
import com.google.android.gms.cast.framework.OptionsProvider
import com.google.android.gms.cast.framework.SessionProvider

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

import android.content.Context;
import com.google.android.gms.cast.framework.CastOptions;
import com.google.android.gms.cast.framework.OptionsProvider;
import com.google.android.gms.cast.framework.SessionProvider;
import java.util.List;

public 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 List<SessionProvider> getAdditionalSessionProviders(Context context) {
    return null;
  }
}