【问题标题】:How to rejoin cast session after app restart?应用重启后如何重新加入演员会话?
【发布时间】:2019-09-05 08:30:18
【问题描述】:
我想在应用重启后重新加入现有的演员会话。
例如。在 Youtube 应用程序上,您可以开始投射一些媒体,强制终止应用程序,再次启动 youtube,然后它会无缝地重新加入投射会话。 (它仍然知道你在投射什么,你可以控制会话。)
我怎样才能实现这种行为呢?
我已经保存了 sessionId,但我似乎无法找到一种方法来查看当前是否有任何路由正在投射相同的 sessionId。 (我也不确定这是否是正确的方法。)
【问题讨论】:
标签:
android
cordova-plugins
google-cast
【解决方案1】:
使用Cast Application Framework (CAF),在onCreate事件中,你必须调用:
CastContext.getSharedInstance(activity);
这将导致所需的行为。
对我来说,问题是我正在开发一个 cordova 插件,并且该插件直到 onCreate 和 onResume 之后才加载。 (我相信在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);