以下代码用于处理名为clash的按钮的ACTION_DOWN和ACTION_UP事件。我们的想法是if if / else确定onTouch事件是由冲突引起的,然后switch语句根据操作确定要执行的操作。我不知道问题是switch语句没有返回true并且可能与问题有关。当我添加一个返回时,eclipse说代码是无法访问的,我不明白。我的印象是你不能在没有休息的情况下突破开关。
实际发生的是第一个声音会循环,但是当按钮被释放时代码似乎永远不会检测到动作,因此声音会永远播放。任何帮助将不胜感激。
public boolean onTouch(View v, MotionEvent event) {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
if (v.getId() == R.id.clash){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mp.setLooping(true);
mp.start();
break;
case MotionEvent.ACTION_UP:
mp.pause();
break;
}
}
return true;
}
});
答案 0 :(得分:3)
//Add the following line in the code before your setOnTouchListener()
MediaPlayer mp;
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.clash){
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
mp.setLooping(true);
mp.start();
break;
case MotionEvent.ACTION_UP:
if(mp != null)
{
mp.pause();
mp.release();
}
break;
}
}
}
// I'm assuming this was from the onTouchListener()? -> });
只是一个想法。