前の曲がまだ再生されているときに次の曲をロードする方法は? VK から曲をロードするオンライン プレーヤーを作成しましたが、次の曲のロード中に最後に非常に大きな一時停止が発生するため、これがまだ再生されているときに次の曲をロードすることは可能ですか? ロードをより速く実行する方法はありますか?
もう 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();
}
});
しかし、次の曲を準備したいのに、前の曲が終わっていない場合は、2 つのMediaPLayer
インスタンスが必要だと思います。
私が知っているように、Android にはオーディオ ストリーム用に約 32 のチャンネルがあるので、心配する必要はありません。
次のメソッドを使用して、次の 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");
曲を準備する必要がありますが、データ転送はインターネットの URL を読み取るよりもはるかに高速です。だから、前の曲が流れている間にその部分をやります。
また、ここでは例外を処理しなかったことに注意してください。