【发布时间】:2012-11-09 13:09:47
【问题描述】:
我在 android 中使用媒体播放器时遇到了困难。基本上,我尝试从正在下载的 SD 卡中播放一首歌曲(某种流媒体)。因此,在下载歌曲(20%)后,歌曲开始播放,如果我这样离开它,它可以正常工作直到结束。但是,如果我尝试在最后(超过 20%)进行搜索,显然它不会起作用,因为我的搜索位置在 EOF 文件上方,所以我在方法中制作了这段代码
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(sFilePath);
mp.prepare();
int offset = (progress * mp.getDuration()) / 100;
if (sCompleted) return;
sLastSeek = offset;
if (offset > sMediaPlayer.getDuration()) {
sMediaPlayer.reset();
sMediaPlayer.setDataSource(sFilePath);
sMediaPlayer.prepare();
} else {
sMediaPlayer.seekTo(offset);
}
sMediaPlayer 是我的媒体播放器,sFilePath 是文件路径。理论上应该涵盖我提出的案例,但是当我搜索文件长度时,播放器被重置(如代码所示)但没有播放,这非常尴尬并且超出了我的能力。
【问题讨论】:
-
您是否尝试在 seekTo() 之前调用 start,如果您不调用 start() ,播放将不会自动恢复。此外,您应该使用异步方法为流式应用程序准备称为“prepareAsync”。
-
是的,播放器已经启动,并且已经尝试使用 prepareAsync() 但结果是一样的。
-
一个小补充,我为 android 4.0 创建了这个应用程序,因为我在 google 论坛上看到在 android 2.1 上存在 seekTo() 方法的问题,所以这里不再是这种情况了
标签: android android-mediaplayer seek