是否可以将MiniControllerFragment与自定义MediaRouteProvider一起使用?

时间:2017-01-25 19:40:37

标签: android chromecast google-cast mediarouter

是否可以让Google的演员MiniControllerFragment使用我的自定义MediaRouteProvider

我问的原因:当我投射到我的自定义MediaRouteProvider时,不会出现迷你控制器按钮UI。我注意到MiniControllerFragment [1]使用UIMediaController。

我阅读了UIMediaController的代码。看起来UIMediaController是由来自SessionManager单例的事件驱动的。 UIMediaController订阅SessionManager,但只处理类“CastSession”的会话[4]。

我不确定我是否可以在SessionProvider中扩展/实例化CastSession(我目前创建了一个从cast.framework.Session扩展的类[2])。

实例化CastSession对象看起来相当棘手[3],它的构造函数有很长的类列表,其中一些我似乎无法从任何地方获取实例。

谢谢, 瑞克。

备注

[1] MiniControllerFragment docs:https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/widget/MiniControllerFragment

[2] Session / CastSession docs:https://developers.google.com/android/reference/com/google/android/gms/cast/framework/Session

[3] CastSession构造函数,根据反编译的.class文件。需要未记录的类的实例。似乎不存在工厂方法:

public CastSession(
   Context var1, 
   String var2, 
   String var3, 
   CastOptions var4, 
   CastApi var5,   //< Can't instantiate this - Rik.
   zzws var6,      //< Not sure what class that is! - Rik.
   zzxe var7       //< Not sure what class that is! - Rik.
) 

[4]从会话管理器委派函数处理onSessionStarted()事件。只对CastSession会话感兴趣:

private void zza(Session var1) {
   if(!this.isActive() && var1 instanceof CastSession && var1.isConnected()){
       // Does work with RemoteMediaClient here ...
   }
}

0 个答案:

没有答案