当前位置: 首页 > 知识库问答 >
问题:

Android:有没有办法播放连续的MP3文件从网址没有中断?

阎令
2023-03-14

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

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

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

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

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

共有2个答案

何松
2023-03-14

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

周越泽
2023-03-14

只需将所有URL保存在ArrayList中并注意songUrl的当前索引。并将SekkCompleteListener添加到其中。歌曲结束后,请更改索引并播放。完整的详细教程是AndroidHive

if(currentSongIndex < (songsList.size() - 1)){
                    playSong(currentSongIndex + 1);
                    currentSongIndex = currentSongIndex + 1;
                }else{
                    // play first song
                    playSong(0);
                    currentSongIndex = 0;
                }

playSong在哪里

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();
        }
    }

媒体播放器。OnSeekCompleteListener

 类似资料:
  • 我在服务器上保存了许多mp3文件,以便在Android应用程序中接收它们。我正在一个接一个地播放mp3文件。我的问题是,我想在播放当前的mp3文件时已经缓冲下一个mp3文件。 我尝试它已经下载下一个MP3文件在缓存中,同时播放第一个。但问题是,当第一个mp3文件播放完毕时,第二个mp3文件可能无法完全下载(这很容易发生在2g连接上)。然后播放器将初始化下载的mp3文件的一部分,播放器将只播放初始化

  • 我正在创建一个MP3播放器应用程序。它大部分工作正常,但有一个边缘情况。 如果用户有一个名为“Bieber.mp3”的文件,但将文件名称更改为“比伯”,而没有文件应用程序中的文件扩展名(在Android系统上),他们仍然可以从文件应用程序中正确播放这首歌,具体取决于在设备上(像运行在Marshmallow上的Nexus这样的旧设备会这样做,而像Android12上的像素这样的新设备会说它是无效的文

  • 问题内容: 我正在尝试使用具有不连续x轴的pyplot创建一个图。通常的绘制方法是轴将具有以下内容: (值)---- // ----(后值) // //表示您正在跳过(值)和(后值)之间的所有内容。 我还没有找到任何这样的例子,所以我想知道是否有可能。我知道您可以在不连续的情况下加入数据,例如财务数据,但我想使轴上的跳跃更明确。目前,我只是在使用子图,但我真的很希望最终所有内容都在同一张图上。 问

  • 我尝试建立一个按钮,一旦点击它播放一个音频文件,如果再次点击它停止它。在按钮中,有一个属性src,其中放置了应该播放的文件的路径。 null null 当我尝试单击该按钮时,日志显示“”。但音频已设置,警报显示文件路径在那里。 我做错了什么?

  • 我想读取Dockerfile中的变量,该变量在文件中定义。有什么办法可以做到这一点吗? 这是我的DockerFile:

  • 问题内容: 我有一个文件,称之为。 有没有一种方法可以“读取”其中的内容,并获取其中的所有类的列表作为完整的类名,包括其包,例如? 我在考虑,但是似乎找不到用于检索整个类集的方法。 问题答案: 您可以将dexlib2库用作独立库(在maven中可用),以读取dex文件并获取类列表。 请注意,类名将采用“ Ljava / lang / String;”的形式,这就是它们如何存储在dex文件(和Jav