如何根据输入数字字段的数字在切换按钮上设置延迟?

时间:2013-02-04 21:45:49

标签: java android timer delay countdowntimer

我正试图让一个切换按钮播放一首歌但延迟了。用户必须将分钟输入到数字字段(调色板/文本字段/数字)中,该字段将用于设置延迟。我已经检查了android开发人员资源,但我仍然不知道从哪里开始。

目前我有这个:

public class Main extends Activity {

MediaPlayer mp;
Button startButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    mp = MediaPlayer.create(getBaseContext(), R.raw.songthingy);

    ToggleButton toggle = (ToggleButton) findViewById(R.id.ToggleButton);
    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
                mp.start();
            } else {
                mp.stop();
            }
        }
    });

    mp.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });

}

1 个答案:

答案 0 :(得分:2)

一个好方法是Handler.postDelay。你必须让你的动作成为Runnable,并将它传递给它们的params方法。然后它将在给定时间后执行。

<强>更新

   private Runnable doStuff= new Runnable() {
//Notice doStuff is a member of the class.
            public void run() {
               //do awesome stuff here.
             mp.start();
            }
        };
//...
 toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
             final Handler mHandler= new Handler();
                mHandler.postDelayed(doStuff,1000*30);//30 second delay.
            } else {
                mp.stop();
            }
        }

您可以在谷歌周围查看如何使用它的示例。您的代码可能看起来像这样,但此代码不会开箱即用。你必须修复范围并满足你的要求。