我有一个在后台服务中运行的媒体播放器实例。在我的主要 Activity 中,我有一个表面 View 。
当 Activity 启动并创建表面 View 时,我绑定(bind)到服务并将媒体播放器的显示表面设置为来 self 的主要 Activity 的表面 View 。我使用 mPlayer.setSurface(sv.getHolder().getSurface());
视频已显示,到目前为止一切正常。当我的表面 View 被销毁时,在 surfaceDestroyed()
回调中,我尝试通过调用 mPlayer.setSurface(null);
将表面 View 与媒体播放器分离。问题是,当我这样做时,媒体播放器出现错误(错误代码 1)。
所以我的问题是,在我设置了一个 MediaPlayer 对象并使用 mPlayer.setSurface(sv.getHolder().getSurface());
设置了 surfaceview 之后,有没有办法在不停止或重新初始化媒体播放器对象的情况下释放或分离该表面 View ?
提前致谢。
最佳答案
您可以避免在用户导航离开时暂停播放。这将帮助您继续播放。但还有另一个问题:当您的 Activity/fragment 从窗口 SurfaceView
分离时被破坏。这意味着当用户返回您的应用时,您必须使用重新创建的 SurfaceView
实例重新初始化媒体播放器。
关于android - 如何从 android mediaplayer 分离/释放 surfaceview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450584/