Android: Mediaplayer остановить / начать играть сырой ресурс - PullRequest
1 голос
/ 27 января 2011

Теперь он воспроизводится при первом нажатии, останавливается при втором нажатии или нажатии другой звуковой кнопки. Если я позволю воспроизвести звук, я могу перезапустить его или воспроизвести другой звук одним нажатием.

Моя цель - второе нажатие той же кнопки, чтобы остановить его, но нажатие новой кнопки, чтобы просто запустить новый звук вместо первого нажатия новой кнопки, останавливающей старый звук, второе нажатие, начиная новый звук.

Я понимаю, почему он делает то, что делает сейчас, но не уверен, как заставить его работать так, как я хочу.

public void playSound(int input){
    if (mp!=null && mp.isPlaying()) {
         mp.stop();
         mp.reset();
    } else{
         if (mp!=null){
             mp.reset();
             mp.release();
         }
         mp = MediaPlayer.create(Soundboard.this, input);
         mp.start();
    }
}

1 Ответ

3 голосов
/ 27 января 2011

Этот блок кода:

if (mp!=null){
    mp.reset();
    mp.release();
}

никогда не будет выполнен.mp может быть только null на данный момент, как это происходит в блоке else теста if (mp != null).Это говорит о том, что в вашем мышлении есть изъян относительно использования этого метода.

Если звук воспроизводится и вы нажимаете кнопку, то этот код будет выполняться:

mp.release();
mp = null;

Поскольку mp не был null, блок else не выполняется и новый звук не воспроизводится.Когда кнопка нажата второй раз, mp теперь null, и блок else выполняется, создавая новый MediaPlayer и воспроизводя звук.

...