【问题标题】:MediaRouteButton is not active in FragmentMediaRouteButton 在 Fragment 中未激活
【发布时间】:2019-04-18 11:26:29
【问题描述】:

我使用按钮在我的应用程序中的活动 xml 和带有视频播放器的片段 xml 中启动 chromecast android.support.v7.app.MediaRouteButton

为了初始化投射按钮,我使用下面的代码:

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 会变为活动状态,我可以按下它。但是当这个 Button 在 Fragment 上时,它不会变为活动状态。以及回调

   @Override
    public void onCastStateChanged(int state) 

不打电话。那么,如何修复这个错误呢?还有一个有趣的时刻:当我在片段中时,按钮是不活动的,但是当我将我的应用程序隐藏到后台,然后打开到前台时,我的 mediaroutebutton 变为活动状态。太奇怪了。

【问题讨论】:

  • 你有没有发现这个问题?我也将按钮放在片段中,我不想将其移动到活动中。
  • 你解决了吗?我在使用 Cast 18.1.0 时遇到了这个问题。当片段恢复时,按钮变为活动状态......确实很奇怪!

标签: android chromecast


【解决方案1】:

在您的活动中,初始化Cast

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    CastContext.getSharedInstance(this);
}

然后在您的 fragment 中,您可以获取Cast 上下文:

@Override
public void onResume() {
    super.onResume();

    CastContext cc = CastContext.getSharedInstance();
    cc.addCastStateListener(this);
    cc.getSessionManager().addSessionManagerListener(
        this, CastSession.class);
}

使用 Cast 版本验证18.1.0

【讨论】:

    【解决方案2】:

    取自示例文档:

    "为了集成 Google Cast 功能,Activity 需要从 AppCompatActivity 或其父级继承 FragmentActivity。存在此限制,因为我们需要添加 MediaRouteButton(在 MediaRouter 中提供支持库)作为 MediaRouteActionProvider 并且仅当活动从上述类继承时才有效。”

    您确定继承了 FragmentActivity 或 AppCompatActivity 吗? 如果你让它工作,请告诉我,我也希望它以这种方式工作。

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多