单击两次按钮时如何停止Mediaplayer两次播放音频文件

时间:2018-12-25 19:06:37

标签: java android android-studio

我有一个按钮,单击可播放音频文件。但是问题在于,当两次单击按钮时,文件会播放两次。

Play.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Playing", Toast.LENGTH_SHORT).show();
            String audioUrl = "https://eplayer.000webhostapp.com/Sleep Away.mp3";
            //set up MediaPlayer
            mp=new MediaPlayer();
            try {
                mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mp.setDataSource(audioUrl);
                mp.prepare();
                mp.start();
            }catch(Exception e){e.printStackTrace();}

        }
    });

3 个答案:

答案 0 :(得分:0)

if(mp.isPlaying())可能正是您想要的,只是在尝试重新启动媒体播放器之前先检查它是否正在播放。虽然您可能还希望检查并确保其不为null,但如果是则仅创建一个新的。当前,每次按下按钮时都会重新创建它。

答案 1 :(得分:0)

根据本文档,http://developer.android.com/reference/android/media/MediaPlayer.html您应尝试以下操作:

         Button stop= (Button)this.findViewById(R.id.button2);
        final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);
        stop.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {

                // If the music is playing
                if(mp2.isPlaying())
                    // Pause the music player
                    mp2.pause();
                // If it's not playing
                else
                    // Resume the music player
                    mp2.start();
            }
          });

注意:变量名称可能不同。

答案 2 :(得分:0)

移动此行:

mp=new MediaPlayer();

在侦听器之前,因为每次单击按钮时,都会创建一个新的MediaPlayer对象。
在try块的开头,添加以下代码:

if (mp.isPlaying()) {
    mp.stop();
    mp.reset();
    mp.release();
}

因此MediaPlayer停止并可以重新启动了。