我正在尝试显示一个视频流,该视频流在我的应用程序的一个活动中启动,并跟随用户访问应用程序中的其他活动,而无需重新准备它。活动更改暂停一点就可以了,但不应该重启。在一项活动中,一切正常,但在切换活动时,MediaPlayer
似乎不想连接到新的SurfaceHolder
。音频效果很好,但几乎没有任何障碍。
我一直在尝试通过使用应用程序上下文初始化的SurfaceView
子类来完成此操作。 (当我改为使用简单的视图,例如Button
时,重新选择跨活动的应用程序上下文视图似乎工作正常,所以我认为这不是问题。)在构造函数中,我创建了MediaPlayer对象,设置了监听器和datasource(通过HTTP的MP4流 - 是的,我确认我可以正常使用MediaPlayer播放它),然后调用prepareAsync
。在SurfaceHolder.Callback
的{{1}}方法中,我调用surfaceCreated
和(如果播放器已完成准备)setDisplay
。在start
方法中,我调用了surfaceDestroyed
。如果已经创建了曲面,则在准备回调中我调用start。
我现在无法做什么。有什么想法吗?
答案 0 :(得分:0)
更简单的方法是将位置存储在方法onpause():
public void onPause(){
super.onPause();
int pos = player.getCurrentPosition();
}
然后在新的活动电话中:
player.seekTo(pos);
player.start();
但这不是很有效率。离开活动时存储视频的状态并在返回活动时恢复会很好,但是我无法在网上找到这样的内容。