用特定时间JAVA初始化天文台

时间:2017-01-09 01:51:38

标签: java android chronometer

我有几秒钟的时间

(例如秒= 2796)

long seconds =2796;
long millis = seconds * 1000;

所以我希望我的计时器能以46分36秒开始

我试过这样做:

chronometer.setBase(myMillis);

long seconds =2796;
long stoptime_millis = seconds * 1000;
long elapsedMillis = SystemClock.elapsedRealtime() - stoptime_millis;

customChronometer.setBase(elapsedMillis);
customChronometer.start();

但它不起作用。
使用此代码,我的计时器将在00:00开始

我尝试了几种方法但似乎没有任何帮助 例如这一个Android Chronometer start with defined value

这是我的CustomChronometer

public class CustomChronometer extends Chronometer {
    public int msElapsed;
    public boolean isRunning = false;


    public CustomChronometer(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomChronometer(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomChronometer(Context context) {
        super(context);
    }

    public int getMsElapsed() {
        return msElapsed;
    }

    public void setMsElapsed(int ms) {
        setBase(getBase() - ms);
        msElapsed = ms;
    }

    @Override
    public void start() {
        super.start();
        setBase(SystemClock.elapsedRealtime() - msElapsed);
        isRunning = true;
    }

    @Override
    public void stop() {
        super.stop();
        if (isRunning) {
            msElapsed = (int) (SystemClock.elapsedRealtime() - this.getBase());
        }
        isRunning = false;
    }
}

1 个答案:

答案 0 :(得分:1)

当你调用start()方法时,你再次调用setBase。你的msElapsed很可能是0所以你总是重置你的Base。通过这种方式customChronometer.setBase(elapsedMillis);被忽略了。

所以改变你的代码:

![alt text](myimage.png)