是否可以让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 ...
}
}