Search code examples
javaandroidontouchlistener

play sound while button is pressed -android


i have this code

package com.tct.soundTouch;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;

public class main extends Activity implements OnTouchListener {

    private MediaPlayer mp;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Button zero = (Button) this.findViewById(R.id.button);
        zero.setOnTouchListener(this);

        mp = MediaPlayer.create(this, R.raw.sound);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:
            mp.setLooping(true);
            mp.start();

        case MotionEvent.ACTION_UP:
            mp.pause();
        }

        return true;
    }

}

and it works but not as i expected. The sound plays but only for each time that i press the button. My idea is. While i press the button the sound plays, when i stop the action (finger out of the button) music pause.

Any idea please?

thanks


Solution

  • This should work (there was something wrong with your switch-cases I think):

    @Override
    public boolean onTouch(View v, MotionEvent event) 
    {   
    
        switch (event.getAction()) 
        {
    
        case MotionEvent.ACTION_DOWN:
        {
            mediaPlayer.setLooping(true);
            mediaPlayer.start();
        }
    
        break;
        case MotionEvent.ACTION_UP:
        {
            mediaPlayer.pause();
        }
        break;
    }
    
    return true;
    }