我在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。

09-27 14:56