我对Android很新,所以要温柔!
我有以下代码,应该(我认为)只是玩“developersshort”。
public constructor(Context context){
this.context = context;
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC,0);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(this.context,
R.raw.developersshort, 1));
}
public void run() {
soundPool.play(soundPoolMap.get(1), 1, 1, 1, 0, 1f);
}
[为了弄清楚发生了什么,它现在播放史蒂夫鲍尔默的混音,反复喊“开发者”!声音文件大小约为90KB。]
当我在模拟器中运行我的应用程序,并按下按钮触发声音时,它会说“开发人员开发人员......”等等,就像我期望的那样。
但是,当我将它部署到手机上时,我听到的只是“velop”一次,然后声音停止。
我不知道发生了什么,有什么想法吗?
非常感谢!
答案 0 :(得分:1)
您的音频文件是.ogg文件吗?似乎其他格式与SoundPool有问题。如果这不起作用,您可能希望使用较小的音频文件进行测试。当我的音频文件超过60kb时,我遇到了一些故障。
答案 1 :(得分:1)
您是否尝试重新采样声音文件???
在此之前我的声音文件被削减了。但我已经将m4a从44KHz转换并重新采样到22KHz,现在它可以正常工作而不会被切割。请参考:and again about memory issues with SoundPool
所以尝试一样。
希望它适合你。
答案 2 :(得分:0)
60kb存储,或堆上2mb,解码,纯波可能是限制,是的。 确保你不要使用超过一秒或类似的东西。
soundpool确实需要小文件。阅读SDK页面。