Android SoundPool正在短切声音文件

Android SoundPool正在短切声音文件,android,soundpool,Android,Soundpool,我对安卓相当陌生,所以要温柔 我有以下代码,应该(我认为)只播放“developersshort” 公共构造函数(上下文){ this.context=上下文; soundPool=新的soundPool(2,AudioManager.STREAM_MUSIC,0); soundPoolMap=新HashMap(); soundPoolMap.put(1,soundPool.load)(this.context, R.raw.developersshort,1); } 公开募捐{ soundPo

我对安卓相当陌生,所以要温柔

我有以下代码,应该(我认为)只播放“developersshort”

公共构造函数(上下文){
this.context=上下文;
soundPool=新的soundPool(2,AudioManager.STREAM_MUSIC,0);
soundPoolMap=新HashMap();
soundPoolMap.put(1,soundPool.load)(this.context,
R.raw.developersshort,1);
}
公开募捐{
soundPool.play(soundPoolMap.get(1),1,1,1,0,1f);
}
[为了弄清楚发生了什么,它目前正在播放史蒂夫·鲍尔默反复喊“开发者”的混音!声音文件大小约为90KB。]

当我在模拟器中运行我的应用程序,按下按钮触发声音时,它会显示“开发者…”等等,就像我预期的那样

然而,当我将它部署到手机上时,我只会听到一次类似“evelop”的声音,然后声音就停止了

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


非常感谢

您的音频文件是.ogg文件吗?似乎其他格式的声音池也有问题。如果这不起作用,你可能想用一个更小的音频文件来测试它。当我的音频文件超过60kb时,我出现了一些小故障。

60kb的存储空间,或2mb的堆,被解码,因为纯wave可能是限制,是的。 确保你用的时间不要超过一秒钟或类似的东西


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

您尝试过对声音文件重新采样吗

在此之前,我的声音文件被切断了。但我已经将m4a从44KHz转换并重新采样到22KHz,现在它可以正常工作而不会被切断。请参阅:

所以试着做同样的事

希望它对你有用

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