/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠE mb est Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġnet . em best . gps . gn sst est . utils Ċ Ċ import Ġandroid . location . Location Ċ import Ġandroid . util . Log Ċ Ċ import Ġjava . util . ArrayList ĊĊ Ċ class ĠC ep Analysis Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Gn ss Location : ĠArrayList < Location > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġm Gn ss TT FF : ĠArrayList < Float > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġm True Position : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm True Location : ĠLocation ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġgn ss Acc Avg Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġgn ss TT FF Avg Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm TimeOut Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġget Gn ss C ep Result (): ĠC ep Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠC ep Result () ĊĊĠĠĠĠĠĠĠ Ġresult . max Acc Ġ= Ġget Gn ss Acc C ep ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġresult . min Acc Ġ= Ġget Gn ss Acc C ep ( 0 ) ĊĠĠĠĠĠĠĠ Ġresult . p 5 0 Acc Ġ= Ġget Gn ss Acc C ep ( 5 0 ) ĊĠĠĠĠĠĠĠ Ġresult . p 6 7 Acc Ġ= Ġget Gn ss Acc C ep ( 6 7 ) ĊĠĠĠĠĠĠĠ Ġresult . p 9 5 Acc Ġ= Ġget Gn ss Acc C ep ( 9 5 ) ĊĠĠĠĠĠĠĠ Ġresult . avg Acc Ġ= Ġgn ss Acc Avg ĊĊĠĠĠĠĠĠĠ Ġresult . max TT FF Ġ= Ġget Gn ss TT FF C ep ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġresult . min TT FF Ġ= Ġget Gn ss TT FF C ep ( 0 ) ĊĠĠĠĠĠĠĠ Ġresult . p 5 0 TT FF Ġ= Ġget Gn ss TT FF C ep ( 5 0 ) ĊĠĠĠĠĠĠĠ Ġresult . p 6 7 TT FF Ġ= Ġget Gn ss TT FF C ep ( 6 7 ) ĊĠĠĠĠĠĠĠ Ġresult . p 9 5 TT FF Ġ= Ġget Gn ss TT FF C ep ( 9 5 ) ĊĠĠĠĠĠĠĠ Ġresult . avg TT FF Ġ= Ġgn ss TT FF Avg ĊĊĠĠĠĠĠĠĠ Ġresult . time Out Ġ= Ġm TimeOut ĊĠĠĠĠĠĠĠ Ġresult . true Location Ġ= Ġm True Location ĊĠĠĠĠĠĠĠ Ġresult . location Type Ġ= Ġm True Position ĊĠĠĠĠĠĠĠ Ġresult . count Ġ= Ġm Gn ss TT FF . size ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Gn ss C ep ( position : ĠBoolean , Ġlon : ĠDouble , Ġlat : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Gn ss Location . clear () ĊĠĠĠĠĠĠĠ Ġm Gn ss TT FF . clear () ĊĠĠĠĠĠĠĠ Ġm TimeOut Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġgn ss Acc Avg Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġgn ss TT FF Avg Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġm True Location Ġ= ĠLocation ("") ĊĠĠĠĠĠĠĠ Ġthis . m True Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġif Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm True Location !!. latitude Ġ= Ġlat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm True Location !!. longitude Ġ= Ġlon ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm True Location !!. latitude Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm True Location !!. longitude Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" True Pos :$ position ĠLat :$ lat ĠL on :$ lon ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Gn ss Location ( latitude : ĠDouble , Ġlongitude : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" add Gn ss Location ĠLat :$ latitude ĠL on :$ longitude ") ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation ("") ĊĠĠĠĠĠĠĠ Ġlocation . latitude Ġ= Ġlatitude ĊĠĠĠĠĠĠĠ Ġlocation . longitude Ġ= Ġlongitude ĊĠĠĠĠĠĠĠ Ġthis . m Gn ss Location . add ( location ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Gn ss TT FF ( tt ff : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Add TT FF :$ tt ff ") ĊĠĠĠĠĠĠĠ Ġthis . m Gn ss TT FF . add ( tt ff ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Gn ss TimeOut ( timeout : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m TimeOut Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġthis . m Gn ss TT FF . add ( timeout ) ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation ("") ĊĠĠĠĠĠĠĠ Ġlocation . latitude Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġlocation . longitude Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġthis . m Gn ss Location . add ( location ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Result (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= Ġ"\ r \ n Index , ĠTT FF , ĠĠĠĠĠĠĠĠ ĠLat , ĠĠĠĠĠĠĠĠĠĠĠ ĠL on " ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġm Gn ss Location . size ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ> Ġm Gn ss TT FF . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġm Gn ss TT FF . size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ+= Ġ"\ r \ n " Ġ+ Ġj Ġ+ Ġ": ĠĠĠ Ġ" Ġ+ Ġm Gn ss TT FF [ j ] Ġ+ Ġ", Ġ" Ġ+ Ġm Gn ss Location [ j ]. latitude Ġ+ Ġ", Ġ" Ġ+ Ġm Gn ss Location [ j ]. longitude ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcal Average Position () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlat Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġvar Ġlon Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( loc Ġin Ġm Gn ss Location ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( loc . latitude Ġ> Ġ 0 Ġ&& Ġloc . longitude Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ+= Ġloc . latitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlon Ġ+= Ġloc . longitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlat Ġ/= Ġi ĊĠĠĠĠĠĠĠ Ġlon Ġ/= Ġi ĊĊĠĠĠĠĠĠĠ Ġm True Location !!. latitude Ġ= Ġlat ĊĠĠĠĠĠĠĠ Ġm True Location !!. longitude Ġ= Ġlon ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Gn ss Acc C ep ( pos : ĠInt ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! m True Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal Average Position () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġacc List Ġ= ĠArrayList < Float >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( loc Ġin Ġm Gn ss Location ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġm True Location !!. distance To ( loc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc List . add ( distance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( acc List . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc List . sort () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc List . reverse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġacc Sum Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( acc Ġin Ġacc List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc Sum Ġ+= Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgn ss Acc Avg Ġ= Ġacc Sum Ġ/ Ġacc List . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos Ġ>= Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( pos Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġacc List . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= ĠMath . ceil (( acc List . size Ġ* Ġ( 1 0 0 Ġ- Ġpos ) Ġ/ Ġ 1 0 0 . 0 0 f ). toDouble ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġacc List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġacc List . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Get ĠACC ĠC EP :$ pos ĠIndex :$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġacc List [ index ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Gn ss TT FF C ep ( pos : ĠInt ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtt ff List Ġ= ĠArrayList ( m Gn ss TT FF ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tt ff List . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtt ff List . sort () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtt ff List . reverse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtt ff Sum Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tt ff Ġin Ġtt ff List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtt ff Sum Ġ+= Ġtt ff ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgn ss TT FF Avg Ġ= Ġ( tt ff Sum Ġ/ Ġtt ff List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos Ġ>= Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( pos Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġtt ff List . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= ĠMath . ceil (( tt ff List . size Ġ* Ġ( 1 0 0 Ġ- Ġpos ) Ġ/ Ġ 1 0 0 . 0 0 f ). toDouble ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġtt ff List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġtt ff List . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Get ĠTT FF ĠC EP :$ pos ĠIndex :$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtt ff List [ index ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" G NS ST est CEP " ĊĠĠĠ Ġ} Ċ }