我在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
是文件路径。从理论上讲,我提出的情况应该涵盖,但当我寻求超过文件长度的球员是重置(如代码所说),但不玩,这是非常尴尬,是我的权力。 最佳答案
也许媒体播放器停下来是因为它到达了歌曲的结尾。或者重新启动,以稳定的间隔刷新文件(比如每5秒一次),或者只使用onCompletionListener。在最后一种情况下,当文件结束时,您可以重新加载文件并继续播放…获取停止播放的位置。
我也注意到你提到了smediplayer,但是你的mediaplayer被定义为mp。