Question

with this code I want to stop all the sounds that are being executed, and play only the button clicked, but calling the release, the sound becomes null and you can not run the sound again. but if you do not call release give me problem anyway. how can I find a solution to this conundrum?

Code:

public MediaPlayer mediaPlayer = null;
    public Boolean playing = false;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

Button b1 = (Button)findViewById(R.id.b1);
b1.setOnClickListener(new Button.OnClickListener() { 

               public void onClick(View v){



                   if(mediaPlayer != null && mediaPlayer.isPlaying()) mediaPlayer.stop();









                   mediaPlayer = MediaPlayer.create(menu.this, R.raw.b1);
                   mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            // TODO Auto-generated method stub

                            mediaPlayer.start();

                            mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                                public void onCompletion(MediaPlayer mediaPlayer) {
                                    mediaPlayer.release();
                                    playing=true;
                                };
                            });

                                }
                            });


Button b2 = (Button)findViewById(R.id.b2);
    b2.setOnClickListener(new Button.OnClickListener() { 

               public void onClick(View v){


                   if(mediaPlayer != null && mediaPlayer.isPlaying()) mediaPlayer.stop();

                   mediaPlayer = MediaPlayer.create(getBaseContext(),R.raw.b2);
                   mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            // TODO Auto-generated method stub

                            mediaPlayer.start();

                            mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                                public void onCompletion(MediaPlayer mediaPlayer) {
                                    mediaPlayer.release();

                                };
                            });
                                }
                            });

               }});
Was it helpful?

Solution

I solved by this:

b1.setOnClickListener(new Button.OnClickListener() { 

               public void onClick(View v){



                   if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
                       mediaPlayer.stop();
                       mediaPlayer.release();
                     }









                   mediaPlayer = MediaPlayer.create(menu.this, R.raw.b1);
                   mediaPlayer.start();

                }});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top