MediaPlayer SurfaceView播放黑屏

SurfaceView 在播放器切到后台播放时,SurfaceView的SurfaceHolder会destroy掉,为了避免切回到前台只有声音没有画面的情况,在surfaceChanged的回调函数里需要加上mMediaPlayer.setDisplay(holder),在 destroy的时候pause,在create的时候 start,如下

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

mMediaPlayer.setDisplay(holder);

  Log.e("SurfaceHolder","change " +"width: "+width +" height: "+height);

}


@Override

public void surfaceCreated(SurfaceHolder holder) {

      mMediaPlayer.start();

}



@Override

public void surfaceDestroyed(SurfaceHolder holder) {

if (mMediaPlayer !=null &&mMediaPlayer.isPlaying()) {

      mMediaPlayer.pause();

      Log.e("SurfaceHolder","destory");

  }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容