在Android Media Player中重新加载数据源



我在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。在最后一个情况下,当文件结束时,您可以重新加载文件并继续播放... mp.getCurrentPosition()以使其停止播放的位置。

我也注意到您参考了Smediaplayer,但您的媒体播放器被定义为MP。

最新更新