Android 如何通过onTouch播放声音,并在出现故障时停止播放

Android 如何通过onTouch播放声音,并在出现故障时停止播放,android,ontouchlistener,Android,Ontouchlistener,当我触摸图像时,媒体播放器会启动,但当从图像中删除fingure时,媒体播放不会停止。请帮帮我 iv.setOnTouchListener(本); mp1=MediaPlayer.create(getApplicationContext(),R.raw.air) 这将在您触摸ImageView时检查媒体播放器是否正在播放,如果正在播放,将停止播放,如果未播放,将启动播放。这样您就不需要使用开关箱了 在此之前,请务必设置媒体播放器。您应该只能够调用mp1.stop(),这不起作用吗?试试mp1.s

当我触摸图像时,媒体播放器会启动,但当从图像中删除fingure时,媒体播放不会停止。请帮帮我

iv.setOnTouchListener(本); mp1=MediaPlayer.create(getApplicationContext(),R.raw.air)

这将在您触摸ImageView时检查媒体播放器是否正在播放,如果正在播放,将停止播放,如果未播放,将启动播放。这样您就不需要使用开关箱了


在此之前,请务必设置媒体播放器。

您应该只能够调用mp1.stop(),这不起作用吗?试试mp1.stop();mp1.释放();mp1=null;当我举起手指的时候,它不会停止。但有时它会停止。双击时出现错误。尝试使用.isplaying方法检查它是否正在播放,是否正在停止。我在支票上加一个答案。
@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub

        switch (event.getAction()) 
        {
        case MotionEvent.ACTION_DOWN:

            mp1 = MediaPlayer.create(getApplicationContext(), R.raw.airhorn_1);
            mp1.start();
            mp1.setLooping(true);
            mp1.setOnCompletionListener(new OnCompletionListener() {

                public void onCompletion(MediaPlayer mp1) {
                    // TODO Auto-generated method stub
                    mp1.release();
                }
            });

            Log.i("Action", "Down");
            break;

        case MotionEvent.ACTION_MOVE:
            Log.i("Action", "Move");


            Log.i("On Long", "On Long");

            break;

        case MotionEvent.ACTION_CANCEL:

            mp1.pause();

            Log.i("Action", "Cancel");
            break;

        case MotionEvent.ACTION_UP:

            mp1.pause();
            //mp1.stop();
            Log.i("Action", "up");
            break;

        default:
            break;
        }
        return true;
    }
public void onTouch(View v) {
            if (mp.isPlaying()) {
                mp.stop();
            } else {
                mp.start();
            }