2

xオーディオファイルを何度も再生して、その値をユーザーに表示しようとしxています。私の問題はmp.setLooping(true)、ループ間のギャップなしでオーディオをループするために使用できることですが、繰り返し回数を処理できません。だから私はOnCompletionListenerすべてうまくいきましたが、各繰り返しの最後または最初に1秒のギャップが生じます。

私が使用mp.setLooping(true)する場合、ループの間にギャップはありません。

OnCompletionListenerループ間の顕著なギャップを使用する場合。

このギャップは、Android 4.xx および 3.xx でのみ発生します。どうすればそのギャップを取り除くことができますか?前もって感謝します..

私のコード:

int n = 1;
int maxCount = 15; //This value changes according to user input.
private void mpplay() {
    // TODO Auto-generated method stub
    mp.start();
    mp.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            if (n <= maxCount) {
                mp.start();
                n++;
                tv.setText("Counter:" + n);
                if (n >= maxCount) {
                    n = 1;
                    mp.stop();
                }
            }
        }
    });
}
4

1 に答える 1

2

次の 2 つのメディア プレーヤーを使用してみてください。

int n = 1;
int maxCount = 15; //This value changes according to user input.

MediaPlayer mp1 = new MediaPlayer();
mp1.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            if (n <= maxCount) {
                mp2.start();
                mp1.setDataSource(<File>);
                mp1.prepare();
                n++;
                tv.setText("Counter:" + n);
                if (n >= maxCount) {
                    n = 1;
                    mp2.stop();
                }
            }
        }
    });


MediaPlayer mp2 = new MediaPlayer();
mp2.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            if (n <= maxCount) {
                mp1.start();
                mp2.setDataSource(<File>);
                mp2.prepare();
                n++;
                tv.setText("Counter:" + n);
                if (n >= maxCount) {
                    n = 1;
                    mp1.stop();
                }
            }
        }
    });

private void mpplay() {
    mp1.setDataSource(<File>);
    mp1.prepare();
    mp1.start();
}
于 2013-05-05T02:37:57.753 に答える