0

前の曲がまだ再生されているときに次の曲をロードする方法は? VK から曲をロードするオンライン プレーヤーを作成しましたが、次の曲のロード中に最後に非常に大きな一時停止が発生するため、これがまだ再生されているときに次の曲をロードすることは可能ですか? ロードをより速く実行する方法はありますか?

もう 1 つ、電話がロックされていない場合、音楽の読み込みが速くなるのはなぜですか?!

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

しかし、次の曲を準備したいのに、前の曲が終わっていない場合は、2 つの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");

曲を準備する必要がありますが、データ転送はインターネットの URL を読み取るよりもはるかに高速です。だから、前の曲が流れている間にその部分をやります。

また、ここでは例外を処理しなかったことに注意してください。

于 2013-09-18T19:09:43.423 に答える