我不知道坠机的原因。
package com.tct.soundTouch;
//imports ();;;;;;;
public class Main extends Activity implements OnClickListener{
private MediaPlayer mp;
private MotionEvent event;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
final ImageButton zero = (ImageButton) this.findViewById(R.id.button);
zero.setOnClickListener(this);
mp = MediaPlayer.create(this, R.raw.sound);
}
public void onClick(View v) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mp.setLooping(true);
mp.start();
break;
case MotionEvent.ACTION_UP:
mp.pause();
break;
}
}
}
日志
感谢
答案 0 :(得分:2)
我认为问题出在switch (event.getAction()) {
行。你在哪里初始化事件?我认为这会导致NullPointerException。
顺便说一下......你不应该把你的班级命名为主。至少使用Main。
答案 1 :(得分:1)
我没有看到event
在您发布的代码中设置为非空值。不幸的是,通过OnClickListener
收到的点击事件没有“向上”或“向下”。
如果您正在寻找类似切换的效果,可以使用MediaPlayer#isPlaying()
:
public void onClick(View v) {
if (mp.isPlaying()) {
mp.pause();
} else {
mp.setLooping(true);
mp.start();
}
}
如果您需要处理MotionEvent.UP
和MotionEvent.DOWN
,那么您应该实施View.OnTouchListener:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mp.setLooping(true);
mp.start();
return true;
case MotionEvent.ACTION_UP:
mp.pause();
return true;
}
return false;
}
然后使用setOnTouchListener
:
zero.setOnTouchListener(this);