如果上一首歌还在播放时如何加载下一首歌曲?我创建了一个在线播放器,它可以加载来自VK的歌曲,但是在加载下一首歌曲时最终会产生非常大的暂停,所以当它还在播放时是否有可能加载下一首歌曲?有没有办法更快地执行加载?
还有一个,当手机未锁定时,它可以更快地加载音乐,为什么?!
答案 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");
您仍然需要准备这首歌,但数据传输速度比读取互联网网址要快得多。所以我们在播放上一首歌时就做了那部分。
另外,请注意我在这里没有处理任何例外情况,你必须这样做。