安卓SoundPool只能发出一次声音,或者没有声音
2016-12-21 15:25
148 查看
遇到一个奇怪的问题,soundpool.play()在部分华为和小米手机上只能发出一次声音,后面调用soundpool.play()居然没有声音发出了,可是这个问题只是在部分手机上出现而已,部分华为的也可以继续发声,魅族的也可以。经过研究分析认为应该是我在activity 的oncreate方法里面加载完文件后,后面调用了一次soundpool.play()播放了文件,然后由于部分手机的内存太小或者手机系统太优,自动释放内存把资源释放掉了,这才导致后面调用soundpool.play()不发出声音。最后我是这样解决的:在需要播放的地方重新加载文件,让它加载完成后再播放,具体如下:
scansoundid = soundpool.load(context, R.raw.b03, 1); soundpool.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { soundpool.play(scansoundid, 5, 5, 0, 0, 1); } });不知道我的分析是否正确,如果有大神懂的,还请留言赐教,谢谢!
相关文章推荐
- DLINQ 使用DataContext快速构建数据访问层DAL,发现Updata采用Attach(Entity t,true)困难重重!(如果实体声明了版本成员或者没有更新检查策略,则只能将它附加为没有原始状态的已修改实体)的解决办法!
- jQuery实现全选、全不选和反选,没有只能选一次的bug
- ajax或者jQuery的ajaxSubmit出现请求根本没有发出的问题
- 关于ASUS X55V win7音响或者耳机没有声音的问题
- 没有声音,或者声音小
- 电脑里的所有播放器只能播放声音没有画面
- 调整01的位置,使得0在基数位1在偶数位,并且只能一次扫描,没有额外空间
- 解决win10台式机插入耳机没有声音或者音量不大
- ajax或者jQuery的ajaxSubmit出现请求根本没有发出的问题
- 无法连接到WMI提供程序。你没有权限或者该服务器无法访问。请注意你只能使用SQL SERVER 配置管理器来管理sql server 2005服务器
- linux 解决安装Nvidia驱动后,或者声音选项里只有HDMI,声卡没有声音的方法[集锦]
- go语言让windows发出声音,或者播放音乐
- 独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总
- 有3个商人和3个随从在河岸边,他们都想过河,只有一艘船,没有船夫,而且船一次只能载2个人.任何时候船过了河,只要这6个人没过完,都得人回来接,怎么才能顺利过河呢?要求任何时候都不得随从数目大于商人数目,防止他们劫财.
- 无法连接到WMI提供程序。你没有权限或者该服务器无法访问。请注意你只能使用SQL SERVER 配置管理器来管理sql server 2005服务器
- 当request某个属性值变化之后,它原本所付给的int 变量的值似乎没有跟着改变,必须int变量参与运算,如+1或-1,或者直接用request获取值才能得到想要的结果。否则只能得到最开始所付的值
- writeObject可以写n个,但是readObject()却只能读一次,你做一下测试。 如果你需要序列化好几个类的话,建议你用json;或者自己写两个方法,一个是将对象转换为字符串,一个是将字符串
- webview是用软解码或者硬解码可能导致视频播放有声音没有图像
- 无法连接到WMI提供程序。你没有权限或者该服务器无法访问。请注意你只能使用SQL SERVER 配置管理器来管理sql server 2005服务器
- PC机电脑没有声音故障一例