Android Bugs——解决MediaPlayer+SurfaceView程序切换到后台再恢复播放,有声音没画面问题

原因:

当Activity进入onPause状态之后,SurfaceView会被销毁,进而回调surfaceDestroyed()方法,当你程序从后台切到前台恢复时,SurfaceView并没有重新创建,所以就会出现有声音没画面的情况。

解决方法:

监听SurfaceHolder的callback回调,在surfaceCreated和surfaceDestroyed中处理播放器的播放和停止。代码如下:

getHolder().addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder surfaceHolder) {Log.d(TAG, "surfaceCreated");isReady = true;player.setDisplay(getHolder());if (!"".equals(url) && !player.isPlaying()) {try {player.reset();player.setDataSource(url);player.prepare();player.seekTo(position);Log.d(TAG, "续播时间:" + position);} catch (IOException e) {e.printStackTrace();}}}@Overridepublic void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {Log.d(TAG, "surfaceChanged");}@Overridepublic void surfaceDestroyed(SurfaceHolder surfaceHolder) {isReady = false;Log.d(TAG, "surfaceDestroyed");if (player.isPlaying()) {position = player.getCurrentPosition();Log.d(TAG, "当前播放时间:" + position);player.stop();}}});

完整的MediaPlayer+SurfaceView使用例子参考另一片博文MediaPlayer+SurfaceView完整例子。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部