恢复当前在Google Cast'ExpandedControlsActivity'中播放视频而不是重新启动

时间:2017-04-19 10:00:42

标签: android video chromecast google-cast

从我的Android手机中,如果我再次播放已经播出的电视播放视频,则会在手机上显示“ExpandedControlsActivity”,视频将从电视开始播放。 我不希望视频从一开始就开始我只是希望它继续在电视上播放并使用电视更新状态制作“ExpandedControlsActivity”简历。有可能吗?

1 个答案:

答案 0 :(得分:0)

AFAIK,是的。由于Google Cast框架具有sender resumes cast中讨论的此设计功能,因此可以恢复当前正在播放的视频。

有了这个,您可能想尝试使用SessionManagerListener类。

正如本documentation中所述,

  

会话由班级SessionManager管理,您的应用可以通过CastContext.getSessionManager()访问该班级。单个会话由类Session的子类表示。例如,CastSession表示与Cast设备的会话。您的应用可以SessionManager.getCurrentCastSession()访问当前有效的Cast会话。

此外,您可以使用SessionManagerListener类监视会话事件,例如恢复。当会话处于活动状态时,Google Cast框架会自动尝试从异常/突然终止中恢复。

以下是有关如何管理会话的示例:

public class MyActivity extends Activity {
    private CastSession mCastSession;
    private SessionManager mSessionManager;
    private final SessionManagerListener mSessionManagerListener =
            new SessionManagerListenerImpl();
    private class SessionManagerListenerImpl implements SessionManagerListener {
        @Override
        public void onSessionStarted(Session session, String sessionId) {
            invalidateOptionsMenu();
        }
        @Override
        public void onSessionResumed(Session session, boolean wasSuspended) {
            invalidateOptionsMenu();
        }
        @Override
        public void onSessionEnded(Session session, int error) {
            finish();
        }
    }
    @Override
    protected void onCreate() {
        mSessionManager = CastContext.getSharedInstance(this).getSessionManager();
        super.onCreate();
    }
    @Override
    protected void onResume() {
        mCastSession = mSessionManager.getCurrentCastSession();
        mSessionManager.addSessionManagerListener(mSessionManagerListener);
        super.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        mSessionManager.removeSessionManagerListener(mSessionManagerListener);
        mCastSession = null;
    }
}