/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 Ġvin ay ag as und ar Ċ Ġ* ĠCopyright Ġ 2 0 1 7 Ġrand hir gu pta Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġyou . dev kn ights . minimal weather . ui . landing Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . arch . lifecycle . LiveData Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location . Location Ċ import Ġandroid . os . Looper Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Availability Ċ import Ġcom . google . android . gms . location . Location Callback Ċ import Ġcom . google . android . gms . location . Location Request Ċ import Ġcom . google . android . gms . location . Location Result Ċ import Ġcom . google . android . gms . location . Location Services Ċ Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author Ġvin ay ag as und ar Ċ Ġ*/ Ċ class ĠLocation LiveData Ġ@ Inject Ċ constructor ( private Ġval ĠmContext : ĠContext ) Ġ: ĠLive Data < Location >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm F used Location Provider Client : ĠF used Location Provider Client ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġm Location Callback Ġ= Ġobject Ġ: ĠLocation Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Result ( location Result : ĠLocation Result ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Location Result ( location Result ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġlocation Result ?. last Location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġlocation ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callback () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Availability ( location Availability : ĠLocation Availability ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Location Availability ( location Availability ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Availability ?. is Location Available Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetLast Known Location () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġis Permission Granted : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠActivity Compat . check Self Permission ( mContext , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠActivity Compat . check Self Permission ( mContext , ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĊĠĠĠ Ġprivate Ġval Ġf used Location Provider Client : ĠF used Location Provider Client ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mF used Location Provider Client Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm F used Location Provider Client Ġ= ĠLocation Services ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getF used Location Provider Client ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm F used Location Provider Client Ġas ĠF used Location Provider Client ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġoverride Ġfun Ġon Active () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Active () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Permission Granted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlocation Provider Client Ġ= Ġf used Location Provider Client ĊĠĠĠĠĠĠĠ Ġval Ġlocation Request Ġ= ĠLocation Request . create () ĊĠĠĠĠĠĠĠ Ġlocation Request . priority Ġ= ĠLocation Request . PRIORITY _ HIGH _ AC CUR ACY ĊĠĠĠĠĠĠĠ Ġval Ġlo oper Ġ= ĠL ooper . my Looper () ĊĊĠĠĠĠĠĠĠ Ġlocation Provider Client . request Location Updates ( location Request , Ġm Location Callback , Ġlo oper ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Inactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Inactive () ĊĠĠĠĠĠĠĠ Ġremove Callback () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Provider Client Ġ= Ġf used Location Provider Client ĊĠĠĠĠĠĠĠ Ġlocation Provider Client . remove Location Updates ( m Location Callback ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġprivate Ġfun ĠgetLast Known Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġf used Location Provider Client . last Location ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . result ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ