Как воспроизвести звуковой эффект в 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();
}