package Ġcom . k yle cor ry . trail _ sense . tools . ped ometer . infrastructure Ċ Ċ import Ġcom . k yle cor ry . and rome da . preferences . Preferences Ċ import Ġjava . time . Instant Ċ Ċ class ĠStep Counter ( private Ġval Ġpreferences : ĠPreferences ) Ġ: ĠI Step Counter Ġ{ ĊĊĠĠĠ Ġoverride Ġval ĠstartTime : ĠInstant ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreferences . get Instant ( LAST _ RESET _ KEY ) ĊĊĊĠĠĠ Ġoverride Ġval Ġsteps : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreferences . getLong ( STEPS _ KEY ) Ġ?: Ġ 0 L ĊĊĠĠĠ Ġoverride Ġfun Ġadd Steps ( steps : ĠLong ){ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Steps Ġ= Ġthis . steps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . put Long ( STEPS _ KEY , Ġsteps Ġ+ Ġlast Steps ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startTime Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . put Instant ( LAST _ RESET _ KEY , ĠInstant . now ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset (){ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . remove ( STEPS _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . put Instant ( LAST _ RESET _ KEY , ĠInstant . now ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTE PS _ KEY Ġ= Ġ" cache _ steps " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLAST _ RESET _ KEY Ġ= Ġ" last _ od ometer _ reset " ĊĠĠĠ Ġ} Ċ Ċ }