1

我正在测试使用 chromecast 播放在线视频。之后onRouteSelected(),我创建 ApplicationSession 并附加一个 MediaProtocalMessageStream;

然后我打电话mSession.startSession();没有APP_ID,所以我假设chromecast中的内置应用程序会为我播放视频。此代码完美运行,我无需编写自己的接收器即可播放在线 mp4 视频。

但是,当我尝试离开视频播放应用程序时,我无法再返回,总是有一条错误消息来自onSessionStartFailed()其中说

StartSessionTask 失败并出现错误:无法启动应用程序:没有应用程序正在运行

我不记得我是如何第一次进入视频播放应用程序的,我几天都没有离开。

但我确实知道我是如何离开它的,这是我在再也无法启动会话之前所做的:

  1. 打开 Youtube 应用,连接设备
  2. 播放一些 youtube 视频
  3. 与 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();
}
4

1 回答 1

1

您将不得不使用自己的应用程序 ID 和自己的接收器。谷歌的默认接收器不再播放视频流(它曾经)。它现在只处理 Chrome 标签镜像。

于 2013-08-27T12:18:32.513 回答