Search code examples
androidservice

How to Create Multiple MediaPlayer Buttons with one stop button


I created a MediaPlayer with 21 play buttons and a stop button to control all. I also set loop to continous playback. When a user press a play button and later another play button. The mediaplayer refuse to stop. Please rescue me. Thanks! again in anticipation for your help

The below is what I have done that didn't work

This is the PopUpMenuWindow.class

public class PopUpMenuWindowActivity extends AppCompatActivity implements View.OnClickListener {

    ImageButton StopButton;

    private static MediaPlayer mp;
    private Intent mediaServiceIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pop_up_menu_window);

        final DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

        int width = displayMetrics.widthPixels;
        int hight = displayMetrics.heightPixels;

        getWindow().setLayout((int)(width*.9), (int)(hight*.8));

        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.gravity = Gravity.CENTER;
        params.x = 0;
        params.y = -20;

        getWindow().setAttributes(params);

        // Dismiss popUpMenu Window
        ImageButton backButton = (ImageButton) findViewById(R.id.back_arrow);
        backButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });


        //Get button views IDs
        //Get button views IDs
        StopButton = (ImageButton) findViewById(R.id.stop);

        findViewById(R.id.play_1).setOnClickListener(this);
        findViewById(R.id.play_2).setOnClickListener(this);
        findViewById(R.id.play_3).setOnClickListener(this);
        findViewById(R.id.play_4).setOnClickListener(this);
        findViewById(R.id.play_5).setOnClickListener(this);

        findViewById(R.id.play_1a).setOnClickListener(this);
        findViewById(R.id.play_2a).setOnClickListener(this);
        findViewById(R.id.play_3a).setOnClickListener(this);
        findViewById(R.id.play_4a).setOnClickListener(this);
        findViewById(R.id.play_5a).setOnClickListener(this);

        findViewById(R.id.play_1b).setOnClickListener(this);
        findViewById(R.id.play_2b).setOnClickListener(this);
        findViewById(R.id.play_3b).setOnClickListener(this);
        findViewById(R.id.play_4b).setOnClickListener(this);
        findViewById(R.id.play_5b).setOnClickListener(this);
        findViewById(R.id.play_6b).setOnClickListener(this);

        findViewById(R.id.play_1c).setOnClickListener(this);
        findViewById(R.id.play_2c).setOnClickListener(this);
        findViewById(R.id.play_3c).setOnClickListener(this);
        findViewById(R.id.play_4c).setOnClickListener(this);
        findViewById(R.id.play_5c).setOnClickListener(this);
        findViewById(R.id.play_6c).setOnClickListener(this);

        findViewById(R.id.play_1d).setOnClickListener(this);
        findViewById(R.id.play_2d).setOnClickListener(this);
        findViewById(R.id.play_3d).setOnClickListener(this);
        findViewById(R.id.play_4d).setOnClickListener(this);


        mediaServiceIntent = new Intent(getApplicationContext(), MediaplayerService.class);


    }



    @Override
    public void onClick(View view) {
        switch (view.getId()){

            // First row MediaPlayer buttons
            case R.id.play_1:
                startService(new Intent(getApplicationContext(), MediaplayerService.class));
                finish();
                break;

            case R.id.play_2:
                mp = MediaPlayer.create(this, R.raw.track2);
                finish();
                break;

            case R.id.play_3:
                mp = MediaPlayer.create(this, R.raw.track3);
                finish();
                break;

            case R.id.play_4:
                mp = MediaPlayer.create(this, R.raw.track4);
                finish();
                break;

            case R.id.play_5:
                mp = MediaPlayer.create(this, R.raw.track5);
                finish();
                break;

            // Second row MediaPlayer buttons
            case R.id.play_1a:
                mp = MediaPlayer.create(this, R.raw.track6);
                finish();
                break;

            case R.id.play_2a:
                mp = MediaPlayer.create(this, R.raw.track7);
                finish();
                break;

            case R.id.play_3a:
                mp = MediaPlayer.create(this, R.raw.track8);
                finish();
                break;

            case R.id.play_4a:
                mp = MediaPlayer.create(this, R.raw.bell2);
                finish();
                break;

            case R.id.play_5a:
                mp = MediaPlayer.create(this, R.raw.track9);
                finish();
                break;

            // Third row MediaPlayer buttons
            case R.id.play_1b:
                mp = MediaPlayer.create(this, R.raw.track10);
                finish();
                break;

            case R.id.play_2b:
                mp = MediaPlayer.create(this, R.raw.track11);
                finish();
                break;

            case R.id.play_3b:
                mp = MediaPlayer.create(this, R.raw.track12);
                finish();
                break;

            case R.id.play_4b:
                mp = MediaPlayer.create(this, R.raw.track13);
                finish();
                break;

            case R.id.play_5b:
                mp = MediaPlayer.create(this, R.raw.track14);
                finish();
                break;

            case R.id.play_6b:
                mp = MediaPlayer.create(this, R.raw.track15);
                finish();
                break;



            // Fourth row MediaPlayer buttons
            case R.id.play_1c:
                mp = MediaPlayer.create(this, R.raw.track16);
                finish();finish();
                break;

            case R.id.play_2c:
                mp = MediaPlayer.create(this, R.raw.track17);
                finish();
                break;

            case R.id.play_3c:
                mp = MediaPlayer.create(this, R.raw.track18);
                finish();
                break;

            case R.id.play_4c:
                mp = MediaPlayer.create(this, R.raw.track19);
                finish();
                break;

            case R.id.play_5c:
                mp = MediaPlayer.create(this, R.raw.track20);
                finish();
                break;

            case R.id.play_6c:
                mp = MediaPlayer.create(this, R.raw.track21);
                finish();
                break;


            // Fifth row MediaPlayer buttons
            case R.id.play_1d:
                mp = MediaPlayer.create(this, R.raw.track22);
       
                finish();
                break;

                case R.id.play_2d:
                mp = MediaPlayer.create(this, R.raw.track23);
                   
                finish();
                break;

            case R.id.play_3d:
                mp = MediaPlayer.create(this, R.raw.track24);
                finish();
                break;

            case R.id.play_4d:
                mp = MediaPlayer.create(this, R.raw.track25);
                finish();
                break;


            default:
                return;
        }

        mp.start();
        mp.setLooping(true);
}

public void stop(View v) {
    startService(new Intent(getApplicationContext(), MediaplayerService.class));

}

}


Solution

  • onClick on each button you have to check each of the player just like that it will pause the other player and play the audio of the clicked button

    if (player09==null){
            player09=MediaPlayer.create (this,R.raw.twentytwo);
            player09.setOnCompletionListener (new MediaPlayer.OnCompletionListener () {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    player09.pause ();
                }
            });
        }
        if(player02 != null)
            player02.pause();
        if(player03 != null)
            player03.pause();
        if(player04 != null)
            player04.pause();
        if(player05 != null)
            player05.pause();
        if(player06 != null)
            player06.pause();
        if(player07 != null)
            player07.pause();
        if(player08 != null)
            player08.pause();
        if(player01 != null)
            player01.pause();
        player09.start ();
        player09.setLooping (true);
    

    and then onStop button you have to check like that

    if(this.player01!=null){
            player01.pause ();
            //Toast.makeText (this,"8kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player02!=null){
            player02.pause ();
            //Toast.makeText (this,"10kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player03!=null){
            player03.pause ();
            //Toast.makeText (this,"12kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player04!=null){
            player04.pause ();
            //Toast.makeText (this,"14kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player05!=null){
            player05.pause ();
            //Toast.makeText (this,"16kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player06!=null){
            player06.pause ();
            //Toast.makeText (this,"17kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player07!=null){
            player07.pause ();
            //Toast.makeText (this,"20kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player08!=null) {
            player08.pause ();
            //Toast.makeText (this,"21kHz Stop",Toast.LENGTH_SHORT).show ();
        }
        if (this.player09!=null){
            player09.pause ();
            //Toast.makeText (this,"24kHz Stop", Toast.LENGTH_SHORT).show ();
        }
    

    you can stop the player or pause that may help you with single button click to stop the audio