1

私は MediaPlayer (.wav ファイル) を持っており、これを立て続けに繰り返す必要がある場合があります。すでに再生中の場合は、再起動します。

if (player.isPlaying()) {
    player.pause();
    player.seekTo(0);
}
player.start();

問題は、MediaPlayer がランダムな位置で中断されると、しばしば最後に小さいながらも目立つノイズが発生することです。

私が試した解決策の 1 つは、同じ wav ファイルをロードする MediaPlayers の配列を作成し、それらを循環させ、中断せず、現在の項目が既に再生されている場合は呼び出しを無視することです (これはめったに発生せず、不在着信は発生しません)。とにかく一般的な弾幕で気づいた)。

MediaPlayer player = players.get(current);
if (!player.isPlaying())
    player.start();
if((++current) >= players.size())
    current = 0;

これでノイズは取り除かれますが、解決策はちょっと醜いです。より良い方法はありますか?

4

1 に答える 1

1

ノイズはおそらくサイクルの途中でカットされた波形です。停止して開始する前に setVolume を呼び出すことで修正できる可能性があります。複数の MediaPlayers を持つことは悪い考えではありませんが、SoundPoolを確認することをお勧めします。

于 2013-10-28T10:53:59.380 に答える