Android Cast SDK V3和MediaRouteProviderService

Android Cast SDK V3和MediaRouteProviderService,android,chromecast,mediarouteproviderservice,Android,Chromecast,Mediarouteproviderservice,我使用cast SDK v2在提供的路径上播放媒体MediaRouteProviderService,效果非常好 现在我正在迁移到美国及其各州 在v3中,发现过程由 当应用程序出现在前台并转到 背景资料。MediaRouteSelector和MediaRouter.Callback 不应使用 因此,如何使用带有cast SDK v3的MediaRouteProviderService提供自定义路由,以及如何使用带有cast SDK v3的MediaRouteProviderService提供自定

我使用cast SDK v2在提供的路径上播放媒体
MediaRouteProviderService
,效果非常好

现在我正在迁移到美国及其各州

在v3中,发现过程由 当应用程序出现在前台并转到 背景资料。MediaRouteSelector和MediaRouter.Callback 不应使用


因此,如何使用带有cast SDK v3的
MediaRouteProviderService
提供自定义路由,以及如何使用带有cast SDK v3的MediaRouteProviderService提供自定义路由

在v3中,设备发现现在由CastContext处理。在这方面,它指出:

设备发现完全由 . 初始化CastContext时,发件人应用程序指定 接收方应用程序ID,并且可以选择请求命名空间 通过在中设置supportedNamespaces进行筛选 . CastContext在内部保存对MediaRouter的引用,并将 当发件人应用程序进入前台时启动发现过程, 并在发件人应用程序进入后台时停止

类CastOptionsProvider实现OptionsProvider{
公共静态最终字符串CUSTOM\u NAMESPACE=“urn:x-cast:CUSTOM\u NAMESPACE”;
@凌驾
公共CastOptions getCastOptions(上下文appContext){
List supportedNamespaces=new ArrayList();
supportedNamespaces.add(自定义_名称空间);
CastOptions CastOptions=new CastOptions.Builder()
.setReceiveApplicationId(context.getString(R.string.app_id))
.setSupportedNamespaces(supportedNamespaces)
.build();
返回选项;
}
@凌驾
公共列表getAdditionalSessionProviders(上下文){
返回null;
}
}

那么如何使用MediaRouteProviderService和cast SDK v3提供自定义路由

在v3中,设备发现现在由CastContext处理。在这方面,它指出:

设备发现完全由 . 初始化CastContext时,发件人应用程序指定 接收方应用程序ID,并且可以选择请求命名空间 通过在中设置supportedNamespaces进行筛选 . CastContext在内部保存对MediaRouter的引用,并将 当发件人应用程序进入前台时启动发现过程, 并在发件人应用程序进入后台时停止

类CastOptionsProvider实现OptionsProvider{
公共静态最终字符串CUSTOM\u NAMESPACE=“urn:x-cast:CUSTOM\u NAMESPACE”;
@凌驾
公共CastOptions getCastOptions(上下文appContext){
List supportedNamespaces=new ArrayList();
supportedNamespaces.add(自定义_名称空间);
CastOptions CastOptions=new CastOptions.Builder()
.setReceiveApplicationId(context.getString(R.string.app_id))
.setSupportedNamespaces(supportedNamespaces)
.build();
返回选项;
}
@凌驾
公共列表getAdditionalSessionProviders(上下文){
返回null;
}
}

这意味着不再需要MediaRouteProviderService,而是使用OptionProvider提供自定义路由,对吗?这意味着不再需要MediaRouteProviderService,而是使用OptionProvider提供自定义路由,对吗?
class CastOptionsProvider implements OptionsProvider {
    public static final String CUSTOM_NAMESPACE = "urn:x-cast:custom_namespace";
    @Override
    public CastOptions getCastOptions(Context appContext) {
        List<String> supportedNamespaces = new ArrayList<>();
        supportedNamespaces.add(CUSTOM_NAMESPACE);
        CastOptions castOptions = new CastOptions.Builder()
            .setReceiverApplicationId(context.getString(R.string.app_id))
            .setSupportedNamespaces(supportedNamespaces)
            .build();
        return castOptions;
    }
    @Override
    public List<SessionProvider> getAdditionalSessionProviders(Context context) {
        return null;
    }
}