调用 startSession() 后,chromecast“无法启动应用程序:没有应用程序正在运行”
Posted
技术标签:
【中文标题】调用 startSession() 后,chromecast“无法启动应用程序:没有应用程序正在运行”【英文标题】:chromecast "failed to start application: no application is running" after called startSession() 【发布时间】:2013-08-27 07:27:42 【问题描述】:我正在测试使用 chromecast 播放在线视频。
在onRouteSelected()
之后,我创建ApplicationSession并附加一个MediaProtocalMessageStream;
然后我打电话给mSession.startSession();
没有APP_ID,所以我假设chromecast 中的内置应用程序会为我播放视频。此代码完美运行,我无需编写自己的接收器即可播放在线 mp4 视频。
但是,当我尝试离开视频播放应用时,我无法再返回,总是有一条来自onSessionStartFailed()
的错误消息显示
StartSessionTask 失败并出现错误:无法启动应用程序:否 应用程序正在运行
我不记得我第一次进入视频播放应用程序是什么时候了,我几天都没有离开。
但我确实知道我是如何离开它的,这是我在再也无法启动会话之前所做的:
-
打开 Youtube 应用,连接设备
播放一些 youtube 视频
与 chormecast 断开连接,然后 chromecast 返回到起始页面
那么,没有人知道这里发生了什么吗?如何再次打开内置视频应用?
顺便说一句,我的 chromecast 在我返回起始页面后得到了系统更新,我不知道谷歌更新是否导致 startSession() 失败。
下面是我 startSession 并附加一个 mediaStream 的代码。
mSession = new ApplicationSession(mCastContext, mSelectedDevice);
ApplicationSession.Listener listener = new ApplicationSession.Listener()
@Override
public void onSessionStarted(ApplicationMetadata appMetadata)
mChannel = mSession.getChannel();
mStream = new MediaProtocolMessageStream();
mChannel.attachMessageStream(mStream);
if (mStream.getPlayerState() == null)
ContentMetadata metaData = new ContentMetadata();
metaData.setTitle("Test Video");
String url = "http://www.auby.no/files/video_tests/h264_720p_hp_5.1_6mbps_ac3_planet.mp4";
try
mCommand = mStream.loadMedia(url, metaData, true);
mCommand.setListener(new MediaProtocolCommand.Listener()
@Override
public void onCompleted(MediaProtocolCommand arg0)
onSetVolume(0.5);
@Override
public void onCancelled(MediaProtocolCommand arg0)
);
catch (IllegalStateException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
@Override
public void onSessionStartFailed(SessionError error)
Log.d("TEST", "Session Started failed");
@Override
public void onSessionEnded(SessionError error)
Log.d("TEST", "Session Started end");
;
mSession.setListener(listener);
try
mSession.startSession();
catch (IllegalStateException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
【问题讨论】:
【参考方案1】:您必须使用自己的应用 ID 和自己的接收器。谷歌的默认接收器不再播放视频流(它曾经)。它现在只处理 Chrome 选项卡镜像。
【讨论】:
似乎没有参数的 startSession() 只是与当前在 Chromecast 设备上运行的应用程序创建会话,它不能再启动新的应用程序了。以上是关于调用 startSession() 后,chromecast“无法启动应用程序:没有应用程序正在运行”的主要内容,如果未能解决你的问题,请参考以下文章
CakeSession::_startSession - Elasticache 慢
webdirver.Chrom() selenium webdirver调用谷歌浏览器的问题解决