public class AndroidSound implements Sound {
int soundId;
SoundPool soundPool;
public AndroidSound(SoundPool soundPool, int soundId) {
this.soundId = soundId;
this.soundPool = soundPool;
}
@Override
public void play(float volume) {
soundPool.play(soundId, volume, volume, 0, 0, 1);
}
@Override
public void dispose() {
soundPool.unload(soundId);
}}
public class Assets{
public Music theme;
public static Sound sound;
public static void load(Game game) {
theme = game.getAudio().createMusic("theme.mp3");
theme.setLooping(true);
theme.setVolume(0.85f);
theme.play();
sound = game.getAudio().createSound("death.wav");
}
}
Затем я воспроизвожу этот звук в разных классах, вызывая игру() на нем, но он играет с действительно огромной задержкой, что-то около 500 мс. Почему это? Я попытался найти решение, но есть много людей с этой проблемой, и я не нашел ответа, который действительно сработал. Большинство тем было немного старым, возможно, для этого уже есть простое решение, рассчитывающее на вашу помощь.Задержка звука Android при использовании SoundPool
public class AndroidAudio implements Audio {
AssetManager assets;
SoundPool soundPool;
public AndroidAudio(Activity activity) {
activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
this.assets = activity.getAssets();
this.soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
}
@Override
public Sound createSound(String filename) {
try {
AssetFileDescriptor assetDescriptor = assets.openFd(filename);
int soundId = soundPool.load(assetDescriptor, 0);
return new AndroidSound(soundPool, soundId);
} catch (IOException e) {
throw new RuntimeException("Couldn't load sound '" + filename + "'");
}
}
}
как вы создаете 'AndroidSound' экземпляра объекта? – pskink
Почему он играет с задержкой? Я так расстроен этим, не могу найти никаких хороших решений. Должен ли я использовать что-то другое, кроме SoundPool? Или есть ли вероятность, что это мои устройства? (У меня нет возможности проверить какой-либо другой) – Shadov
, поэтому вы вызываете 'play' внутри' onLoadComplete (SoundPool soundPool, int sampleId, int status) 'метод и после того, как вы вызываете' play', вы замечаете задержку в полсекунды? – pskink