package Ġcom . k yle cor ry . trail _ sense . tools . cl iff height . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . k yle cor ry . and rome da . core . time . Timer Ċ import Ġcom . k yle cor ry . and rome da . fragments . Bound Fragment Ċ import Ġcom . k yle cor ry . sol . units . Coordinate Ċ import Ġcom . k yle cor ry . sol . units . Distance Units Ċ import Ġcom . k yle cor ry . trail _ sense . R Ċ import Ġcom . k yle cor ry . trail _ sense . databinding . Fragment Tool Cl iff Height Binding Ċ import Ġcom . k yle cor ry . trail _ sense . shared . Custom Ui Utils Ċ import Ġcom . k yle cor ry . trail _ sense . shared . Format Service Ċ import Ġcom . k yle cor ry . trail _ sense . shared . Press State Ċ import Ġcom . k yle cor ry . trail _ sense . shared . User Preferences Ċ import Ġcom . k yle cor ry . trail _ sense . shared . sensors . Sensor Service Ċ import Ġcom . k yle cor ry . trail _ sense . tools . cl iff height . domain . Cl iff Height Service Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ Ċ class ĠTool Cl iff Height Fragment Ġ: ĠBound Fragment < Fragment Tool Cl iff Height Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġservice Ġ= ĠCl iff Height Service () ĊĠĠĠ Ġprivate Ġval Ġtimer Ġ= ĠTimer Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġformat Service Ġby Ġlazy Ġ{ ĠFormat Service ( require Context ()) Ġ} ĊĠĠĠ Ġprivate Ġval Ġuser Prefs Ġby Ġlazy Ġ{ ĠUser Preferences ( require Context ()) Ġ} ĊĠĠĠ Ġprivate Ġval Ġgps Ġby Ġlazy Ġ{ ĠSensor Service ( require Context ()). get GPS ( false ) Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġunits : ĠDistance Units ĊĠĠĠ Ġprivate Ġvar ĠstartTime : ĠInstant ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġrunning Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġlocation : ĠCoordinate ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġsingle Press Duration Ġ= ĠDuration . of Millis ( 2 0 0 ) ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . start Btn . setOn Touch Listener Ġ{ Ġ_, Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġupdate State ( Press State . Up ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġupdate State ( Press State . Down ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate State ( action : ĠPress State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠPress State . Down ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠPress State . Up Ġ&& ĠDuration . between ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ> Ġsingle Press Duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠPress State . Down ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer . stop () ĊĠĠĠĠĠĠĠ Ġbinding . start Btn . setState ( false ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartTime Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠ Ġtimer . interval ( 1 6 ) ĊĠĠĠĠĠĠĠ Ġbinding . start Btn . setState ( true ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠCustom Ui Utils . dis claimer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . dis claimer _ message _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . tool _ cl iff _ height _ dis claimer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cache _ dialog _ tool _ cl iff _ height " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġunits Ġ= Ġuser Prefs . base Distance Units ĊĠĠĠĠĠĠĠ Ġlocation Ġ= Ġgps . location ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġtimer . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠstartTime Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġservice . get Cl iff Height ( start , ĠInstant . now (), Ġlocation ) ĊĠĠĠĠĠĠĠ Ġval Ġconverted Ġ= Ġheight . convertTo ( units ) ĊĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= Ġformat Service . format Distance ( converted , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġbinding . cl iff Height Title . title . text Ġ= Ġformatted ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Binding ( ĊĠĠĠĠĠĠĠ Ġlayout Inflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ? ĊĠĠĠ Ġ): ĠFragment Tool Cl iff Height Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFragment Tool Cl iff Height Binding . inflate ( layout Inflater , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} Ċ }