应用重启后如何重新加入演员会话?

Posted

技术标签:

【中文标题】应用重启后如何重新加入演员会话?【英文标题】:How to rejoin cast session after app restart? 【发布时间】:2019-09-05 08:30:18 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

使用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);

【讨论】:

以上是关于应用重启后如何重新加入演员会话?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新加入会话的情况下检查屏幕会话的进度?

重启后 Spring Security 仍然经过身份验证(但没有会话)

服务器重新启动时如何在节点 js 中保持持久会话?

重启后Spring没有将tomcat持久会话恢复到会话注册表?

win10 登入界面显示: 本地会话管理器 服务未能登录 RPC 服务器不可用 随后一直重启重复

发件人应用程序在被杀死后如何恢复会话?