package Ġcom . lo dz . android . agile dev kt . modules . service . impl Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . location . Location Ċ import Ġandroid . location . Location Listener Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . os . Bundle Ċ import Ġcom . lo dz . android . agile dev kt . App Ċ import Ġcom . lo dz . android . agile dev kt . modules . location . Location Test Activity Ċ import Ġcom . lo dz . android . agile dev kt . modules . location . Location Update Event Ċ import Ġcom . lo dz . android . agile dev kt . modules . service . Service Contract Ċ import Ġcom . lo dz . android . core kt . network . Network Manager Ċ import Ġorg . green robot . event bus . EventBus Ċ Ċ /** Ċ Ġ* Ġ åİŁ çĶŁ GPS å®ļä½į æľįåĬ¡ Ċ Ġ* ĠCreated Ġby Ġz hou L Ġon Ġ 2 0 1 8 / 1 1 / 1 5 . Ċ Ġ*/ Ċ class ĠG ps Location ServiceImpl Ġ: ĠService Contract Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠmContext : Context ĊĊĠĠĠ Ġprivate Ġvar Ġm Location Manager : ĠLocation Manager ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġcontext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġintent . getInt Extra ( Location Test Activity . EXTRA _ TYPE , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= ĠLocation Test Activity . LOCATION _ GPS ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Location Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Location Manager Ġ= ĠmContext . getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( m Location Manager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! m Location Manager !!. is Provider Enabled ( Location Manager . GPS _ PROVIDER )){ // ĠçĶ¨æĪ· æ²¡æľī å¼Ģ GPS å®ļä½į ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstart Location ( m Location Manager !! ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġprivate Ġfun Ġstart Location ( location Manager : ĠLocation Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Manager . request Location Updates ( Location Manager . GPS _ PROVIDER , ĠLocation Test Activity . LOCATION _ INTERVAL _ TIME , Ġ 0 f , Ġm Location Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Location Listener Ġ= Ġobject Ġ: ĠLocation Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Changed ( location : ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlongitude Ġ= Ġlocation . longitude . toString () Ġ// Ġ ç»ı åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlatitude Ġ= Ġlocation . latitude . toString () Ġ// Ġ çº ¬ åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠNetwork Manager . get (). get Operator Info ( App . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm cc Ġ= Ġinfo ?. m cc Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm nc Ġ= Ġinfo ?. m nc Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlac Ġ= Ġinfo ?. lac Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcid Ġ= Ġinfo ?. cid Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Ġ= Ġ" æĽ´æĸ° æĪĲåĬŁ " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Location Update Event ( true , Ġlongitude , Ġlatitude , Ġm cc , Ġm nc , Ġlac , Ġcid , Ġlog )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Status Changed ( provider : ĠString ?, Ġstatus : ĠInt , Ġextras : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Status Changed ( provider , Ġstatus , Ġextras ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Ġ= Ġ" on Status Changed ĠĠ Ġ---> ĠĠ Ġprovider Ġ: Ġ$ provider ĠĠĠ Ġstatus Ġ: Ġ$ status " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Location Update Event ( false , Ġ"", Ġ"", Ġ"", Ġ"", Ġ"", Ġ"", Ġlog )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Enabled ( provider : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Provider Enabled ( provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Ġ= Ġ" on Provider Enabled ĠĠ Ġ---> ĠĠ Ġprovider Ġ: Ġ$ provider " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Location Update Event ( false , Ġ"", Ġ"", Ġ"", Ġ"", Ġ"", Ġ"", Ġlog )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Disabled ( provider : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Provider Disabled ( provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Ġ= Ġ" on Provider Disabled ĠĠ Ġ---> ĠĠ Ġprovider Ġ: Ġ$ provider " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Location Update Event ( false , Ġ"", Ġ"", Ġ"", Ġ"", Ġ"", Ġ"", Ġlog )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Location Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Location Manager !!. remove Updates ( m Location Listener )// éĶĢ æ¯ ģ æĹ¶ åħĪ ç§»éĻ¤ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Location Manager Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }