为什么 MediaPlayer.getCurrentPoition() 总是 return 与 Android 中的值相同?

Why MediaPlayer.getCurrentPoition() always return the same value in Android?

我正在使用音乐流媒体应用程序。从 Spotify 获取歌曲后,我使用 MediaPlayer 来处理控件。

这是我正在处理的部分代码:

public class LocalPlayerController implements MediaPlayer.OnCompletionListener, SeekBar.OnSeekBarChangeListener {

//...
    private LocalPlayerController(){
        if(player==null) player = new MediaPlayer();
    }

    //...

    public void play(String path,int songIndex){
        if(player!=null) player.stop();
        player = new MediaPlayer();
        player.setOnCompletionListener(this);
        currentSongIndex = songIndex;
        try {
            player.reset();
            player.setDataSource(path);

            player.prepare();
            player.start();

        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //...

    @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if (fromUser){
            player.seekTo(player.getCurrentPosition()+progress*1000);
        }
    }

//...
}

到目前为止,它可以很好地再现我扔给它的音乐,但是当我调用 MediaPlayer.getCurrentPosition() 时,它每次都 returns 相同的值,我认为它应该随着自音乐开始播放以来的时间。我需要那个变化的值才能调用 MediaPlayer.seekTo().

发生了什么事?为什么进度不更新?

已解决。

我在 onPreparedListener 实现中调用 player.start() 而不是显式调用它