4

我对 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”的声音,然后声音就停止了。

我不知道发生了什么,有什么想法吗?

非常感谢!

4

3 回答 3

1

您是否尝试过重新采样声音文件???

在此之前,我的声音文件被剪切了。但是我已经将 m4a 从 44KHz 转换并重新采样到 22KHz,现在它可以正常工作而不会被削减。参考这个:再次关于 SoundPool 的内存问题

所以尝试一样。

希望它对你有用。

于 2012-10-29T11:22:11.940 回答
1

您的音频文件是 .ogg 文件吗?其他格式似乎与 SoundPool 有问题。如果这不起作用,您可能需要使用较小的音频文件对其进行测试。当我的音频文件超过 60kb 时,我遇到了一些故障。

于 2011-06-17T13:00:05.893 回答
0

60kb 的存储空间,或 2mb 的堆空间,解码后,纯波可能是极限,是的。确保你使用的时间不超过一秒或类似的东西。

soundpool 确实需要小文件。阅读 SDK 页面。

于 2011-11-18T03:23:13.847 回答