Вы также можете добиться того же, используя SoundPool
.
MediaPlayer
сначала загружает все данные звука в память, а затем воспроизводит их, поэтому при частом переключении между звуками возникает некоторая задержка.
SoundPool
- лучший вариант со звуковым файлом небольшого размера и дает лучший результат с .ogg
медиа-файлом.
SoundPool pl = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
// 5 indicates the maximum number of simultaneous streams for this SoundPool object
pl.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
// The onLoadComplet method is called when a sound has completed loading.
soundPool.play(sampleId, 1f, 1f, 0, 0, 1);
// second and third parameters indicates left and right value (range = 0.0 to 1.0)
}
});
Button btn = findViewById(R.id.boton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int sound = pl.load(this, R.raw.sound_01, 0);
}
});