为什么MediaPlayer.getCurrentPoition()总是在Android中返回相同的值?

时间:2016-08-26 14:49:31

标签: android media

我正在使用音乐流媒体应用。从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()时,它每次都返回相同的值,我认为它应该随着自音乐以来的时间而更新开始玩了。我需要更改值才能调用MediaPlayer.seekTo()。

发生了什么?为什么进步不会更新?

1 个答案:

答案 0 :(得分:0)

解决。

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