我在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
是我的mediaPlayer,sFilePath
是文件路径。从理论上讲,我提到的案例应该被覆盖,但是当我寻找文件长度时,播放器被重置(如代码所示)但是没有播放,这是非常尴尬的并且超出了我的能力。
答案 0 :(得分:0)
也许mediaPlayer因为它到达歌曲的结尾而停止。要么再次启动它,要以稳定的间隔刷新文件(比如说每5秒),或者只使用onCompletionListener。在最后一种情况下,当文件结束时,你可以重新加载文件并继续播放... mp.getCurrentPosition()以获得它停止播放的位置。
我也注意到你引用了sMediaPlayer,但你的MediaPlayer被定义为mp。