package Ġio . github . ach mad h af id . sample _ app . activity Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . location . Location Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . android . gms . location . Location Request Ċ import Ġio . github . ach mad h af id . sample _ app . Dialog Ċ import Ġio . github . ach mad h af id . sample _ app . PREFER ENCE _ KEY _ THEME Ċ import Ġio . github . ach mad h af id . sample _ app . R Ċ import Ġio . github . ach mad h af id . sample _ app . TRACK ING _ FAST EST _ INTERVAL Ċ import Ġio . github . ach mad h af id . sample _ app . TRACK ING _ INTERVAL Ċ import Ġio . github . ach mad h af id . sample _ app . databinding . Activity Demo Binding Ċ import Ġio . github . ach mad h af id . simple loc . Simple Loc Client Ċ import Ġio . github . ach mad h af id . simple loc . Simple Loc Tracker Ċ import Ġio . github . ach mad h af id . simple loc . on Location Found Ċ import Ġio . github . ach mad h af id . simple loc . on Location Permission Result Ċ import Ġio . github . ach mad h af id . simple loc . on Location Service Repair Error Ċ import Ġio . github . ach mad h af id . simple loc . on Location Service Repair Result Ċ import Ġio . github . ach mad h af id . simple loc . on Location Settings Unavailable Ċ import Ġio . github . ach mad h af id . simple loc . on Open Permission Setting Canceled Ċ import Ġio . github . ach mad h af id . simple loc . on Permission R ationale Canceled Ċ import Ġio . github . ach mad h af id . simple loc . on Running Ċ import Ġio . github . ach mad h af id . simple loc . on Stopped Ċ import Ġio . github . ach mad h af id . simple loc . on Un res olvable Error Ċ import Ġio . github . ach mad h af id . simple loc . open In G Maps Ċ import Ġio . github . ach mad h af id . simple loc . simple Loc Tracker Ċ import Ġio . github . ach mad h af id . simple loc . toggle Ċ import Ġio . github . ach mad h af id . simple loc . with Request Ċ import Ġio . github . ach mad h af id . simple pref . Simple Pref Ċ import Ġio . github . ach mad h af id . simple pref . simple Pref Ċ import Ġio . github . ach mad h af id . z pack . extension . toast Short Ċ import Ġio . github . ach mad h af id . z pack . extension . toggle Theme Ċ import Ġio . github . ach mad h af id . z pack . extension . view . invisible Ċ import Ġio . github . ach mad h af id . z pack . extension . view . setText Res Ċ import Ġio . github . ach mad h af id . z pack . extension . view . visible Ċ import Ġio . github . ach mad h af id . z pack . extension . view . visible If Ċ import Ġkotlinx . android . synt hetic . main . activity _ demo . btn Show Location Ċ Ċ class ĠDemo Activity Ġ: ĠAppCompatActivity (), ĠSimple Loc Client , ĠSimple Pref Ġ{ ĊĊĠĠĠ Ġ// region ĠPreference ĊĊĠĠĠ Ġprivate Ġvar Ġapp Theme : ĠInt ? Ġby Ġsimple Pref ( PREFER ENCE _ KEY _ THEME ) ĊĠĠĠ Ġprivate Ġvar Ġis Re starting Ġby Ġsimple Pref Ġ{ Ġfalse Ġ} ĊĠĠĠ Ġprivate Ġvar Ġis Running Ġby Ġsimple Pref Ġ{ Ġfalse Ġ} ĊĊĠĠĠ Ġ// endregion ĊĠĠĠ Ġ// region ĠView ĠBinding ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠActivity Demo Binding Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Demo Binding . inflate ( layout Inflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĠĠĠ Ġ// region ĠLocation ĠTracker ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Location : ĠLocation ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġlocation Tracker Ġ= Ġsimple Loc Tracker Ġ{ ĊĠĠĠĠĠĠĠ Ġresolve Address Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwith Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠLocation Request . PRIORITY _ HIGH _ AC CUR ACY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterval Ġ= ĠTR ACK ING _ INTERVAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfast est Interval Ġ= ĠTR ACK ING _ FAST EST _ INTERVAL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Running Ġ{ Ġ_, Ġis Re started Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn . setText Res ( R . string . label _ stop _ tracking ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Re started ) ĠR . string . message _ tracking _ re started ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠR . string . message _ tracking _ started ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Stopped Ġ{ Ġ_, Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Show Location . invisible () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Loc Tracker . Stop State . PA USED _ BY _ LI FE CYCLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ tracking _ paused ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Loc Tracker . Stop State . DESTROY ED _ BY _ LI FE CYCLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Re starting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ on Stopped ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ tracking _ destroy ed _ by _ lifecycle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Loc Tracker . Stop State . STOP PED _ BY _ SYSTEM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn . setText Res ( R . string . label _ start _ tracking ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ tracking _ be come _ un available ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Loc Tracker . Stop State . STOP PED _ BY _ USER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn . setText Res ( R . string . label _ start _ tracking ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ tracking _ stopped _ by _ user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Location Found Ġ{ Ġ_, Ġlocation , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Location Ġ= Ġlocation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Show Location . visible () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Permission R ationale Canceled Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ permission _ c anceled ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Open Permission Setting Canceled Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ permission _ setting _ c anceled ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Location Service Repair Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . message _ location _ service _ is _ not _ available ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Location Settings Unavailable Ġ{ Ġ_, Ġis Air Plane Mode On Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Air Plane Mode On ) ĠR . string . message _ location _ air _ plane _ mode _ on ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠR . string . message _ location _ settings _ un available ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Un res olvable Error Ġ{ Ġ_, Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( getString ( R . string . message _ location _ setting _ error , Ġexception . message )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĠĠĠ Ġ// region ĠLifecycle ĠCallback ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġbinding . btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Tracker . toggle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Show Location . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Location ?. open In G Maps ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Show Location . visible If Ġ{ Ġcurrent Location Ġ!= Ġnull Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġis Re starting Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġis Re starting Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( isRunning ) Ġlocation Tracker . enable () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main _ toolbar , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . id . action _ toggle _ theme Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Theme Ġ= Ġtoggle Theme () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ) ĊĠĠĠĠĠĠĠ Ġon Location Permission Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code , Ġpermissions , Ġgrant Results , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Tracker , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog . ration ale , ĠDialog . do Not Ask Again ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġon Location Service Repair Result ( request Code , ĠresultCode , Ġlocation Tracker ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion Ċ Ċ } Ċ