如何再次播放/停止媒体播放器?

时间:2012-08-05 16:24:53

标签: android media-player android-mediaplayer

当我第一次点击播放音乐时,我正在使用带有2个动作PLAY和STOP的“音乐”按钮,然后当我再次点击时它停止了。但是,当我第二次单击时,所有操作PLAY / STOP都不起作用。

   public class Home extends Activity {
      boolean isMediaOn=false; 
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


      final ImageButton music=(ImageButton)findViewById(R.id.music);
      final MediaPlayer sound=MediaPlayer.create(Accueil.this,R.raw.star);      

      music.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 

                        //  play
              if(isMediaOn==false) 
              { 

              System.out.println("PLAY");

              sound.start();

              music.setImageResource(R.drawable.music);

              isMediaOn=true; 
              } 
                       // stop 
              else 
              { 

                System.out.println("STOP");
                if(sound.isPlaying()){
                    sound.reset();
                    sound.stop();

                }

              music.setImageResource(R.drawable.no_music);

              isMediaOn=false; 
              } 

      } 
      });

以下是我的logcat的截图: enter image description here

4 个答案:

答案 0 :(得分:0)

当玩家处于州stop()STARTEDPREPAREDPAUSED时,您才可以拨打PLAYBACK_COMPLETE。您的reset()来电正在将其重新置于IDLE状态,导致stop()失败。

答案 1 :(得分:0)

您可能希望使用pause(),如sound.pause();

pause()方法暂停播放并保持所有其他播放器状态(例如正在播放的文件,文件中的位置等)。

答案 2 :(得分:0)

http://developer.android.com/reference/android/media/MediaPlayer.html#stop中明确指出 '一旦进入Stopped状态,在调用prepare()或prepareAsync()将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。'

public class Home extends Activity {
  boolean isMediaOn=false; 
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);


  final ImageButton music=(ImageButton)findViewById(R.id.music);
  final MediaPlayer sound=MediaPlayer.create(Accueil.this,R.raw.star);      

  music.setOnClickListener(new OnClickListener() { 
  public void onClick(View v) { 

                    //  play
          if(isMediaOn==false) 
          { 

            System.out.println("PLAY");
            try {
               sound.prepare();
            } catch (Exception e) {
            Log.d(Settings.debug, e.toString());
          }
          sound.start();

          music.setImageResource(R.drawable.music);

          isMediaOn=true; 
          } 
                   // stop 
          else 
          { 

            System.out.println("STOP");
            if(sound.isPlaying()){
                sound.reset();
                sound.stop();

            }

          music.setImageResource(R.drawable.no_music);

          isMediaOn=false; 
          } 

  } 
  });

答案 3 :(得分:-1)

试试这个,希望这可以帮助你。

   final ImageButton music=(ImageButton)findViewById(R.id.music);
   final MediaPlayer sound=MediaPlayer.create(Accueil.this,R.raw.star);
   music.setOnClickListener(new OnClickListener() { 

   public void onClick(View v) { 
       if(sound.isPlaying()){
          sound.stop();
          music.setImageResource(R.drawable.no_music);

       } else {
         sound.start();
         music.setImageResource(R.drawable.music);

       }
  });