package Ġcom . fly bits . samples . android . basics . workers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġandroidx . work . Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . fly bits . commons . library . api . results . callbacks . Basic Result Callback Ċ import Ġcom . fly bits . commons . library . exceptions . Fly bits Exception Ċ import Ġcom . fly bits . context . plugins . location . Location Data Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġcom . google . android . gms . tasks . Tasks Ċ import Ġjava . util . concurrent . ExecutionException Ċ Ċ class ĠPeriod ic Location Retrie val Worker ( context : ĠContext , Ġworker Parameters : ĠWorker Parameters ) Ġ: ĊĠĠĠ ĠWorker ( context , Ġworker Parameters ){ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf used Location Client : ĠF used Location Provider Client ĊĊĠĠĠ Ġoverride Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġf used Location Client Ġ= ĠLocation Services . getF used Location Provider Client ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Network Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis G ps Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Manager Ġ= Ġapplication Context . getSystem Service ( Context . LOCATION _ SERVICE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Manager Ġis ĠLocation Manager ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Network Enabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Manager . is Provider Enabled ( Location Manager . NETWORK _ PROVIDER ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis G ps Enabled Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Manager . is Location Enabled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Manager . is Provider Enabled ( Location Manager . GPS _ PROVIDER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġlocation Manager . is Provider Enabled ( Location Manager . PAS SIVE _ PROVIDER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is G ps Enabled Ġ|| Ġis Network Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUsing ĠTasks . await Ġto Ġget Ġthe Ġresult Ġsynchronous ly Ġwithout Ġcallback . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Location Ġ= ĠTasks . await ( f used Location Client . last Location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Location Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Send ĠTo ĠFly bits ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠLocation Data ( last Location ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Null Ġis Ġfor Ġcallback Ġwhich Ġyou Ġcan Ġimplement Ġbut Ġi Ġam Ġnot Ġsure Ġif Ġyou Ġcare Ġabout Ġthe Ġresult . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . update Now ( application Context , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . retry () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġreturn ĠResult . failure () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠExecution Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Something Ġwent Ġwrong ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Something Ġwent Ġwrong ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠ Ġ} Ċ }