package Ġnic . go i . aar og y ase tu . location Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġcom . google . android . gms . location .* Ċ import Ġnic . go i . aar og y ase tu . Cor ona Application Ċ import Ġnic . go i . aar og y ase tu . db . DB Manager Ċ import Ġnic . go i . aar og y ase tu . models . Bluetooth Data Ċ import Ġnic . go i . aar og y ase tu . prefs . Shared Pref Ċ import Ġnic . go i . aar og y ase tu . prefs . Shared Prefs Constants Ċ import Ġnic . go i . aar og y ase tu . utility . Constants Ċ import Ġnic . go i . aar og y ase tu . utility . Cor Utility Ċ import Ġnic . go i . aar og y ase tu . utility . Logger ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA man ĠB ans al Ġon Ġ 2 3 / 0 3 / 2 0 . Ċ Ġ*/ Ċ Ċ class ĠRetrieve Location Service Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠTAG Ġ= ĠRetrieve Location Service :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUPDATE _ INTERVAL : ĠLong Ġ= Ġ 3 0 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ Ġ/* Ġ 3 0 Ġmin Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFAST EST _ INTERVAL : ĠLong Ġ= Ġ 5 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ/* Ġ 5 Ġmin Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDIS PLACE MENT Ġ= Ġ 1 0 0 f Ġ// 1 0 0 m ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm F used Location Client : ĠF used Location Provider Client ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠCor ona Application . getInstance () ĊĠĠĠ Ġprivate Ġvar Ġis Service Running Ġ= Ġfalse ĊĊĊĠĠĠ Ġprivate Ġvar Ġlocation Callback : ĠLocation Callback Ġ= Ġobject Ġ: ĠLocation Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Result ( location Result : ĠLocation Result ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Result ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . last Location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusers Location Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . EMPTY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . EMPTY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . EMPTY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Location Data . latitude Ġ= Ġit . last Location . latitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Location Data . longitude Ġ= Ġit . last Location . longitude ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor ona Application . getInstance (). set Best Location ( it . last Location ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ret re ive Ġlocation Ġservice ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Location Data . latitude . toString () Ġ+ Ġ" Ġ- Ġ" Ġ+ Ġusers Location Data . longitude . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Manager . insert Near by Detected DeviceInfo ( listOf ( users Location Data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġstart Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Service Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm F used Location Client Ġ= ĠLocation Services . getF used Location Provider Client ( context ) ĊĠĠĠĠĠĠĠ Ġget Location () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ-------------------------------- -- ĠLocation Request Ġ-------------------------------- ---- ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġlocation Ġrequest Ġto Ġstart Ġreceiving Ġupdates ĊĠĠĠĠĠĠĠ Ġval Ġm Location Request High Accuracy Ġ= ĠLocation Request () ĊĠĠĠĠĠĠĠ Ġm Location Request High Accuracy . priority Ġ= ĠLocation Request . PRIORITY _ BAL ANCED _ POWER _ AC CUR ACY ĊĠĠĠĠĠĠĠ Ġm Location Request High Accuracy . interval Ġ= ĠUPDATE _ INTERVAL ĊĠĠĠĠĠĠĠ Ġm Location Request High Accuracy . fast est Interval Ġ= ĠFAST EST _ INTERVAL ĊĠĠĠĠĠĠĠ Ġm Location Request High Accuracy . sm allest Dis placement Ġ= ĠDIS PLACE MENT ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm F used Location Client . request Location Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Location Request High Accuracy , Ġlocation Callback , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . my Looper () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġis Service Running Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Service Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm F used Location Client . remove Location Updates ( location Callback ). add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Service Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ