0

上一首仍在播放时如何加载下一首?我创建了一个在线播放器,它从 VK 加载歌曲,但在加载下一首歌曲时它最终会产生非常大的停顿,那么当它还在播放时是否可以加载下一首歌曲?有什么方法可以更快地执行加载吗?

还有一个,当手机没有锁定时,它加载音乐的速度更快,为什么?!

4

2 回答 2

1

要播放下一首歌曲,您需要setOnCompletionListener为您的MediaPlayer

myMediaPlayer.setOnCompletionListener(new OnCompletionListener() {           
   public void onCompletion(MediaPlayer player) {          

   player.stop();
   player.reset();
   player.setDataSource(/*  go to your next target*/);
   player.prepare();
   player.start();
  }
});

但是如果你想准备下一首歌曲并且之前还没有完成,我认为你需要两个MediaPLayer实例。

据我所知,Android 有大约 32 个音频流通道,所以不用担心,只要确保在完成每个媒体播放器时停止

于 2013-09-18T18:39:00.930 回答
1

您可以使用此方法将下一个 dataSource 读入字节数组:

java.net.URL 读取流到 byte[]

然后,当您准备好阅读歌曲时,请使用 localhost 套接字。

new Thread(new Runnable() {
    public void run() 
    {
         ServerSocket serverSocket = new ServerSocket(1111); //some port
         Socket s = serverSocket.accept();
         OutputStream out = s.getOutputStream();
         out.write(myByteArray); //either this is static somewhere, or you find a way to get the byte array into the instance
         out.close()
    }
}).start();

mp.setDataSource("127.0.0.1:1111");

您仍然需要准备歌曲,但数据传输将比读取 Internet URL 快得多。所以我们在播放前一首歌的时候做那部分。

另外,请注意,我在这里没有处理任何异常,您必须这样做。

于 2013-09-18T19:09:43.423 回答