【问题标题】:Android Media Player play/pause ButtonAndroid 媒体播放器播放/暂停按钮
【发布时间】:2023-03-19 21:50:01
【问题描述】:

在我的项目中,我正在使用以下代码在 android 媒体播放器中播放音乐文件

MediaPlayer mPlayer = MediaPlayer.create(MyActivity.this, R.raw.myfile);
mPlayer.start();

上面的代码是在播放按钮的 onclick 中编码的。 我想通过再次单击相同的按钮来暂停播放。即)单个按钮用于播放/暂停。 我该怎么做。

【问题讨论】:

    标签: android media-player


    【解决方案1】:

    您可以使用简单的 if-check 来处理暂停。试试这个:

    if(mPlayer.isPlaying()){
        mPlayer.pause();
    } else {
        mPlayer.start();
    }
    

    【讨论】:

      【解决方案2】:

      请试试这个::

      final Button bPlay = (Button) findViewById(R.id.bPlay);
      MediaPlayer song1 = MediaPlayer.create(tutorialFour.this, R.raw.fluet);
      Button bStop = (Button) findViewById(R.id.bStop);
      bPlay.setWidth(10);
      
      song1.setOnCompletionListener(new OnCompletionListener() {
      
              public void onCompletion(MediaPlayer mp) {
      
                  bPlay.setText("Play");
      
      
              }
          });
      
      bPlay.setOnClickListener(new View.OnClickListener() {
      
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  b = true;
      
                  if (bPlay.getText().equals("Play") && b == true) {
      
                      song1.start();
      
                      bPlay.setText("Pause");
                      b = false;
                  } else if (bPlay.getText().equals("Pause")) {
                      x = song1.getCurrentPosition();
                      song1.pause();
                      bPlay.setText("Resume");
                      Log.v("log", "" + x);
                      b = false;
                  } else if (bPlay.getText().equals("Resume") && b == true) {
                      song1.seekTo(x);
                      song1.start();
                      bPlay.setText("Pause");
                      b = false;
                  }
      
      
              }
      
          });
      

      【讨论】:

        【解决方案3】:

        在按钮内单击检查mediaPlayer.isPlaying()。如果媒体播放器正在播放,这将返回 true,否则返回 false。

        所以现在有了这个标志值,你可以做一个 if 语句并像这样切换播放或暂停,

        button.setOnClickListener(new View.OnClickListener() {
        
                public void onClick(View view) {
        
                    if (mediaplayer.isPlaying()) {
                        mediaplayer.pause();
                    } else {
                        mediaplayer.start();
                    }
                }
            });
        

        【讨论】:

          【解决方案4】:

          以下代码处理您的播放/暂停按钮单击事件以及用于在提供的搜索栏上向前和向后搜索的向前和向后按钮(与媒体轨道同步)。目前它只播放一首歌曲。但是,您可以添加它。这是我第一个使用mediaplayer class 的媒体播放器,所以你可能会觉得它有点原始。但是,如果您需要,也可以查看 VideoView 示例。 VideoView 显然更容易,因为标准媒体控制台已经以预定义小部件的形式存在。这样可以更轻松地设计播放器。

          package in.org.Test;
          
          import android.app.Activity;
          import android.media.MediaPlayer;
          
          import android.os.Bundle;
          
          import android.view.View;
          import android.view.View.OnClickListener;
          
          import android.widget.ImageButton;
          
          import android.widget.ProgressBar;
          import android.widget.SeekBar;
          
          import android.widget.Toast;
          
          public class Test12Activity extends Activity implements OnClickListener,Runnable {
          
              private static final String isPlaying = "Media is Playing"; 
              private static final String notPlaying = "Media has stopped Playing"; 
          
              private SeekBar seek;
          
              MediaPlayer player = new MediaPlayer();
               private ImageButton plus,minus;
          
              ImageButton im;
          
              /** Called when the activity is first created. */
              @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
          
                  plus = (ImageButton) findViewById(R.id.imageButton2);
                  minus = (ImageButton) findViewById(R.id.imageButton3);
          
          
                  player = MediaPlayer.create(this, R.raw.sound2);
          
          
                  player.setLooping(false); 
                  im = (ImageButton) this.findViewById(R.id.imageButton1);
          
          
                  seek = (SeekBar) findViewById(R.id.seekBar1);
                  seek.setVisibility(ProgressBar.VISIBLE);
                  seek.setProgress(0);
                  seek.setMax(player.getDuration());
                  new Thread(this).start();
          
          
                  im.setOnClickListener(this);
                  player.start(); 
          
                  Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show();
          
          
                  plus.setOnClickListener(new OnClickListener()   {
                      @Override
                      public void onClick(View v) { int cu = player.getCurrentPosition();  player.seekTo(cu-5000); }});
                  minus.setOnClickListener(new OnClickListener()  {
                      @Override
                      public void onClick(View v) {int cu = player.getCurrentPosition();  player.seekTo(cu+5000);}});
          
          
              }
          
          
              @Override
              public void onClick(View arg0) {
                  if (arg0.getId() == R.id.imageButton1) {
                  if(player.isPlaying())  {
                  player.pause();
          
                  Toast.makeText(this, notPlaying, Toast.LENGTH_LONG).show();
                  ImageButton img1=(ImageButton) this.findViewById(R.id.imageButton1);
          
                  img1.setImageResource(R.drawable.play);
          
                   }
                  else
                  {
                      player.start();
                      Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show();
          
                      ImageButton img1=(ImageButton) this.findViewById(R.id.imageButton1);
                      img1.setImageResource(R.drawable.pause);
                  }   
                  }
                }
          
              @Override
              public void run() {
                  int currentPosition= 0; String s;
                  int total = player.getDuration();
                  while (player!=null && currentPosition<total) {
                      try {
                          Thread.sleep(1000);
                          currentPosition= player.getCurrentPosition();
                      } catch (InterruptedException e) {
                          return;
                      } catch (Exception e) {
                          return;
                      }            
          
                      seek.setProgress(currentPosition);
          
          
                  }
          
          
              }
          }
          

          【讨论】:

            【解决方案5】:
             MediaPlayer mpE = MediaPlayer.create(GuitarTuner.this, R.raw.test2 );
            
                play.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        if (mpE.isPlaying()) {
                            mpE.pause();
                            play.setBackgroundResource(R.drawable.play);
                        } else {
            
                            mpE.start();
                            play.setBackgroundResource(R.drawable.pause);
                        }
            
                    }
                });
            

            【讨论】:

              【解决方案6】:

              公共类 MainActivity 扩展 AppCompatActivity {

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

              //歌曲之前保存在 raw 文件夹中。这首歌的名字是mylife(它是一个mp3文件) final MediaPlayer mMediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.mylife);

                  //      Play song
                  Button playButton = (Button) findViewById(R.id.play);
                  playButton.setOnClickListener(new View.OnClickListener() {
                      public void onClick(View view) {
                          mMediaPlayer.start(); // no need to call prepare(); create() does that for you
                      }
                  });
                  //      Pause song
                  Button pauseButton = (Button) findViewById(R.id.pause);
                  pauseButton.setOnClickListener(new View.OnClickListener() {
                      public void onClick(View view) {
                          mMediaPlayer.pause();
                      }
                  });
              
                  //      Stop song - when you stop a song, you can't play it again. First you need to prepare it.
              
                  Button stopButton = (Button) findViewById(R.id.stop);
                  stopButton.setOnClickListener(new View.OnClickListener() {
                      public void onClick(View view) {
                          mMediaPlayer.stop();
                          mMediaPlayer.prepareAsync();
                      }
                  });
              
              }
              

              }

              【讨论】:

              • 请不要只是转储代码...至少解释一下您的答案。并采取tour
              【解决方案7】:

              暂停Mediaplayer

              Mediaplayer.pause();
              length = Mediaplayer.getCurrentPosition();
              

              要从最近停止的位置恢复播放器,请执行以下操作:

              Mediaplayer.seekTo(length);
              Mediaplayer.start();
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多