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