Вы никогда не звоните stop()
, конечно, он продолжит играть.Ваш цикл while вызывает start()
несколько раз, вы не должны этого делать.Думайте об этом как о любом другом медиаплеере - вы не нажимаете кнопку «Воспроизведение», чтобы прослушать весь трек, он продолжается до тех пор, пока вы не скажете иначе.
Вместо этого попробуйте что-то вроде этого:
public boolean onTouch(View v, MotionEvent me) {
switch(me.getAction()) {
case MotionEvent.ACTION_DOWN:
if(!mpButton.isPlaying()) mpButton.start();
break;
case MotionEvent.ACTION_UP:
if(mpButton.isPlaying()) mpButton.stop();
break;
}
}
РЕДАКТИРОВАТЬ: В дополнение, имя MediaPlayer mpButton
просто требует путаницы в будущем;просто говорю'.;)