【问题标题】:How to detach/release surfaceview from android mediaplayer如何从android mediaplayer分离/释放surfaceview
【发布时间】:2012-09-09 03:46:26
【问题描述】:

我有一个媒体播放器实例在后台服务中运行。在我的主要活动中,我有一个表面视图。

当活动启动并创建表面视图时,我绑定到服务并将媒体播放器的显示表面设置为我的主要活动的表面视图。我用mPlayer.setSurface(sv.getHolder().getSurface()); 做这个

视频已显示,到目前为止一切正常。当我的surfaceview 被销毁时,在surfaceDestroyed() 回调中,我尝试通过调用mPlayer.setSurface(null); 将surfaceview 从媒体播放器中分离出来。问题是当我这样做时,我从媒体播放器收到错误(错误代码 1)。

所以我的问题是,在我设置了 MediaPlayer 对象并使用mPlayer.setSurface(sv.getHolder().getSurface()); 设置了surfaceview 之后,有没有办法在不停止或重新初始化mediaplayer 对象的情况下释放或分离该surfaceview?

提前致谢。

【问题讨论】:

  • 您尝试如何从媒体播放器中移除表面?
  • @Artjom 我要做的是:如果用户关闭屏幕或导航离开我的主要活动,我想继续在后台播放视频的音频部分。如果用户重新进入我的活动并且如果剪辑正在我的后台服务中播放,我想在我的表面视图中自动显示视频。有什么方法可以在不停止或重置 MediaPlayer 对象的情况下做到这一点?
  • @ilikekiwis 我在这里尝试做同样的事情。你后来想出主意了吗?
  • 您是否尝试在用户关闭应用屏幕(隐藏)时不暂停播放?我记得它对我有用。

标签: android surfaceview android-mediaplayer


【解决方案1】:

您可以避免在用户离开时暂停播放。这将帮助您继续播放。但是还有另一个问题:当您从窗口SurfaceView 分离的活动/片段被破坏时。这意味着当用户返回您的应用程序时,您必须使用重新创建的 SurfaceView 实例重新初始化媒体播放器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多