在使用MediaPlayer的getCurrentPosition()方法时,需要注意MediaPlayer是否已经准备好播放媒体文件。如果MediaPlayer还没有准备好,调用getCurrentPosition()方法返回0是正常的。因此,需要添加检查MediaPlayer准备状态的代码,如下所示:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("media_file_path");
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// 当MediaPlayer准备好时,获取当前播放位置。
int currentPosition = mediaPlayer.getCurrentPosition();
}
});
mediaPlayer.prepareAsync(); // 异步准备MediaPlayer
在上述代码中,通过调用MediaPlayer的prepareAsync()方法来异步准备MediaPlayer,当MediaPlayer准备好后,调用OnPreparedListener中的回调方法onPrepared()来获取当前播放位置。这样就可以避免在MediaPlayer还没有准备好的时候调用getCurrentPosition()方法返回0的问题。