package Ġcom . mid night bits . mg ps Ċ Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . System Clock Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ enum Ġclass ĠClip Ġ{ ĠUn recognized , ĠNormal , ĠE mergency , ĠPark ing , ĠOther Ġ} Ċ enum Ġclass ĠPage Ġ{ ĠEverything , ĠE mergency , ĠPark ing Ġ} Ċ Ċ data Ġclass ĠDuration ( val Ġmilliseconds : ĠLong ) Ġ{ ĊĠĠĠ Ġfun Ġto Millis (): ĠLong Ġ= Ġmilliseconds ĊĠĠĠ Ġfun Ġto Seconds (): ĠLong Ġ= Ġmilliseconds Ġ/ Ġ 1 0 0 0 ĊĠĠĠ Ġfun Ġto Minutes (): ĠLong Ġ= Ġto Seconds () Ġ/ Ġ 6 0 ĊĠĠĠ Ġfun Ġto Hours (): ĠLong Ġ= Ġto Minutes () Ġ/ Ġ 6 0 ĊĊĠĠĠ Ġfun ĠtoString Ex (): ĠString Ġ= Ġmilliseconds . toString () ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġms Ġ= Ġif Ġ( milliseconds Ġ< Ġ 0 ) Ġ- milliseconds Ġelse Ġmilliseconds ; ĊĠĠĠĠĠĠĠ Ġval Ġzero __ Ġ: ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġs __: ĠLong Ġ= Ġ( ms Ġ+ Ġ 5 0 0 ) Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( s __ Ġ== Ġzero __) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" 0 Ġs "; ĊĊĠĠĠĠĠĠĠ Ġval Ġh Ġ: ĠLong Ġ= Ġs __ Ġ/ 3 6 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ: ĠLong Ġ= Ġs __ Ġ/ Ġ 6 0 Ġ- Ġh Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ: ĠLong Ġ= Ġs __ Ġ- Ġm Ġ* Ġ 6 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( milliseconds Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("- "); ĊĊĠĠĠĠĠĠĠ Ġif Ġ( h Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( h ). append (" Ġh ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Ġ> Ġ 0 Ġ|| Ġs Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (' Ġ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( m ). append (" Ġmin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (' Ġ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( s Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( s ). append (" Ġs ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠMedia File Ġ( ĊĠĠĠ Ġval Ġpath Ġ: ĠString , ĊĠĠĠ Ġval Ġdate : ĠDate , ĊĠĠĠ Ġval Ġduration : ĠDuration , ĊĠĠĠ Ġval Ġclip : ĠClip ) Ġ{} Ċ Ċ data Ġclass ĠMedia Clip Ġ( val Ġoffset : ĠDuration , Ġval Ġduration : ĠDuration , Ġval Ġfile Ġ: ĠMedia File ) Ġ{} Ċ Ċ data Ġclass ĠG ps Point ( val Ġlat : ĠDouble , Ġval Ġlon : ĠDouble , Ġval Ġk mph : ĠLong , Ġval Ġduration Ġ: ĠDuration ) Ġ{} Ċ Ċ data Ġclass ĠG ps Segment ( ĊĠĠĠ Ġval Ġoffset : ĠDuration , ĊĠĠĠ Ġval Ġduration : ĠDuration , ĊĠĠĠ Ġval Ġdistance In Met res : ĠLong , ĊĠĠĠ Ġval Ġpoints : ĠMutable List < G ps Point >) Ġ{} Ċ Ċ data Ġclass ĠG ps Trace ( val Ġoffset : ĠDuration , Ġval Ġlines : ĠMutable List < G ps Segment >) Ġ{} Ċ Ċ data Ġclass ĠTrip Ġ( ĊĠĠĠ Ġval Ġstart : ĠDate , ĊĠĠĠ Ġval Ġduration : ĠDuration , ĊĠĠĠ Ġval Ġplaylist : ĠMutable List < Media Clip >, ĊĠĠĠ Ġval Ġtrace : ĠG ps Trace ) Ġ{} Ċ Ċ data Ġclass ĠFilter ( val Ġid : ĠInt , Ġval Ġpage : ĠPage , Ġvar Ġtri ps : ĠMutable List < Trip >) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"${ page }/${ tri ps . size }" Ċ } Ċ Ċ class ĠLibrary Ġ{ ĊĠĠĠ Ġval ĠFilters : ĠMutable List < Filter > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġcallback : ĠDirectory Load Callback Ġ= ĠDummy Callback () ĊĊĠĠĠ Ġinterface ĠDirectory Load Callback Ġ{ Ġfun ĠonLoad Done (); Ġ} ĊĠĠĠ Ġprivate Ġclass ĠDummy Callback Ġ: ĊĠĠĠĠĠĠĠ ĠDirectory Load Callback Ġ{ Ġoverride Ġfun ĠonLoad Done () Ġ{} Ġ} ĊĊĠĠĠ Ġfun Ġset Directory Load Callback ( cb : ĠDirectory Load Callback ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cb Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= Ġcb ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= ĠDummy Callback () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Directories ( dirs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠAsync Load ( this ). execute (* dirs ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġexternal Ġfun Ġload Directories _ native ( dirs : ĠArray < String >) ĊĠĠĠ Ġprivate Ġfun Ġloaded () Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Load Done (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAsync Load ( val Ġparent : ĠLibrary ) Ġ: ĠAsync Task < String , ĠVoid , ĠVoid ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġdirs : ĠString ): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . load Directories _ native ( array Of (* dirs )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . sleep ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( ign : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . loaded () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġself Ġ= ĠLibrary () ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . load Library (" dash cam - gps - player - native ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }