У меня есть несколько аудиофайлов в папке res/raw. Когда я запускаю следующий код, я предполагал, что будет воспроизводиться только файл "sound1", вместо этого все файлы в папке будут воспроизводиться один за другим, а не только "sound1".
MediaPlayer mp = MediaPlayer.create(this, R.raw.sound1);
try {
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
Что мне не хватает? Спасибо за любую помощь!
Вместо этого используйте SoundPool, если это короткие звуковые клипы... Я столкнулся с множеством проблем, используя Mediaplayer для воспроизведения коротких звуков. Я сохраняю свои звуки в папке с ресурсами вместо res/raw... но вы можете получить те же результаты. Вот какой код.
private int BUZZ = sound_load("sounds/buzz.mp3");
private SoundPool _sounds = new SoundPool(8, AudioManager.STREAM_MUSIC, 0);
private int sound_load(String fname) {
AssetManager am = getAssets();
try {
AssetFileDescriptor fd = am.openFd(fname);
int sid = _sounds.load(fd.getFileDescriptor(), fd.getStartOffset(),
fd.getLength(), 1);
return sid;
} catch (IOException e) {
}
return 0;
}
private void sound_play(int sid) {
_sounds.play(sid, (float) 1.0, (float) 1.0, 0, 0, (float) 1.0);
}
Затем, чтобы воспроизвести звук, я просто назову его следующим образом:
sound_play(BUZZ);
Вы можете попробовать это.
static MediaPlayer mpBackground = new MediaPlayer();
mpBackground = MediaPlayer.create(this, R.raw.music);
mpBackground.start();