Android 的 SoundPool 不播放任何声音

Ger*_*dpp 2 audio android soundpool

我已经尝试了一切来使这项工作。Android 的 SoundPool 类正在加载 .ogg 音频文件(已测试),但无法播放。由于某些奇怪的原因,我无法使其正常工作。我已经关注了很多关于这个问题的教程和论坛,但仍然无法让它工作。

这是我的代码:

作为全局变量:

 SoundPool soundPool;
 boolean ya = false;
Run Code Online (Sandbox Code Playgroud)

在我的活动的 onCreate 上:

   this.setVolumeControlStream(AudioManager.STREAM_MUSIC);    
   if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
                soundPool = new SoundPool.Builder()
                .setMaxStreams(15)
                .build();
    }else{
        soundPool = new SoundPool(15, AudioManager.STREAM_MUSIC, 0);
    }

    soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool sp, int sampleId, int status) {
            ya = true;
        }
    });     
    soundPool.load(this, R.raw.explosion_1, 1);
Run Code Online (Sandbox Code Playgroud)

最后,在我的一个按钮的 onClick 方法上:

public void instructions(View v){
    if(ya){
        soundPool.play(R.raw.explosion_1, 0.99f, 0.99f, 1, 0, 0.99f);
    }
}
Run Code Online (Sandbox Code Playgroud)

请帮忙。

tac*_*lux 5

为了播放声音,您需要传入idload()进入的play()

int explosion = soundPool.load(this, R.raw.explosion_1, 1);
soundPool.play(explosion, 0.99f, 0.99f, 1, 0, 0.99f);
Run Code Online (Sandbox Code Playgroud)

  • 同样重要的是要确保“explosion_1”旋律已经加载了 setOnLoadCompleteListener 否则将没有声音。因为加载不是即时的。 (4认同)