Android Soundpool Issue

Недавно я работал над игрой для Android, но столкнулся с проблемой при добавлении музыки и других звуков. Я читал, что медиаплееры оптимально подходят для фоновой музыки, которая хорошо работает, и я читал, что Soundpool оптимально подходит для коротких музыкальных клипов, таких как звуковые эффекты. Тем не менее, я не могу заставить работать Soundpool, похоже, что Soundpool даже не загружается.

Я провел больше исследований и нашел множество кошмарных историй об отсутствии поддержки Soundpool, так что я должен просто использовать медиаплеер для всего аудио? Это эффективно?

//My Code
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);

    soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int mySoundId, int status) {
            loaded = true;
        }
    });

    if(loaded==true){
     soundId = soundPool.load(this, R.raw.sound1, 1);
     soundPool.play(soundId, 1, 1, 1, 0, 1f);}
    else{
         System.exit(0);
     }
            //Forces the program to exit everytime

1 ответ

SoundPool#load метод асинхронный, вы должны воспроизводить звук после onLoadComplete был вызван

soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);

soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
    @Override
    public void onLoadComplete(SoundPool soundPool, int mySoundId, int status) {        
        soundPool.play(mySoundId, 1, 1, 1, 0, 1f);
    }
});

soundPool.load(this, R.raw.sound1, 1);
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);

soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
    @Override
    public void onLoadComplete(SoundPool soundPool, int mySoundId, int status) {
        loaded = true;
        soundId = soundPool.load(this, R.raw.sound1, 1);
        soundPool.play(soundId, 1, 1, 1, 0, 1f);
    }
});

потому что ваша загруженная переменная всегда будет ложной, вы должны делать вещи внутри onLoadComplete.

Другие вопросы по тегам