Android MediaPlayer.getCurrentPosition未更新

时间:2012-11-06 09:19:43

标签: android streaming mp3 media-player

我已经使用MediaPlayer类跟踪了Igor Khrupin关于在Android中传输mp3文件的教程:http://www.hrupin.com/2011/02/example-of-streaming-mp3-mediafile-with-android-mediaplayer-class

除了搜索栏的主要进度未正确更新外,这一切都正常。它在开始之后就停止了。在调试时,我可以看到MediaPlayer.getCurrentPosition()方法总是返回261(毫秒),即使mp3歌曲播放正常。

有没有人遇到过这个问题,或者对如何解决这个问题有任何想法?

非常感谢

2 个答案:

答案 0 :(得分:1)

我也有同样的问题。我通过使用setAudioStreamType(int)方法确定流的类型来解决了这个问题:

Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

答案 1 :(得分:0)

我在这里发现了问题。首先,我运行的模拟器没有打开音频,所以我需要在eclipse中的AVD管理器中添加音频启用的布尔值。没有打开音频是导致它始终返回261毫秒的原因。还有第二个问题。请参阅下面的2个代码段。第一个是我的代码,第二个是教程中的代码。有一个细微的差别(括号数)导致第一个总是评估为0。

seekBarProgress.setProgress((int)((float) mediaPlayer.getCurrentPosition() / getMp3Duration()) * 100);

seekBarProgress.setProgress((int) (((float) mediaPlayer.getCurrentPosition() / getMp3Duration()) * 100));