gpt4 book ai didi

android - SoundPool 不能播放 mp3?

转载 作者:太空狗 更新时间:2023-10-29 15:52:50 26 4
gpt4 key购买 nike

我正在尝试使用 SoundPool 执行 mp3 文件。我用 SoundPool.load 加载了 mp3,但是当我尝试 SoundPool.play 时不起作用,也没有抛出任何异常。我正在使用 API21。

我该如何解决?

我正在尝试这个。

public class CustomSoundPool {

//SDK Version
public SoundPool getSoundPool(){
SoundPool sounds = null;

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();

sounds = new SoundPool.Builder()
.setAudioAttributes(attributes)
.build();
}else{
sounds = new SoundPool(5,AudioManager.STREAM_MUSIC,0);
}
return sounds;
}

}




/** play sound with error or success */
private void playSound(){
SoundPool sound = new CustomSoundPool().getSoundPool();
if(resposta.getValor() == 1){
int soundId = sound.load(getView().getContext(), R.raw.sucesso, 1);
sound.play(soundId, 1, 1, 0, 0, 1);
}else{
int soundId = sound.load(getView().getContext(), R.raw.erro, 1);
sound.play(soundId, 1, 1, 0, 0, 1);
}
sound.release();
}

最佳答案

您过早发布了 SoundPool。稍后发布,即在 ActivityonDestroy 方法中。现在,在释放 SoundPool 对象使用的所有内存和 native 资源之前,声音将没有足够的时间播放。此外,您正在尝试在实际加载之前快速播放声音。在加载声音之前,您不能使用 play。使用 SoundPool.OnLoadCompleteListener#onLoadComplete 等待声音加载完毕,内部监听器播放您的声音。

SoundPool soundPool;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();

soundPool = new SoundPool.Builder()
.setAudioAttributes(attributes)
.build();
}
else {
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
}
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(sampleId, 1.0f, 1.0f, 0, 0, 1.0f);
}
});
soundPool.load(this, R.raw.sucesso, 1);

关于android - SoundPool 不能播放 mp3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com