如何返回媒体播放器的状态



我试图返回媒体播放器的当前状态,因为我想检查媒体播放器尚未加载歌曲,所以我可以提供一个弹出窗口来选择音频文件。

其他类中的代码

public Sound(int buttonID, Activity _activity) {
        super();
        this.activity = _activity;
        button = (Button) activity.findViewById(buttonID);
        mp = new MediaPlayer();
    }

检查音频文件是否加载的代码

sound.button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(//no audio file loaded){
                    Intent intent = new Intent(MainActivity.this, Pop.class);
                    startActivityForResult(intent, PICK_AUDIO_REQUEST);
                }
                else if(sound.mp.isPlaying()) {
                    sound.mp.pause();
                }
                else{
                    sound.mp.seekTo(0);
                    sound.mp.start();
                }
            }

        });

使用答案,这是我想出的代码:

sound.button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sound.mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mediaPlayer) {
                        isPrepared = true;
                    }
                });
                if(!isPrepared){
                    Intent intent = new Intent(MainActivity.this, Pop.class);
                    startActivityForResult(intent, PICK_AUDIO_REQUEST);
                }
                else if(sound.mp.isPlaying()) {
                    sound.mp.pause();
                }
                else{
                    sound.mp.seekTo(0);
                    sound.mp.start();
                }
            }

        });

也许下面的内容能帮到你…

MediaPlayer.setOnBufferingUpdateListener(...);
  public void onBufferingUpdate(MediaPlayer mp, int percent)
  {
    //while MediaPlayer's buffer been update
  }
MediaPlayer.setOnPreparedListener(...);
  public void onPrepared(MediaPlayer mp)
  {
    //while MediaPlayer is ready to play
  }
MediaPlayer.setOnCompletionListener(...);
  public void onCompletion(MediaPlayer mp)
  {
    //while MediaPlayer played to the end
  }
MediaPlayer.setOnErrorListener(...);
  public boolean onError(MediaPlayer mp, int what, int extra)
  {
    //while MediaPlayer has error ocurred
  }

同样,你的类必须实现OnAudioFocusChangeListener,并创建以下方法

public boolean requestAudioFocus()
{}
public boolean abandonAudioFocus()
{}
public void onAudioFocusChange(int focusChange)
{}

你可以考虑把你的MediaPlayer放到Service类中

恐怕没有这样的方法。你必须自己检查。用MediaPlayer的状态图来跟踪MeidaManager状态并不难。最简单的方法是声明boolean标志isPrepared / isReadyToPlay,并在OnPreparedListener的onPrepared()回调中将其设置为true

最新更新