package Ġcz . cv ut . f uk al han . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Content Values . TAG Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Sender Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . android . gms . common . api . ApiException Ċ import Ġcom . google . android . gms . common . api . Res olvable ApiException Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġcom . google . android . gms . location . Location Request Ċ import Ġcom . google . android . gms . location . Location Settings Response Ċ import Ġcom . google . android . gms . location . Location Settings Request Ċ import Ġcom . google . android . gms . location . Location Settings StatusCode s Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcz . cv ut . f uk al han . common . I On G ps Listener Ċ import Ġcz . cv ut . f uk al han . shared . Constants Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġorg . k oin . core . inject Ċ Ċ /** Ċ Ġ* ĠDetermine Ġif ĠGPS Ġis Ġturned Ġon Ġin Ġthe Ġdevice , Ċ Ġ* Ġif Ġyes , Ġchange Ġset Ġgps Status Ġin ĠI On G ps Listener Ġto Ġtrue , Ċ Ġ* Ġif Ġnot , Ġmake Ġdialog Ġfor Ġuser Ġto Ġturn Ġthe Ġgps Ġon Ċ Ġ*/ Ċ object ĠG ps Util Ġ: ĠK oin Component Ġ{ ĊĠĠĠ Ġprivate Ġval Ġapp Context : ĠContext Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġsettings Client Ġ= ĠLocation Services . get Settings Client ( app Context ) ĊĊĠĠĠ Ġprivate Ġval Ġlocation Request Ġ= ĊĠĠĠĠĠĠĠ ĠLocation Request . create () ĊĠĠĠĠĠĠĠ Ġ. set Priority ( Location Request . PRIORITY _ HIGH _ AC CUR ACY ) ĊĠĠĠĠĠĠĠ Ġ. set Interval ( Constants . UPDATE _ INTERVAL ) ĊĊĠĠĠ Ġprivate Ġval Ġlocation Settings Request Ġ= ĊĠĠĠĠĠĠĠ ĠLocation Settings Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Location Request ( location Request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Always Show ( true ). build () ĊĊĠĠĠ Ġprivate Ġval Ġtask : ĠTask < Location Settings Response > Ġ= Ġsettings Client . check Location Settings ( location Settings Request ) ĊĊĠĠĠ Ġfun Ġturn G ps On ( on G ps Listener : ĠI On G ps Listener , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask . add On Complete Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon G ps Listener . gps Status ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" GPS ", Ġ" enabled ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check Location Settings ( location Settings Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon G ps Listener . gps Status ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ(( e Ġas ĠApiException ). statusCode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Settings StatusCode s . RESOL UTION _ REQUIRED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr ae Ġ= Ġe Ġas ĠRes olvable ApiException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ae . start Resolution For Result ( context Ġas ĠActivity , ĠConstants . GPS _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIntent Sender . Send Intent Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Pending Intent Ġunable Ġto Ġexecute Ġrequest .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Settings StatusCode s . SETTINGS _ CHANGE _ UN AVAILABLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" Location Ġsettings Ġare Ġin ade qu ate Ġand Ġcannot Ġbe Ġfixed Ġhere . ĠFix Ġin ĠSettings ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠerrorMessage , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }