4

我正在尝试播放 mp3 文件(带有 onClickListener)并在 2 秒后停止。我尝试了下面的代码,但它不起作用。有人可以帮忙吗?

final MediaPlayer mpsound = MediaPlayer.create(this, R.raw.media_player_sound);

ImageView sound = (ImageView) findViewById(R.id.button);

sound.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mpsound.start();{
                    sleep(2000);
                    mpsound.stop();
                }
            }
        });
4

2 回答 2

1

如果您正在使用 mpsound 播放音频,为什么要在 mpfrog 上调用 stop()?您需要调用 mpsound MediaPlayer 上的 stop() 函数。此外,您可能希望将 @Override 注释添加到您的 onClick() 方法中。

对于覆盖...

sound.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mpsound.start();{
                    sleep(2000);
                    mpsound.stop();
                }
            }
        });

对于计时器......

Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg){
                mpsound.stop();
            }
        };

//Task for timer to execute when time expires
    class SleepTask extends TimerTask {
        @Override
        public void run(){
            handler.sendEmptyMessage(0);
        }
    }

//then in some other function...
Timer timer = new Timer("timer",true);
timer.schedule(new SleepTask(),2000);
于 2012-07-18T21:54:42.040 回答
0

您必须在不同的线程中等待 2 秒,对于这种情况,请使用您自己创建的线程并在那里等待并停止播放器,或者您可以使用CountDownTimer - 非常简单的解决方案。

您可以在此处此处找到汇总的相同问题

在 Eclipse 中,您可以使用自动完成(默认为 ctrl + 空格)来自动填充所有已实现的方法,并且 @Overrides 已经存在。

于 2012-07-19T18:02:14.763 回答