0

私のコードはこれです

        bv.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(mp.isPlaying()){
                mp.pause();
                bv.setImageResource(R.drawable.playzz);
            } else {
                bv.setImageResource(R.drawable.pausezz);
                for (int i=1; i<=10 ; i++){
                mp.start();
                }
            }
        }

曲を10回だけリピートしたかった。for ループを使用しましたが、音が 1 回だけ再生されて停止します。これを行う方法はありますか?? 前もって感謝します。

4

2 に答える 2

6

これは別のスレッドで行う必要があります (mp がフィールドであると仮定します)。

        mp.setOnCompletionListener(new OnCompletionListener() {

            int n = 0;

            @Override
            public void onCompletion(MediaPlayer mp) {
                if (n < 10) {
                    mp.start();
                    n++;
                }
            }
        });
        mp.start();

やっている

while(mp.isPlaying());

あなたのCPUを食べます。

于 2013-02-24T06:30:34.703 に答える
0

曲は最初のインスタンスが終了するのを待たずに 10 回再生されると思います。そのため、曲がまだ再生されているかどうかを確認し、再生が停止してからもう一度開始する必要があります。多分このようなもの -

    for (int i=1; i<=10 ; i++){
            mp.start();
            while(mp.isPlaying());
    }

これにより、現在のインスタンスが終了した後にのみ、曲の次のインスタンスが開始されるようになります。また、これを onClick ではなくバックグラウンドで実行して、他のフォアグラウンド プロセスを中断しないようにする必要があります。

于 2013-02-24T05:09:29.123 に答える