Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 播放歌曲时MediaController播放按钮未更新_Android_Android Mediaplayer - Fatal编程技术网

Android 播放歌曲时MediaController播放按钮未更新

Android 播放歌曲时MediaController播放按钮未更新,android,android-mediaplayer,Android,Android Mediaplayer,我正在尝试使用mediacontroller播放音频。我可以让音频正常工作,但当歌曲开始播放时,我的mediacontroller上的播放按钮不会更新。如果按下mediacontroller上的播放按钮,它将暂停歌曲并查找进度条。然后,如果我按暂停,它会再次播放歌曲。我打电话来 mp.start() 这不会更新播放按钮。当我调用start时,如何使按钮变为暂停按钮 public class QuickMusicPlayer implements MediaController.MediaPl

我正在尝试使用mediacontroller播放音频。我可以让音频正常工作,但当歌曲开始播放时,我的mediacontroller上的播放按钮不会更新。如果按下mediacontroller上的播放按钮,它将暂停歌曲并查找进度条。然后,如果我按暂停,它会再次播放歌曲。我打电话来

mp.start() 
这不会更新播放按钮。当我调用start时,如何使按钮变为暂停按钮

public class QuickMusicPlayer implements MediaController.MediaPlayerControl {

private final MediaPlayer mMediaPlayer;
private final MediaController mMediaController;
private Activity mActivity;

public QuickMusicPlayer(View anchorView, Activity activity) {
    mActivity = activity;
    mMediaPlayer = new MediaPlayer();
    mMediaController = new MediaController(activity);
    mMediaController.setMediaPlayer(this);
    mMediaController.setAnchorView(anchorView);
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });
}

public void setUrl(String url) {
    mMediaPlayer.reset();
    if (TextUtils.isEmpty(url)) {
        ViewUtil.showCroutonAlert(mActivity, R.string.cant_play_music);
    } else {
        try {

            mMediaPlayer.setDataSource(url);
            mMediaPlayer.prepareAsync();
            mMediaController.setEnabled(true);
            mMediaController.show(0);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

@Override
public void start() {
    mMediaPlayer.start();
}

@Override
public void pause() {
    mMediaPlayer.pause();
}

@Override
public int getDuration() {
    return mMediaPlayer.getDuration();
}

@Override
public int getCurrentPosition() {
    return mMediaPlayer.getCurrentPosition();
}

@Override
public void seekTo(int pos) {
    mMediaPlayer.seekTo(pos);
}

@Override
public boolean isPlaying() {
    return mMediaPlayer.isPlaying();
}

@Override
public int getBufferPercentage() {
    return 0;
}

@Override
public boolean canPause() {
    return true;
}

@Override
public boolean canSeekBackward() {
    return true;
}

@Override
public boolean canSeekForward() {
    return true;
}

@Override
public int getAudioSessionId() {
    return 0;
}

}

把它弄明白了。我需要在开始更新按钮后再次调用show

mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
        mMediaController.show(0);
    }
});