我使用按钮在活动xml中的应用程序中启动chromecast android.support.v7.app.MediaRouteButton
,并使用视频播放器将xml片段化。
要初始化投射按钮,请使用以下代码:
private void setupChromeCast() {
try {
CastButtonFactory.setUpMediaRouteButton(getActivity(), castButton);
castContext = CastContext.getSharedInstance(getActivity());
castSession = castContext.getSessionManager().getCurrentCastSession();
onCastStateChanged(castContext.getCastState());
castSessionManager = new CastSessionManager(this);
isChromeCastAvailable = true;
} catch (Exception e) {
isChromeCastAvailable = false;
}
}
它在活动中效果很好。我的意思是,当chromecast设备在附近时,我的MediaRouteButton变为活动状态,我可以按它。但是,当此按钮位于“片段”上时,它不会变为活动状态。和回调
@Override
public void onCastStateChanged(int state)
不打来。那么,如何解决此错误?有一个有趣的时刻:当我处于片段状态时,按钮不处于活动状态,但是当我将应用程序隐藏到背景中然后又打开到前景中时,我的mediaroutebutton处于活动状态。真奇怪。
答案 0 :(得分:1)
在您的活动中,初始化Cast
:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CastContext.getSharedInstance(this);
}
然后在您的片段中,您可以掌握Cast
上下文:
@Override
public void onResume() {
super.onResume();
CastContext cc = CastContext.getSharedInstance();
cc.addCastStateListener(this);
cc.getSessionManager().addSessionManagerListener(
this, CastSession.class);
}
已通过Cast版本18.1.0
验证。
答案 1 :(得分:0)
当选择默认路线或当前 所选路线 与 public override Task WriteResponseBodyAsync(OutputFormatterWriteContext context)
{
// Want a model from my querystring here
}
不匹配时,该按钮将出现处于非活动状态,表明该应用程序未连接到其要使用的路由。
如果没有非默认路由与选择器匹配,并且活动扫描无法发现任何匹配的路由,则该按钮被禁用并且无法单击。您可以检查documentation以获得更多信息。
答案 2 :(得分:0)
来自示例文档:
“ 为了集成Google Cast功能,“活动”需要从AppCompatActivity或其父级FragmentActivity继承。存在此限制,因为我们需要添加MediaRouteButton(在MediaRouter中提供)支持库)作为MediaRouteActionProvider,并且只有在活动是从上述类继承的情况下,这才起作用。”
您确定您已继承FragmentActivity或AppCompatActivity吗? 如果您可以使用它,请告诉我,我也希望它也可以这样使用。