Android SoundPool剪切音频文件短

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);
}

为了尝试弄清楚发生了什么,它目前播放的是那个重复播放 Steve Ballmer 喊“开发者”的混音曲!这个声音文件大小约为90KB。
当我在模拟器中运行我的应用程序并按下按钮触发声音时,它会像我预期的那样说出“开发者,开发者,开发者......”等等。
然而,当我将它部署到我的手机上时,我只听到了一些类似于“velop”的声音,然后声音就停止了。
我完全不知道发生了什么,请问有什么想法吗?
非常感谢!
3个回答

1

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


1

你尝试过对声音文件进行重新采样吗?

在此之前,我的声音文件一直被切断。但是我已经将那个m4a文件从44KHz转换和重新采样到22KHz,现在它可以正常播放而不会被切断。请参考这个链接:再次关于SoundPool的内存问题

所以你也可以尝试同样的方法。

希望这对你有用。


0

存储大小为60kb,或堆大小为2mb,解码后,纯波形可能会有一定限制。

确保您不要使用超过一秒钟的任何内容。

SoundPool 真的需要小文件,请阅读 SDK 页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接