package Ġsco tty ch ang . ca fe _ walker . re posit i ory Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . location . Criteria Ċ import Ġandroid . location . Location Ċ import Ġandroid . location . Location Listener Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . os . Bundle Ċ import Ġsco tty ch ang . ca fe _ walker . model . LatLng Ċ Ċ class ĠPosition ing Repository () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMIN _ UPDATE _ TIME _ MS Ġ= Ġ 3 0 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMIN _ DISTANCE _ METER Ġ= Ġ 3 f ĊĊĠĠĠĠĠĠĠ Ġ// ĠT ai pe i ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdefault Lat Ġ= Ġ 2 5 . 0 9 1 0 8 ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdefault Lng Ġ= Ġ 1 2 1 . 5 5 9 8 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhas Register Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġbest Location : Ġandroid . location . Location ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠĠĠĠĠ Ġfun Ġload LatLng ( context : ĠContext ): ĠLat Lng Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlm Ġ= Ġcontext . getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! has Register ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbest Provider = Ġfind Best Provider ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! best Provider . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlm . request Location Updates ( best Provider , ĠMIN _ UPDATE _ TIME _ MS , ĠMIN _ DISTANCE _ METER , Ġlocation Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbest Location Ġ= Ġlm . getLast Known Location ( best Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Register Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLat Lng ( best Location ?. latitude Ġ?: Ġdefault Lat , Ġbest Location ?. longitude Ġ?: Ġdefault Lng ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfind Best Provider ( context : Context ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlm Ġ= Ġcontext . getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= ĠCriteria () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria . accuracy Ġ= ĠCriteria . AC CUR ACY _ CO AR SE ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria . is Alt itude Required Ġ= Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria . is Be aring Required Ġ= Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria . is Cost Allowed Ġ= Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria . power Requirement Ġ= ĠCriteria . POWER _ LOW ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlm . get Best Provider ( criteria , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocation Listener Ġ= Ġobject Ġ: Location Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Status Changed ( p 0 : ĠString ?, Ġp 1 : ĠInt , Ġp 2 : ĠBundle ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Enabled ( p 0 : ĠString ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Disabled ( p 0 : ĠString ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Changed ( new Location : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbest Location Ġ= Ġnew Location !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }