Lap time and Last lap time

Former Member
Former Member
Hi everybody,

In a datafield how can I obtain the datas to show lap time and the last lap time?

I'll be grateful if anyone could say me an example for that, please

Thanks for all and your help.
  • The lap time and last time metrics are not cached or calculated by the ConnectIQ framework.

    In your Ui.DataField derived class, you have access to the timer callbacks (onTimerLap(), onTimerPause(), onTimerResume()...). Given these, you should be able to calculate lap time and last lap time. I think it would be something like this...

    class LapTimeDataField extends Ui.SimpleDataField
    {
    hidden var _M_previous;
    hidden var _M_elapsed;
    hidden var _M_paused;
    hidden var _M_stopped;

    function initialize() {
    SimpleDataField.initialize();
    _M_paused = false;
    _M_stopped = true;
    }

    function onTimerPause() {
    Sys.println("Pause");
    _M_paused = true;
    }

    function onTimerResume() {
    Sys.println("Resume");
    _M_paused = false;
    _M_previous = Sys.getTimer();
    }

    function onTimerStart() {
    Sys.println("Start");
    _M_stopped = false;
    _M_previous = Sys.getTimer();
    }

    function onTimerStop() {
    Sys.println("Stop");
    _M_stopped = true;
    }

    function onTimerLap() {
    Sys.println("Lap");
    _M_previous = Sys.getTimer();
    _M_elapsed = 0;
    }

    function onTimerReset() {
    Sys.println("Reset");
    _M_elapsed = null;
    }

    function compute(info) {

    if (_M_paused || _M_stopped) {

    if (_M_elapsed != null) {
    return new Time.Duration(_M_elapsed / 1000);
    }
    else {
    return "-:--";
    }
    }

    if (_M_elapsed == null) {
    _M_elapsed = 0;
    }

    var current = Sys.getTimer();
    if (_M_previous != null) {
    _M_elapsed += (current - _M_previous);
    }
    _M_previous = current;

    return new Time.Duration(_M_elapsed / 1000);
    }
    }
  • Former Member
    Former Member over 8 years ago
    Thanks for your help,

    But for what the datafield is shows one second in the watch and after dissapear and show symbol IQ

    Thanks for all and your help
  • It appears to work just fine in the simulator. I haven't tried to put it onto a device. What is the error in the CIQ_LOG.txt?
  • Former Member
    Former Member over 8 years ago
    It was for add the current speed, a bad configurations when the speed is 0, but now I have solved and now works perfectly

    Thanks for all and your help