android - 如何从 android mediaplayer 分离/释放 surfaceview

标签 android surfaceview android-mediaplayer

我有一个在后台服务中运行的媒体播放器实例。在我的主要 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/

相关文章:

android - 防止 child 离开屏幕边界

java - 使用 getter setter 初始化 List

java - Android 应用程序中的 WaitingInMainSignalCatcherLoop 错误

android - 使用先前启动的 Activity 转换恢复 Activity 时查看可见性状态丢失

java - 在 StringBuilder java 中计数带有整数的 float

android - MediaPlayer 在第一次运行时不工作

java - Android NDK多线程 block UI响应

audio - 在网络上录制音频并将数据发送到 Android 应用程序

安卓媒体播放器 : IllegalStateException when app closes/press back button

Android:如何告诉 ShrinkResources 保留某些资源