package Ġcom . k ier an . win ni peg bus . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Sender Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location . Location Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . google . android . gms . common . Connection Result Ċ import Ġcom . google . android . gms . common . Google Play Services Util Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ import Ġcom . google . android . gms . location . Location Listener Ċ import Ġcom . google . android . gms . location . Location Request Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġcom . k ier an . win ni peg bus . R Ċ // import Ġcom . roll bar . android . Roll bar Ċ Ċ abstract Ġclass ĠGoogle Api Activity Ġ: ĠBase Activity (), ĠGoogle ApiClient . Connection Callbacks , ĠGoogle ApiClient . On Connection Failed Listener Ġ{ ĊĠĠĠ Ġprotected Ġvar Ġgoogle ApiClient : ĠGoogle ApiClient ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġis Google Play Services Available : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠresultCode Ġ= ĠGoogle Play Services Util . is Google Play Services Available ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConnection Result . SUCCESS Ġ== ĠresultCode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnearby Stops Distance : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprefs . getString ( getString ( R . string . pref _ key _ near by _ distance ), Ġ" 2 0 0 ") ?. toInt () !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġlatest Location : ĠLocation ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠLocation Services . F used Location Api . getLast Location ( google ApiClient ) ĊĊĠĠĠ Ġprotected Ġfun Ġconnect Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Google Play Services Available Ġ&& Ġgoogle ApiClient Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle ApiClient !!. connect () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġconnect Client () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( google ApiClient Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle ApiClient !!. disconnect () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Sus pended ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== ĠGoogle ApiClient . Connection Callbacks . CA USE _ SERVICE _ DIS CONNECTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Short To aster (" Disconnected . ĠPlease Ġre - connect .") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( i Ġ== ĠGoogle ApiClient . Connection Callbacks . CA USE _ NETWORK _ LO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Short To aster (" Network Ġlost . ĠPlease Ġre - connect .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Failed ( connection Result : ĠConnection Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( connection Result . has Resolution ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Result . start Resolution For Result ( this , ĠCONNECTION _ FAILURE _ RESOL UTION _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIntent Sender . Send Intent Exception ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoll bar . instance ()?. error ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Long To aster (" Sorry . ĠGoogle Ġservices Ġnot Ġavailable Ġto Ġyou ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġrequest Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidated Location Request () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . ACCESS _ F INE _ LOCATION ), ĠF INE _ LOCATION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF INE _ LOCATION Ġ-> Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidated Location Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidated Location Request (): ĠLocation Request ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Request Ġ= ĠLocation Request . create (). set Priority ( Location Request . PRIORITY _ BAL ANCED _ POWER _ AC CUR ACY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Request . interval Ġ= ĠLOC ATION _ REFRESH _ INTERVAL . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Request . fast est Interval Ġ= ĠLOC ATION _ REFRESH _ INTERVAL . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Services . F used Location Api . request Location Updates ( google ApiClient , Ġlocation Request , Ġthis Ġas ĠLocation Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Request ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠRoll bar . instance ()?. error ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠF INE _ LOCATION Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprotected Ġval ĠCONNECTION _ FAILURE _ RESOL UTION _ REQUEST Ġ= Ġ 9 0 0 0 ĊĠĠĠĠĠĠĠ Ġval ĠLOC ATION _ REFRESH _ INTERVAL Ġ= Ġ 3 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġval ĠLOC ATION _ SERVICES _ NOT _ AVAILABLE Ġ= Ġ" Location Ġservices Ġare Ġnot Ġenabled " ĊĠĠĠĠĠĠĠ Ġval ĠAC QUI RING _ LOCATION Ġ= Ġ" Ac qu iring ĠLocation ..." ĊĠĠĠ Ġ} Ċ } Ċ