您的位置:首页 > 其它

SoundPool的一些可能导致没有声音的注意事项

2016-06-16 17:23 204 查看
soundfool用法虽然简单,但是也会出现一些小错误。

从网上能找到的这几条,有则改之,无则加勉吧。

1、A
udioFlingercould 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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: