バックグラウンドミュージックループがあります。しかし、ループがうまくいかず、ループが終了するたびに音楽が0.5秒あります。mp3 ファイルは完璧です。音楽なしでは 1 秒もありません。MediaPlayerのせいですか?
2 に答える
Jellybean (Android 4.1) 以降では、MediaPlayers の「チェーン」を実行できます。現在再生中の MediaPlayer が終了する前にsetNextMediaPlayerを呼び出すと、ギャップを避けるために現在の MediaPlayer が終了した後、できるだけ早く次の MediaPlayer が自動的に開始されます。
現在再生中の MediaPlayer インスタンスを次のインスタンスとして設定することはできないことに注意してください。したがって、これを曲のループに使用するには、同じデータ ソースで 2 つの MediaPlayer インスタンスを作成し、それらを交互に使用する必要があります。
その点で、 SoundPoolはより優れた仕事をします。
SoundPool は、APK 内のリソースまたはファイル システム内のファイルからメモリにロードできるサンプルのコレクションです。SoundPool ライブラリは MediaPlayer サービスを使用して、オーディオを生の 16 ビット PCM モノラルまたはステレオ ストリームにデコードします。これにより、アプリケーションは、CPU 負荷や再生中の圧縮解除の遅延に苦しむことなく、圧縮されたストリームで出荷できます。
これは、音楽ファイルの長さによってはかなりのメモリを消費する可能性があることに注意してください。