Android:在上一个播放时加载下一首歌曲

时间:2013-09-18 18:24:51

标签: java android

如果上一首歌还在播放时如何加载下一首歌曲?我创建了一个在线播放器,它可以加载来自VK的歌曲,但是在加载下一首歌曲时最终会产生非常大的暂停,所以当它还在播放时是否有可能加载下一首歌曲?有没有办法更快地执行加载?

还有一个,当手机未锁定时,它可以更快地加载音乐,为什么?!

2 个答案:

答案 0 :(得分: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个音频流通道,所以不用担心,只要确保你停止完成每个媒体播放器

答案 1 :(得分:1)

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

java.net.URL read stream to 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");

您仍然需要准备这首歌,但数据传输速度比读取互联网网址要快得多。所以我们在播放上一首歌时就做了那部分。

另外,请注意我在这里没有处理任何例外情况,你必须这样做。