调用 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调用谷歌浏览器的问题解决

Appium-desktop元素定位

Python 的selenium打包成程序后,电脑里没有安装chrom浏览器,如何运行?

chrom插件1

SeleniumOption加载用户配置,Chrom命令行参数