我正在尝试完全重启天文台,但它不工作。相反,它正在被暂停。基本上我想做的是在计时器倒数到10的时候做一些事情。完成后,我们提示用户再试一次。在这种情况下,我们想要在1到10秒之间重做计数。但是计时器从暂停的时间开始,而不是从0开始。
代码如下:
_cutOfTime = 10; // constant
每次按下do startRecording()
按钮时
它应该总是启动计时器,而不是停止/暂停它,但它做了相反的事情
protected void startRecording(){
this._watch = (Chronometer) findViewById(R.id.chrono);
if (this._watch != null)
this._watch.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
long countUp = (SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000;
Log.i(_tag, "time now: " + String.valueOf(countUp));
if(countUp > _cutOfTime)
{
Log.i(_tag, "stop recording!!: ");
_watch.stop();
stopRecordWav();
launchPromptWithResults();
}
long sec = countUp % 60;
String asText = "" + sec;
_textView.setText("Recorded: " + asText);
}
});
if (_watch != null)
_watch.start();
}
有没有办法重置计时器,使它不会暂停,而是完全停止?
发布于 2011-03-18 06:21:51
不久前,当我使用计时器时,我只是在调用start()之前使用setBase()方法将基数设置为当前时间。根据您的确切需求,您可能需要在启动前添加一些关于是否重置天文台的逻辑。
View.OnClickListener mStartButtonListener = new OnClickListener() {
@Override
public void onClick(View arg0) {
mChronometer.setBase(SystemClock.elapsedRealtime());
mChronometer.start();
}
};
https://stackoverflow.com/questions/5345697
复制相似问题