天文台重置

dro*_*ter 17 android chronometer

我试图完全重启Chronometer,它不起作用.相反,它被暂停了.基本上我要做的是在计时器计数到10时做一些事情.完成后我们提示用户再试一次.在这种情况下,我们想要从1到10秒重做计数.但计时器从暂停时间开始,而不是从0开始.

这是代码:

_cutOfTime = 10; // constant
Run Code Online (Sandbox Code Playgroud)

每次按下按钮都可以 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();
}
Run Code Online (Sandbox Code Playgroud)

有没有办法重置天文台,所以它不会停顿但完全停止?

jmi*_*cek 36

当我用计时器播放一段时间后,我只是使用setBase()方法在调用start()之前将基数设置为当前时间.根据您的具体需要,您可能需要在启动之前添加一些关于是否重置计时器的逻辑.

View.OnClickListener mStartButtonListener = new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            mChronometer.setBase(SystemClock.elapsedRealtime());
            mChronometer.start();
        }
    };
Run Code Online (Sandbox Code Playgroud)