Как воспроизвести звуковой эффект в Android
Я хочу сделать очень простой фрагмент кода, который воспроизводит звуковой эффект. Пока у меня есть этот код:
SoundManager snd;
int combo;
private void soundSetup() {
// Create an instance of the sound manger
snd = new SoundManager(getApplicationContext());
// Set volume rocker mode to media volume
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// Load the samples from res/raw
combo = snd.load(R.raw.combo);
}
private void playSound() {
soundSetup();
snd.play(combo);
}
Однако по какой-то причине, когда я использую метод playSound()
, ничего не происходит. Звуковой файл находится в правильном месте.
Ответы
Ответ 1
Существует ли конкретная причина, по которой вы используете SoundManager
? Вместо этого я использовал бы MediaPlayer
, вот ссылка на Android Docs
http://developer.android.com/reference/android/media/MediaPlayer.html
то это так же просто, как
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.combo);
mp.start();
Создайте каталог под названием "raw/" в каталоге "res/". Перетащите файлы wav или mp3 в папку raw/. Играйте в них из любого места, как указано выше.
Ответ 2
Я также попытался использовать верхний ответ, но это привело к появлению NullPointerExceptions из MediaPlayer, когда я пытался много раз воспроизводить звук подряд, поэтому немного расширил код.
FXPlayer - мой глобальный MediaPlayer.
public void playSound(int _id)
{
if(FXPlayer != null)
{
FXPlayer.stop();
FXPlayer.release();
}
FXPlayer = MediaPlayer.create(this, _id);
if(FXPlayer != null)
FXPlayer.start();
}