我正在测试使用chromecast播放在线视频。
在onRouteSelected()
之后,我创建ApplicationSession并附加MediaProtocalMessageStream;
然后我在没有APP_ID的情况下调用了mSession.startSession();
,所以我假设chromecast内置的内置应用为我播放视频。这段代码非常完美,我可以在不编写自己的接收器的情况下播放在线mp4视频。
但是,当我尝试离开视频播放应用时,我不能再回去了,onSessionStartFailed()
总会出现一条错误消息,上面写着
StartSessionTask失败并显示错误:无法启动应用程序:否 应用程序正在运行
我不记得我第一次进入视频播放应用程序时,我几天都没有离开。
但我确实知道如何离开它,这是我在再也无法开始之前所做的事情:
那么,有没有人知道这里发生了什么?如何再次打开内置视频应用程序?
顺便说一下,我的chromecast在我返回起始页面后得到系统更新,我不知道google update是否会导致startSession()失败。
下面是代码I 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();
}
答案 0 :(得分:1)
您必须使用自己的应用ID和自己的接收器。谷歌的默认接收器不再播放视频流(以前)。它现在只处理Chrome标签镜像。