package Ġcom . sd ow ard . aware ness . android Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . support . v 4 . app . Fragment Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Bottom Sheet Behavior Ċ import Ġandroid . support . design . widget . Bottom Sheet Behavior .* Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . google . android . gms . aware ness . Aware ness Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . Support Map Fragment Ċ import Ġcom . google . android . gms . maps . model . Circle Options Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġkotlinx . android . synt hetic . main . geo _ fence _ activity .* Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . android . gms . aware ness . fence . Aware ness Fence Ċ import Ġcom . google . android . gms . aware ness . fence . Fence Update Request Ċ import Ġcom . google . android . gms . aware ness . fence . Location Fence Ċ import Ġandroid . content . Intent Ċ Ċ class ĠGeo Fence Activity Ġ: ĠFragment Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclient : ĠGoogle ApiClient Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠGoogle ApiClient . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Api ( Aware ness . API ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġgoogle Map : ĠGoogle Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbottom Sheet Behaviour : ĠBottom Sheet Behavior < LinearLayout > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġfrom ( bottom Sheet Layout ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġlat Lng Ġ= ĠLat Lng ( 0 . 0 , Ġ 0 . 0 )// null Ġis land ĊĠĠĠ Ġval Ġaware ness Intent : ĠPending Intent Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (" com . sd ow ard . aware ness . android . F ENCE ") ĊĠĠĠĠĠĠĠ ĠPending Intent . get Broadcast ( this , Ġ 0 , Ġintent , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . geo _ fence _ activity ) ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behaviour . state Ġ= ĠSTATE _ HIDDEN ; ĊĠĠĠĠĠĠĠ Ġclient . connect () ĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . support Map Fragment ) Ġas ĠSupport Map Fragment ĊĠĠĠĠĠĠĠ Ġmap Fragment . getMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġgoogle Map Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĠA ware ness . Snapshot Api . getLocation Observable ( client ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġ( latitude , Ġlongitude , Ġaccuracy ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis My Location Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent LatLng Ġ= ĠLat Lng ( latitude , Ġlongitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Camera ( Camera Update Factory . new LatLng Zoom ( current LatLng , Ġ 1 4 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Map ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Lng Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Camera ( Camera Update Factory . new LatLng ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behaviour . state Ġ= ĠSTATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġentering RadioButton . setOnClickListener Ġ{ Ġdw ell Layout . visibility Ġ= ĠView . GONE Ġ} ĊĠĠĠĠĠĠĠ Ġexisting RadioButton . setOnClickListener Ġ{ Ġdw ell Layout . visibility Ġ= ĠView . GONE Ġ} ĊĠĠĠĠĠĠĠ Ġdw ell RadioButton . setOnClickListener Ġ{ Ġdw ell Layout . visibility Ġ= ĠView . VISIBLE Ġ} ĊĠĠĠĠĠĠĠ Ġadd Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name EditText . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Add Ġa Ġname Ġof Ġthe Ġgeo Ġf ence ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Fence : ĠA ware ness Fence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enter ing RadioButton . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Fence Ġ= ĠLocation Fence . enter ing ( lat Lng . latitude , Ġlat Lng . latitude , Ġradius EditText . text . toString (). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( existing RadioButton . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Fence Ġ= ĠLocation Fence . exit ing ( lat Lng . latitude , Ġlat Lng . latitude , Ġradius EditText . text . toString (). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Fence Ġ= ĠLocation Fence .` in `( lat Lng . latitude , Ġlat Lng . latitude , Ġradius EditText . text . toString (). toDouble (), Ġdw ell EditText . text . toString (). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ware ness . Fence Api . update F ences ( client , ĠF ence Update Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Fence ( name EditText . text . toString (), Ġlocation Fence , Ġaware ness Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Geo Ġf ence Ġadded ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behaviour . state Ġ= ĠSTATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠconvertTo Px ( dp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġdp , Ġresources . display Metrics ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient . disconnect () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} Ċ Ċ } Ċ