首页 文章

Android MediaPlayer.getCurrentPosition未更新

提问于
浏览
5

我使用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

    我也有同样的问题 . 我通过使用 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

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

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

相关问题