package Ġcom . b rian b hu ang . fake location Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . location . Location Ċ import Ġandroid . location . Location Listener Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġcom . google . android . gms . maps .* Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . google . android . libraries . places . widget . Autocomplete Support Fragment Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . timer Ċ import Ġcom . crash ly t ics . android . Crash ly t ics ; Ċ import Ġcom . google . android . gms . common . api . Status Ċ import Ġcom . google . android . libraries . places . api . Places Ċ import Ġcom . google . android . libraries . places . api . model . Place Ċ import Ġcom . google . android . libraries . places . api . model . Place .* Ċ import Ġcom . google . android . libraries . places . api . net . Places Client Ċ import Ġcom . google . android . libraries . places . widget . listener . Place Selection Listener Ċ import Ġio . fabric . sdk . android . Fabric ; Ċ Ċ class ĠMaps Activity Ġ: ĠAppCompatActivity (), ĠOn Map Ready Callback , Ċ Google Map . On Map ClickListener , ĠLocation Listener , ĠPlace Selection Listener , ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Location Changed ( p 0 : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Status Changed ( p 0 : ĠString ?, Ġp 1 : ĠInt , Ġp 2 : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Provider Enabled ( p 0 : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Provider Disabled ( p 0 : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Place Selected ( p 0 : ĠPlace ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlat lng Ġ= Ġp 0 . lat Lng ĊĠĠĠĠĠĠĠ Ġprintln ( p 0 . toString ()+" Ġhere ---- ") ĊĠĠĠĠĠĠĠ Ġif Ġ( lat lng Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Marker On Map ( lat lng ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġlat lng ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Map . animate Camera ( Camera Update Factory . new LatLng ( lat lng )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Float (" lat ", Ġlat lng . latitude . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Float (" long ", Ġlat lng . longitude . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( p 0 : ĠStatus ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( p 0 . toString (), " Ġinvalid Ġinput ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Location ( selected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Map : ĠGoogle Map ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf used Location Client : ĠF used Location Provider Client ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlm : ĠLocation Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlocation : ĠLat Lng ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġselected : ĠLat Lng ĊĠĠĠ Ġprivate Ġvar Ġtimer : ĠTimer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġneeds Setup Ġ= Ġfalse ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOC ATION _ PERMISSION _ REQUEST _ CODE Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠFabric . with ( this , ĠCrash ly t ics ()) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ maps ) ĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . map ) Ġas ĠSupport Map Fragment ĊĠĠĠĠĠĠĠ Ġmap Fragment . getMap Async ( this ) ĊĠĠĠĠĠĠĠ Ġf used Location Client Ġ= ĠLocation Services . getF used Location Provider Client ( this ) ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġplace ĠAPI ĊĠĠĠĠĠĠĠ Ġif Ġ(! Places . isInitialized ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPl aces . initialize ( application Context , Ġapplication Context . getString ( R . string . api _ key )); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġac support Fragment Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . autocomplete _ fragment ) Ġas ĠAuto complete Support Fragment ĊĠĠĠĠĠĠĠ Ġac support Fragment . set Place Fields ( listOf ( Field . ID , ĠField . NAME , ĠField . LAT _ L NG )) ĊĠĠĠĠĠĠĠ Ġac support Fragment . setOn Place Selected Listener ( this ) ĊĠĠĠĠĠĠĠ Ġac support Fragment . view ?. set BackgroundColor ( Color . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= ĠfindViewById < Button >( R . id . update ) ĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Map () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( android . Manifest . permission . ACCESS _ F INE _ LOCATION ), ĠLOC ATION _ PERMISSION _ REQUEST _ CODE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Intent Ġ= ĠIntent ( this @ Maps Activity , ĠSpl ash :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Maps Activity . startActivity ( main Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Map . is My Location Enabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġlm . request Location Updates (" gps ", 0 , 0 f , this ) ĊĠĠĠĠĠĠĠ Ġlm . request Location Updates (" network ", 0 , 0 f , this ) ĊĠĠĠĠĠĠĠ Ġlm . request Location Updates ( Location Manager . PAS SIVE _ PROVIDER , 0 , 0 f , this ) ĊĊĠĠĠĠĠĠĠ ĠsetUp Mocks () ĊĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= Ġthis . get SharedPreferences (" mock _ location ", Ġandroid . content . Context . MODE _ PRIVATE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlat Lng Ġ= ĠLat Lng ( shared Preferences . get Float (" lat ", Ġ 3 7 . 4 2 2 F ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . get Float (" long ", Ġ- 1 2 2 . 0 8 4 F ). toDouble ()) ĊĠĠĠĠĠĠĠ Ġm Map . animate Camera ( Camera Update Factory . new LatLng Zoom ( lat Lng , Ġ 7 f )) ĊĠĠĠĠĠĠĠ Ġplace Marker On Map ( lat Lng ) ĊĠĠĠĠĠĠĠ Ġupdate Location ( lat Lng ) ĊĠĠĠĠĠĠĠ Ġselected Ġ= Ġlat Lng ĊĠĠĠĠĠĠĠ Ġlocation Ġ= Ġlat Lng ĊĊĠĠĠĠĠĠĠ Ġtimer Ġ= Ġtimer ( period Ġ= Ġ 2 0 0 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Location ( location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Mocks Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= Ġlm . get Provider ( Location Manager . NETWORK _ PROVIDER ) ĊĠĠĠĠĠĠĠ Ġlm . add Test Provider ( provider . name , Ġprovider . requires Network (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . requires S atellite (), Ġprovider . requires Cell (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . has Mon etary Cost (), Ġprovider . supports Alt itude (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . supports Speed (), Ġprovider . supports Be aring (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . power Requirement , Ġprovider . accuracy ) ĊĠĠĠĠĠĠĠ Ġval Ġprovider gps Ġ= Ġlm . get Provider ( Location Manager . GPS _ PROVIDER ) ĊĠĠĠĠĠĠĠ Ġlm . add Test Provider ( provider gps . name , Ġprovider gps . requires Network (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider gps . requires S atellite (), Ġprovider gps . requires Cell (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider gps . has Mon etary Cost (), Ġprovider gps . supports Alt itude (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider gps . supports Speed (), Ġprovider gps . supports Be aring (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider gps . power Requirement , Ġprovider gps . accuracy ) ĊĠĠĠĠĠĠĠ Ġlm . set Test Provider Enabled ( Location Manager . GPS _ PROVIDER , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġlm . set Test Provider Enabled ( Location Manager . NETWORK _ PROVIDER , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġf used Location Client . set Mock Mode ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ ĠsetUp Map () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplace Marker On Map ( location : ĠLat Lng ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Map . clear () ĊĠĠĠĠĠĠĠ Ġval Ġmarker Options Ġ= ĠMarker Options (). position ( location ) ĊĠĠĠĠĠĠĠ Ġm Map . add Marker ( marker Options ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Location ( p 0 : ĠLat Lng ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfake Point Ġ= ĠLocation ( Location Manager . GPS _ PROVIDER ) ĊĠĠĠĠĠĠĠ Ġfake Point . latitude Ġ= Ġp 0 . latitude ĊĠĠĠĠĠĠĠ Ġfake Point . longitude Ġ= Ġp 0 . longitude ĊĠĠĠĠĠĠĠ Ġfake Point . accuracy Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġfake Point . time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġfake Point . altitude Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfake Point . elapsed Realtime Nan os Ġ= ĠSystem Clock . elapsed Realtime Nan os () ĊĊĠĠĠĠĠĠĠ Ġlocation Ġ= Ġp 0 ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠ Ġeditor . put Float (" lat ", Ġp 0 . latitude . toFloat ()) ĊĠĠĠĠĠĠĠ Ġeditor . put Float (" long ", Ġp 0 . longitude . toFloat ()) ĊĠĠĠĠĠĠĠ Ġeditor . apply () ĊĊĠĠĠĠĠĠĠ Ġlm . set Test Provider Location ( Location Manager . GPS _ PROVIDER , Ġfake Point ) ĊĠĠĠĠĠĠĠ Ġfake Point . provider Ġ= ĠLocation Manager . NETWORK _ PROVIDER ĊĠĠĠĠĠĠĠ Ġlm . set Test Provider Location ( Location Manager . NETWORK _ PROVIDER , Ġfake Point ) ĊĠĠĠĠĠĠĠ Ġf used Location Client . set Mock Location ( fake Point ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMan ip ulates Ġthe Ġmap Ġonce Ġavailable . ĊĠĠĠĠ Ġ* ĠThis Ġcallback Ġis Ġtriggered Ġwhen Ġthe Ġmap Ġis Ġready Ġto Ġbe Ġused . ĊĠĠĠĠ Ġ* ĠThis Ġis Ġwhere Ġwe Ġcan Ġadd Ġmarkers Ġor Ġlines , Ġadd Ġlisteners Ġor Ġmove Ġthe Ġcamera . ĠIn Ġthis Ġcase , ĊĠĠĠĠ Ġ* Ġwe Ġjust Ġadd Ġa Ġmarker Ġnear ĠSy dn ey , ĠA ustralia . ĊĠĠĠĠ Ġ* ĠIf ĠGoogle ĠPlay Ġservices Ġis Ġnot Ġinstalled Ġon Ġthe Ġdevice , Ġthe Ġuser Ġwill Ġbe Ġpromp ted Ġto Ġinstall ĊĠĠĠĠ Ġ* Ġit Ġinside Ġthe ĠSupport Map Fragment . ĠThis Ġmethod Ġwill Ġonly Ġbe Ġtriggered Ġonce Ġthe Ġuser Ġhas ĊĠĠĠĠ Ġ* Ġinstalled ĠGoogle ĠPlay Ġservices Ġand Ġreturned Ġto Ġthe Ġapp . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Map Ready ( google Map : ĠGoogle Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Map Ġ= Ġgoogle Map ĊĠĠĠĠĠĠĠ Ġlm Ġ= Ġthis . getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetUp Map () ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : Ġjava . lang . Security Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage (" Please Ġset ĠApp Ġas ĠMock ĠLocation ĠApp Ġin ĠDeveloper ĠSettings ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Neutral Button (" OK ") Ġ{ _, _-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeds Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Settings . ACTION _ APPLICATION _ DE VELO P MENT _ SETTINGS )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalert Dialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Map . ui Settings . is Zoom Controls Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Map . set Padding ( 0 , 1 5 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠ Ġm Map . setOn Map ClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Map Click ( p 0 : ĠLat Lng ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( android . Manifest . permission . ACCESS _ F INE _ LOCATION ), ĠLOC ATION _ PERMISSION _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Intent Ġ= ĠIntent ( this @ Maps Activity , ĠSpl ash :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Maps Activity . startActivity ( main Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( p 0 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Marker On Map ( p 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġp 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif ( needs Setup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetUp Map () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeds Setup Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : Ġjava . lang . Security Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage (" Please Ġset ĠApp Ġas ĠMock ĠLocation ĠApp Ġin ĠDeveloper ĠSettings ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Neutral Button (" OK ") Ġ{ _, _-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeds Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Settings . ACTION _ APPLICATION _ DE VELO P MENT _ SETTINGS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalert Dialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }