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

时间:2016-09-07 00:50:14

标签: android android-mediaplayer

我正在尝试返回媒体播放器的当前状态,因为我想检查媒体播放器是否还没有加载歌曲,所以我可以提供弹出窗口来选择音频文件。

其他课程中的代码

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


        });

2 个答案:

答案 0 :(得分:1)

也许以下内容可能有所帮助...

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放入服务类。

答案 1 :(得分:0)

我担心没有这样的方法。你必须自己检查一下。使用MediaPlayer's StateDiagramSetContentView州并不太难。最简单的方法是声明$("#staticContainer").on("submit","#formId",function(){ });标记MeidaManager,并在OnPreparedListener的boolean回调中将其设置为isPrepared / isReadyToPlay