Android: Mediaplayer остановить / начать играть сырой ресурс

1

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

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

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

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();
    }
}
  • 0
    Отредактируйте это. Он будет воспроизводить звук до конца, а затем еще несколько секунд после окончания, прежде чем кнопка снова заработает. Пожалуйста помоги. Благодарю.
  • 0
    Большое спасибо за ответ. Я получил его функционировать иначе, как описано выше, но мне не хватает моей цели. Если бы вы могли пролить больше света на это, я был бы признателен. Спасибо
Теги:
media-player
playback

1 ответ

3

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

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

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

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

mp.release();
mp = null;

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню