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次。我用于循环,但声音只播放一次并停止。知道怎么做吗?提前致谢。

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 回答