Android MediaPlayer在播放时附加/分离支架

时间:2015-08-02 11:36:19

标签: android video android-mediaplayer

我正在创建一个播放rstp视频流的流媒体应用。问题是,当用户移动到另一个活动时,我需要视频继续在后台播放(仅限音频)。

为了实现这一点,我创建了一个播放流的静态MediaPlayer对象。如果我没有调用mediaPlayer.setDisplay(holder)函数,后台播放工作正常。但是一旦我设置了SurfaceHolder,我似乎无法在没有MediaPlayer暂停的情况下将其设置为null。这是我使用SurfaceView的Activity中的代码。

@Override
public void surfaceCreated(SurfaceHolder holder) {
    StaticMediaPlayer.setHolder(holder);
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    StaticMediaPlayer.setHolder(null);
    //I've tried to do StaticMediaPlayer.setHolder(holder);
    //This actually continues the playing, but the mediaPlayer can no longer attach
    //Also, the console is flooded with errors.
}

set holder函数只是一个setDisplay包装函数

public static void setHolder(SurfaceHolder holder) {
    mediaPlayer.setDisplay(holder);
    //I've even tried to put mediaPlayer.start() here but it doesn't continue.
}

问题是当我将持有者设置为null时,视频流暂停。如果我稍后再回到活动,它会恢复正常。

我记录了mediaPlayer.getCurrentPosition()和mediaPlayer.isPlaying()值,以确保它仍在播放。

这是正常播放时的样子

pos: 113623 playing: true
pos: 114518 playing: true
pos: 115582 playing: true
pos: 116590 playing: true

这就是SurfaceView被销毁时的样子。

pos: 117917 playing: true //This shows that the mediaplayer is still playing.
pos: 117917 playing: true //But for some reason the position isn't progressing
pos: 117917 playing: true
pos: 117917 playing: true 

即使SurfaceHolder设置为null,如何让MediaPlayer继续播放?

0 个答案:

没有答案