获取正在运行的android.media.MediaPlayer以跨应用程序中的活动

时间:2011-07-17 19:46:59

标签: android media-player surfaceview surfaceholder

我正在尝试显示一个视频流,该视频流在我的应用程序的一个活动中启动,并跟随用户访问应用程序中的其他活动,而无需重新准备它。活动更改暂停一点就可以了,但不应该重启。在一项活动中,一切正常,但在切换活动时,MediaPlayer似乎不想连接到新的SurfaceHolder。音频效果很好,但几乎没有任何障碍。

我一直在尝试通过使用应用程序上下文初始化的SurfaceView子类来完成此操作。 (当我改为使用简单的视图,例如Button时,重新选择跨活动的应用程序上下文视图似乎工作正常,所以我认为这不是问题。)在构造函数中,我创建了MediaPlayer对象,设置了监听器和datasource(通过HTTP的MP4流 - 是的,我确认我可以正常使用MediaPlayer播放它),然后调用prepareAsync。在SurfaceHolder.Callback的{​​{1}}方法中,我调用surfaceCreated和(如果播放器已完成准备)setDisplay。在start方法中,我调用了surfaceDestroyed。如果已经创建了曲面,则在准备回调中我调用start。

我现在无法做什么。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

更简单的方法是将位置存储在方法onpause():

public void onPause(){

     super.onPause();
     int pos = player.getCurrentPosition();
}

然后在新的活动电话中:

player.seekTo(pos);

player.start();

但这不是很有效率。离开活动时存储视频的状态并在返回活动时恢复会很好,但是我无法在网上找到这样的内容。