4

オーディオをギャップなしで連続して繰り返し再生しようとしています。私はもう試した、

mediaplayer.setLooping(true);

しかし、それは繰り返し時間の間にギャップを与えます。そしてこれを試したところ、

mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()  {
    @Override
    public void onCompletion(MediaPlayer mp)
    {
        mediaplayer.start();
    }
});

ギャップも与えます。さまざまなオーディオ形式で試しました。しかし、どちらの方法もうまくいきませんでした。Androidで他の方法はありますか?

4

2 に答える 2

8

再生が終了すると、プレーヤーエンジンはすべてのトラックが完了したかどうかを確認し、完了したらloopingフラグを確認します。loopingフラグに基づいて、seek秒まで0。シークの一部として、プレーヤーエンジンは特定の位置からデータを読み取り、再生を開始します。

遅延は、すべてのトラックを再初期化して再起動する以外に、ストレージメディアseekによって導入された遅延に伴う実装が原因である可能性があります。したがって、プレーヤーが開始位置に戻るまでに明確な遅延があります。sdcard

基になるループの実装は、次のようにこの関数AwesomePlayer::onStreamDoneにあります: http: //androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/AwesomePlayer.cpp#834

編集1:

真を実装するために、機能gapless playbackを検討することもできsetNextMediaPlayer()ます。

于 2013-03-20T14:40:48.523 に答える
0

おそらくMediaPlayer、サーバーから (またはデバイス自体からも) データを再プリフェッチしています。これには数秒かかる場合があります。バッファリングが完了した場合にのみ、再生が再開されます。
これをバイパスしたい場合はMediaPlayer、最初のメディアファイルの再生が停止する直前にメディアファイルのバッファリングを開始する秒のみを使用できます。次に、 で 2 番目のものを開始できますOnCompletionListener

于 2013-03-20T14:12:33.240 に答える