Android 安卓:有没有办法不中断地从URL播放连续的mp3文件?

Android 安卓:有没有办法不中断地从URL播放连续的mp3文件?,android,mp3,android-mediaplayer,Android,Mp3,Android Mediaplayer,我正在创建从URL加载连续mp3文件的应用程序。当我尝试在第一个mp3文件完成时初始化下一个mp3文件时,问题是,当第一个文件完成时,播放器需要时间准备或初始化下一个mp3文件,是的,我知道这是媒体播放器的一部分,准备可能需要时间,准备可能需要很长时间,而且对于prepareAsync排序时间相对较长 但是,我需要的是,当第一个mp3文件完成播放时,url中的下一个mp3文件不应该花费时间来准备,因为它应该在不中断的情况下播放。我想知道,有没有办法在播放当前mp3时附加下一个mp3文件进行缓冲?

我正在创建从URL加载连续mp3文件的应用程序。当我尝试在第一个mp3文件完成时初始化下一个mp3文件时,问题是,当第一个文件完成时,播放器需要时间准备或初始化下一个mp3文件,是的,我知道这是媒体播放器的一部分,准备可能需要时间,准备可能需要很长时间,而且对于prepareAsync排序时间相对较长

但是,我需要的是,当第一个mp3文件完成播放时,url中的下一个mp3文件不应该花费时间来准备,因为它应该在不中断的情况下播放。我想知道,有没有办法在播放当前mp3时附加下一个mp3文件进行缓冲?这样我们就可以不中断地播放

在播放第一个mp3文件的同时,我还尝试在缓存中下载下一个mp3文件。但问题是,当完成第一个mp3文件时,第二个mp3文件可能没有完全下载,这对于2g连接来说太差了。播放器将初始化下载的mp3文件部分。播放器将只播放已初始化的下载文件部分。如果我出错,请更正。这会导致文件损坏。而且一点也不好

我试图缓存下一个mp3文件,而当前mp3的播放率约为75%,但在这种情况下,mp3文件没有完全缓存,这也会导致文件损坏

所以,请给我一个建议,我怎样才能播放连续的mp3文件而不爆发?而击球手正是这样做的。提前感谢

只需将所有URL保存在ArrayList中,并注意songUrl的当前索引。并将sekkkcompletelistener添加到其中。当一首歌曲完成时,请更改索引并播放。完整的详细教程将在


使用专门为您的案例设计的API。您必须在播放过程中准备另一个MediaPlayer实例,并将其设置为下一个实例。这样你就不会在轨道之间浪费时间了。基本上,您必须使用两个实例并来回交换它们。

谢谢您的回答,但是,两个mp3之间也需要时间。只是我需要下一个mp3缓冲区应该连接到当前播放。当当前mp3播放缓冲区完成时,它应该启动下一个mp3缓冲,这样我就可以在不使用ineterrupt的情况下播放下一个mp3两个mp3之间的时间。
if(currentSongIndex < (songsList.size() - 1)){
                    playSong(currentSongIndex + 1);
                    currentSongIndex = currentSongIndex + 1;
                }else{
                    // play first song
                    playSong(0);
                    currentSongIndex = 0;
                }
public void  playSong(int songIndex){
        // Play song
        try {
            mp.reset();
            mp.setDataSource(songsList.get(songIndex).get("songPath"));
            mp.prepare();
            mp.start();
            // Displaying Song title
            String songTitle = songsList.get(songIndex).get("songTitle");
            songTitleLabel.setText(songTitle);

            // Changing Button Image to pause image
            btnPlay.setImageResource(R.drawable.btn_pause);

            // set Progress bar values
            songProgressBar.setProgress(0);
            songProgressBar.setMax(100);

            // Updating progress bar
            updateProgressBar();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }