按住按钮时如何播放音频?

时间:2016-12-20 22:17:36

标签: java android

我正在尝试制作一个简单的应用程序:中间有一个按钮,孩子会按下。只要按下该按钮,它就会播放某个MP3。

目前,我尝试使用ionic serve,但只有在释放按钮时才会播放。

5 个答案:

答案 0 :(得分:3)

您不需要使用只显示按下和释放界面的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;
    }
});

答案 1 :(得分:0)

尝试这样的事情。使用布尔"播放"你可以在别处创建一个线程/循环来检查是否仍在播放并保持音频。

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;
    }
});

答案 2 :(得分:0)

尝试使用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
            }
        }
    });

答案 3 :(得分:0)

由于按钮是视图组件,因此可以使用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;
    }
}); 

答案 4 :(得分:0)

这是我的代码:

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();
    }
}