Теперь он воспроизводится при первом нажатии, останавливается при втором нажатии или нажатии другой звуковой кнопки. Если я позволяю звуку играть, я могу перезапустить его или воспроизвести другой звук одним нажатием.
Моя цель - это второе нажатие одной и той же кнопки, чтобы остановить ее, но нажатие новой кнопки позволяет просто начать новый звук, вместо того, чтобы сначала нажать новую кнопку, останавливая старый звук, а второй - начать новый звук.
Я могу понять, почему он делает то, что он делает сейчас, но не уверен, как заставить его работать так, как я хочу.
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();
}
}
Этот блок кода:
if (mp!=null){
mp.reset();
mp.release();
}
никогда не будет выполнен. mp
может быть только null
в этой точке, как и в блоке else
теста if (mp != null)
. Это говорит о том, что есть недостаток в вашем мышлении относительно использования этого метода.
Если звук воспроизводился, и вы нажмете кнопку, то этот код выполнит:
mp.release();
mp = null;
Поскольку mp
не был null
, блок else
не выполняется и не воспроизводится новый звук. Когда вторая кнопка нажата, mp
теперь null
и блок else
запускается, создавая новый MediaPlayer
и воспроизводя звук.