SoundPool的一些可能导致没有声音的注意事项
2016-06-16 17:23
204 查看
soundfool用法虽然简单,但是也会出现一些小错误。
从网上能找到的这几条,有则改之,无则加勉吧。
1、AudioFlingercould not create track, status:-12
SoundPool即音效池,在创建的时候 maxStream这个参数代表能够同时播放的最大音效数,这里切忌合理使用,写的太大后会报AudioFlingercould
not create track, status: -12。。。。一旦报了这个错,你就听不到声音了,呵呵。
2、256个音效
当调用load方法的时候实际就是把音效加载到了SoundPool中,此时返回的streamId其实就是该音效在SoundPool中的Id,这个ID从0还是1来着(有点记不清了)递增,不过要注意的是,不要超过
256 这个临界点。也就是说第257个声音加载进去后,调用play方法其实是播不出来的,说不定还会挤掉一些前面加载好的声音。这个256的限制通过查看SDK源码基本就能了解清楚,它底层就那么实现的,用一个类似堆栈来存。
3、unload方法和release方法
如果你音效多,也不要指望unload方法来清除掉一些音效后再load新的进去,虽然unload后音效卸载了,但是前面分给它在SoundPool里面的Id可没有释放掉,也就是说这个时候你load新的进去只会在后面继续累加,然后累加多了就超过256了,然后就就听不到声音,然后就没有然后了。要想彻底清掉前面的音效请使用release方法,它会连内存中占用的资源一起释放掉。
其他还有点什么呢,load需要一点点时间,load后不要马上unload,load---play--unload的做法并不可取,不要load太大的音效,它只会申请1M的内存空间。SoundPool出错后通常会看到retuen的值是0。
从网上能找到的这几条,有则改之,无则加勉吧。
1、AudioFlingercould not create track, status:-12
SoundPool即音效池,在创建的时候 maxStream这个参数代表能够同时播放的最大音效数,这里切忌合理使用,写的太大后会报AudioFlingercould
not create track, status: -12。。。。一旦报了这个错,你就听不到声音了,呵呵。
2、256个音效
当调用load方法的时候实际就是把音效加载到了SoundPool中,此时返回的streamId其实就是该音效在SoundPool中的Id,这个ID从0还是1来着(有点记不清了)递增,不过要注意的是,不要超过
256 这个临界点。也就是说第257个声音加载进去后,调用play方法其实是播不出来的,说不定还会挤掉一些前面加载好的声音。这个256的限制通过查看SDK源码基本就能了解清楚,它底层就那么实现的,用一个类似堆栈来存。
3、unload方法和release方法
如果你音效多,也不要指望unload方法来清除掉一些音效后再load新的进去,虽然unload后音效卸载了,但是前面分给它在SoundPool里面的Id可没有释放掉,也就是说这个时候你load新的进去只会在后面继续累加,然后累加多了就超过256了,然后就就听不到声音,然后就没有然后了。要想彻底清掉前面的音效请使用release方法,它会连内存中占用的资源一起释放掉。
其他还有点什么呢,load需要一点点时间,load后不要马上unload,load---play--unload的做法并不可取,不要load太大的音效,它只会申请1M的内存空间。SoundPool出错后通常会看到retuen的值是0。
相关文章推荐
- 选择法
- wpf xmal基础
- OpenCV遍历文件夹下所有文件
- 打开相册相机上传照片代码
- iOS tableView和pickerView
- Qt简介
- Spring4.2.6+SpringMVC4.2.6+MyBatis3.4.0 整合
- 鞍点的制作 K=m+1
- 添加菜单
- 为什么要判断k<m,k>m+1
- ZigBee server和 client
- 我的信息
- Android应用中添加Log4j的示例
- 排队买票
- 主题皮肤管理YRTheme简单介绍
- iOS Objective-C Associated Objects 的实现原理
- encodeURI这个函数的功能是做什么的呢?
- swift学习02-元组tuple
- 饼状图(PieChart)与柱形图(BarChart)的使用
- Solr入门之官方文档6.0阅读笔记系列(八) 相关过滤器