如何使用一个停止按钮创建多个 MediaPlayer 按钮

How to Create Multiple MediaPlayer Buttons with one stop button

我创建了一个带有 21 个播放按钮和一个停止按钮来控制所有按钮的 MediaPlayer。我还将循环设置为连续播放。当用户按下播放按钮然后按下另一个播放按钮时。媒体播放器拒绝停止。 请救救我。谢谢!再次期待您的帮助

下面是我做的没用的

这是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));

}

}

点击每个按钮你必须检查每个播放器就像它会暂停另一个播放器并播放点击按钮的音频

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

然后是 onStop 按钮,您必须这样检查

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

您可以停止播放器或暂停,这可能有助于您通过单击按钮停止音频

您可以采用一个媒体播放器数组,在创建数组后添加播放器,然后按索引管理该数组,并在停止按钮上使用循环一个接一个地停止播放器。

ArrayList<Mediaplayer> playerarray=new ArrayList();


//Create player.....

for(int i=0;i<15;i++){

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

playerarray.add(mp)

}


// stop player


for(int i=0;i<15;i++){

if(playerarray[i]!=null){
    playerarray[i].pause;
    playerarray[i].stop;
   }

 }
}