应用重启后如何重新加入投射会话?

How to rejoin cast session after app restart?

我想在应用重启后重新加入现有的投射会话。

例如。在 Youtube 应用程序上,您可以开始投射一些媒体,强行终止该应用程序,再次启动 youtube,它会无缝地重新加入投射会话。 (它仍然知道你在投射什么,你可以控制会话。)

我怎样才能实现这种行为?

我已经保存了 sessionId,但我似乎无法找到一种方法来查看当前是否有任何路由正在投射相同的 sessionId。 (不过我也不确定这是否是正确的方法。)

使用Cast Application Framework (CAF),在onCreate事件中,必须调用:

CastContext.getSharedInstance(activity);

这将导致所需的行为。

我的问题是我正在开发一个 cordova 插件,而该插件直到 onCreateonResume 之后才加载。 (我相信搜索和自动重新加入发生在 onResume 期间,因此上下文缺少此事件并且根本没有尝试搜索。)

我的解决方案是在 onResume 之前加载 corodva 插件。我通过修改 plugin.xml 以包含 <param name="onload" value="true" />.

来完成此操作
  <platform name="android">
    <config-file target="res/xml/config.xml" parent="/*">
      <feature name="Chromecast">
        <param name="android-package" value="acidhax.cordova.chromecast.Chromecast"/>
        <param name="onload" value="true" />
      </feature>
    </config-file>
</platform>

对于所有人:

您可以使用此代码(也在 onCreate 中)监控会话是否重新加入:

CastContext.getSharedInstance(activity).getSessionManager().addSessionManagerListener(new SessionListener() {
    @Override
    public void onSessionResumed(CastSession castSession, boolean wasSuspended) {
        // This catches any sessions we are able to rejoin
        setSession(castSession);
    }
}, CastSession.class);