[英]OnTouchListener() will only execute once while button is pressed and held down
[英]How to play audio only while button is held down?
我正在尝试制作一个简单的应用程序:中间有一个按钮可供孩子按下。 只要按住该按钮,就可以播放特定的MP3。
目前,我尝试使用onClick
,但是,仅在释放按钮时才能播放。
而不是使用的onClickListener
暴露罢了那么界面按下和释放,你就需要使用onTouchListener
-它公开了一个视图的所有触摸事件。
myButton.setOnTouchListener( new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch ( event.getAction() ) {
MotionEvent.ACTION_DOWN:
// start playing
return true;
MotionEvent.ACTION_UP:
// stop playing
return true;
}
return false;
}
});
尝试这样的事情。 使用布尔“播放”,您可以在其他地方创建线程/循环,以检查是否仍在播放并保持音频运行。
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction()==MotionEvent.ACTION_DOWN) {
playing = true;
} else {
playing = false;
}
return true;
}
});
尝试OnFocusChangeListener
Button.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
// code to execute when Button loses focus, i.e. stop music
}
}
});
由于按钮是一个视图组件,您可以使用View.OnTouchListener事件监听ACTION_BUTTON_PRESS&ACTION_BUTTON_RELEASE MotionEvent 。
这是一个例子:
yourButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_BUTTON_PRESS){
// Start Video
return true;
} else if (event.getAction() == MotionEvent.ACTION_BUTTON_RELEASE) {
// End Video
return true;
}
return false;
}
});
这是我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void start_recording(View view){
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.test1);
mediaPlayer.start();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.