我正在使用音乐流媒体应用。从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()。
发生了什么?为什么进步不会更新?
答案 0 :(得分:0)
解决。
我在onPreparedListener实现中调用了player.start()而不是显式调用它