我正在尝试显示一个视频流,该视频流从我的应用程序的一个 Activity 开始,然后跟随用户进行应用程序中的其他 Activity ,而无需重新准备。稍微暂停一下 Activity 更改是可以的,但它不应该重新启动。在一项 Activity 中一切正常,但在切换 Activity 时,MediaPlayer
似乎不想连接到新的 SurfaceHolder
。不过,音频效果非常好,几乎没有任何障碍。
我一直在尝试通过使用应用程序上下文初始化的 SurfaceView
的子类来执行此操作。 (当我使用 Button
等简单 View 时,跨 Activity 重新定位应用程序上下文 View 似乎工作正常,所以我认为这不是问题所在。)在构造函数中,我创建了 MediaPlayer 对象,设置监听器和数据源(通过 HTTP 的 MP4 流——是的,我验证了我可以正常使用 MediaPlayer 来播放它),然后调用 prepareAsync
。在我的 SurfaceHolder.Callback
的 surfaceCreated
方法中,我调用了 setDisplay
并且(如果播放器已完成准备)开始
.在 surfaceDestroyed
方法中,我调用了 pause
。如果表面已经创建,我会在准备回调中调用开始。
此时我不知所措。有什么想法吗?
最佳答案
更简单的方法是将位置存储在 onpause() 方法中:
public void onPause(){
super.onPause();
int pos = player.getCurrentPosition();
}
然后在新的 Activity 调用中:
player.seekTo(pos);
player.start();
但这不是很有效。在离开 Activity 时存储视频状态并在返回 Activity 时恢复视频状态会很好,但我在网上找不到这样的东西。
关于android - 让正在运行的 android.media.MediaPlayer 在应用程序中跨 Activity 持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6726331/