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.