package Ġcom . s ild ian . apps . to ge trail . common . utils . location Helpers Ċ Ċ import Ġandroid . os . Looper Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Callback Ċ import Ġcom . google . android . gms . location . Location Request Ċ import Ġcom . s ild ian . apps . to ge trail . common . utils . Device Utilities Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /**************************************************************** ******************************** * Ċ Ġ* ĠAllows Ġto Ġcontinuous ly Ġupdate Ġthe Ġuser Ġlocation Ċ Ġ***************************************************************** ************************ *******/ Ċ Ċ @ Singleton Ċ open Ġclass ĠUser Location Continuous Finder Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprotected Ġval Ġlocation Provider Client : ĠF used Location Provider Client ) Ċ { ĊĊĠĠĠ Ġ@ Throws ( User Location Exception :: class ) ĊĠĠĠ Ġopen Ġfun Ġstart Location Updates ( interval Millis : ĠLong , Ġcallback : ĠLocation Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Device Utilities . is G ps Available ( location Provider Client . application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Request Ġ= ĠLocation Request . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterval Ġ= Ġinterval Millis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfast est Interval Ġ= Ġinterval Millis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠLocation Request . PRIORITY _ HIGH _ AC CUR ACY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . location Provider Client . request Location Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . get Main Looper () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUser Location Exception ( User Location Exception . ErrorCode . ACCESS _ NOT _ GRAN TED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUser Location Exception ( User Location Exception . ErrorCode . ERROR _ UNKNOWN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUser Location Exception ( User Location Exception . ErrorCode . GPS _ UN AVAILABLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġstop Location Updates ( callback : ĠLocation Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . location Provider Client . remove Location Updates ( callback ) ĊĠĠĠ Ġ} Ċ }