在android中给定的时间间隔后发出声音

时间:2015-08-13 17:14:04

标签: android time intervals

我正在创建一个应用程序,其中我有2 Button个。现在我希望当我点击 button1 时,它会在给定的时间间隔后发出声音并继续以无限循环发出声音,直到除非我不按 button2 < / strong>即可。假设button1&amp; Button2是Start&amp;分别停止。

我正在显示日期&amp;现在Toast中的时间就是例如。就像当我点击 button1 时,它会显示一个祝酒词。

现在我希望在给定的时间间隔内继续显示吐司,除非我不按 button2

现在我只能在 button1 的点击中显示祝酒词,因为我对如何设置循环感到困惑。

任何人都可以帮我查询一下。这对我来说是一个很大的帮助。顺便说一句,我还在学习。

这是我的button1代码,即StartBtn

StartBtn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        Calendar c = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("dd:MMMM:yyyy HH:mm:ss a");
        String strDate = sdf.format(c.getTime());

        Toast.makeText(getApplicationContext(), strDate, Toast.LENGTH_LONG).show();
    }
});

1 个答案:

答案 0 :(得分:1)

这应该有效:

    private Handler mHandler = new Handler();

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.button1) {
            playSoundWithDelay();
        } else if (v.getId() == R.id.button2) {
            mHandler.removeCallbacksAndMessages(null);
        }
    }

    private void playSoundAfterDelay() {
        mHandler.removeCallbacksAndMessages(null);
        mHandler.postDelayed(new Runnable() {

            @Override
            public void run() {
                // Play Sound;
                // Repeat after 1 sec
                mHandler.postDelayed(this, 1000);
            }

        }, 5000);
    }

要在应用关闭或在后台停止声音/吐司,请添加以下内容:

@Override
public void onPause() {
super.onPause();
mHandler.removeCallbacksAndMessages(null);
}