博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Bugs——解决MediaPlayer+SurfaceView程序切换到后台再恢复播放,有声音没画面问题
阅读量:2082 次
发布时间:2019-04-29

本文共 1538 字,大约阅读时间需要 5 分钟。

原因:

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

解决方法:

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

getHolder().addCallback(new SurfaceHolder.Callback() {            @Override            public 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();                    }                }            }            @Override            public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {                Log.d(TAG, "surfaceChanged");            }            @Override            public void surfaceDestroyed(SurfaceHolder surfaceHolder) {                isReady = false;                Log.d(TAG, "surfaceDestroyed");                if (player.isPlaying()) {                    position = player.getCurrentPosition();                    Log.d(TAG, "当前播放时间:" + position);                    player.stop();                }            }        });

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

转载地址:http://mgcqf.baihongyu.com/

你可能感兴趣的文章
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>
Java实现简单的递归操作
查看>>
Struts2工作原理和执行流程图
查看>>
在线预览Word,Excel~
查看>>
hibernate延迟加载(get和load的区别)
查看>>
关于文件拷贝效率问题
查看>>
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>
【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
查看>>
【MyBatis学习06】输入映射和输出映射
查看>>
【MyBatis学习07】动态sql
查看>>
【MyBatis学习08】高级映射之一对一查询
查看>>