package Ġcom . v ictory il . well der . ui . register Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . location . Location Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Looper Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġandroid . view binding . library . fragment . view Binding Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . github . d hav al 2 4 0 4 . image picker . Image Picker Ċ 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 . google . android . gms . location . Location Result Ċ import Ġcom . google . android . gms . tasks . Continuation Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . firestore . Geo Point Ċ import Ġcom . google . firebase . firestore . k tx . firestore Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . google . firebase . storage . Storage Reference Ċ import Ġcom . google . firebase . storage . Storage Task Ċ import Ġcom . google . firebase . storage . Upload Task Ċ import Ġcom . google . firebase . storage . k tx . storage Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . v ictory il . well der . R Ċ import Ġcom . v ictory il . well der . databinding . Register Fragment Binding Ċ import Ġcom . v ictory il . well der . instances . Firebase Helper Ċ import Ġcom . v ictory il . well der . instances . Navigation Helper Ċ import Ġcom . v ictory il . well der . utils . debug Ċ import Ġcom . v ictory il . well der . utils . g one Unless Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġwww . san ju . motion toast . Motion Toast Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ class ĠRegister Fragment Ġ: ĠFragment ( R . layout . register _ fragment ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠRegister Fragment Binding Ġby Ġview Binding () ĊĠĠĠ Ġprivate Ġvar Ġimage URI : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcan Register Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġstorage Ref : ĠStorage Reference ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġuser : ĠHashMap < String , ĠAny > Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval ĠcurrentUser : ĠFirebase User ? Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĠĠĠ Ġprivate Ġval Ġf used Location Provider Client : ĠF used Location Provider Client Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠF used Location Provider Client ( require Activity ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġlocation Request : ĠLocation Request Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLocation Request () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġlocation CallBack Ġ= Ġobject Ġ: ĠLocation Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Result ( p 0 : ĠLocation Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Location : ĠLocation Ġ= Ġp 0 . last Location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser [" geo "] Ġ= ĠGeo Point ( last Location . latitude , Ġlast Location . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Register Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup s () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen G ps () ĊĠĠĠĠĠĠĠ Ġbinding . btn set G ps . setOnClickListener Ġ{ Ġopen G ps () Ġ} ĊĊĠĠĠĠĠĠĠ Ġstorage Ref Ġ= ĠFirebase . storage . reference . child (" users / profile ") ĊĠĠĠĠĠĠĠ Ġbinding . btn Register . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbinding . ed Name . setText ("") ĊĠĠĠĠĠĠĠ Ġbinding . ed Name . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Register . isEnabled Ġ= Ġs !!. isNotBlank () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . btn Edit Photo . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Picker . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. crop ( 1 2 8 F , Ġ 1 2 8 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Crop Ġimage ( Optional ), ĠCheck ĠCustom ization Ġfor Ġmore Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compress ( 1 0 2 4 ) ĠĠĠĠĠĠĠĠĠĠĠ Ġ// Final Ġimage Ġsize Ġwill Ġbe Ġless Ġthan Ġ 1 ĠMB ( Optional ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. max Result Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Ġ{ ĠresultCode , Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Image ĠUri Ġwill Ġnot Ġbe Ġnull Ġfor ĠRESULT _ OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage URI Ġ= Ġdata ?. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . img Profile . setImage URI ( image URI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( image URI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . img Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// You Ġcan Ġget ĠFile Ġobject Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Picker . getFile ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// You Ġcan Ġalso Ġget ĠFile ĠPath Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Picker . get FilePath ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Picker . RESULT _ ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠImage Picker . getError ( data ), ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Task ĠCancel led ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Register . setOnClickListener Ġ{ Ġregister Data () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen G ps () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . btn set G ps . g one Unless ( false ) ĊĠĠĠĠĠĠĠ ĠgetLast Location () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġregister Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser [" profile Img "] Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġbase 6 2 chars Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 ABCDEF GH IJ KL MN OP Q RST UV W XYZ " ĊĠĠĠĠĠĠĠ Ġvar Ġnew ID Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 1 .. 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew ID Ġ+= Ġbase 6 2 chars . random () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuser [" TAG "] Ġ= Ġnew ID ĊĠĠĠĠĠĠĠ Ġuser [" is Online "] Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ(! can Register ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Toast . dark Toast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Error : ĠGPS ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . error _ gps ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Toast . TO AST _ ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Toast . GR AV ITY _ BOTTOM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Toast . LONG _ DURATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType face . DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn set G ps . g one Unless ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Register . start Animation () ĊĠĠĠĠĠĠĠ Ġ// Sub ir Ġfoto ĊĠĠĠĠĠĠĠ Ġuser [" phone "] Ġ= ĠFirebase Auth . getInstance (). currentUser . phoneNumber Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġuser [" name "] Ġ= Ġbinding . ed Name . text . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( image URI Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ref Ġ= Ġstorage Ref !!. child ( System . currentTimeMillis (). toString () Ġ+ Ġ". jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupload Task : ĠStorage Task < *> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Task Ġ= Ġfile Ref . put File ( image URI !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Task . continue With Task ( Continuation < Upload Task . Task Snapshot , ĠTask < Uri >> Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . exception ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Continuation Ġfile Ref . download Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownload Url Ġ= Ġtask . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġdownload Url . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser [" profile Img "] Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate User () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate User () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠFirebase . firestore ĊĠĠĠĠĠĠĠ Ġdb . collection (" users "). document ( currentUser !!. uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Helper . load Firebase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Helper . set My User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Helper . navigate To Main () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Permission (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠ Ġ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠ Ġ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĊĠĠĠ Ġprivate Ġfun Ġis Location Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Manager : ĠLocation Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ĊĠĠĠĠĠĠĠ Ġreturn Ġlocation Manager . is Provider Enabled ( Location Manager . GPS _ PROVIDER ) Ġ|| Ġlocation Manager . is Provider Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Manager . NETWORK _ PROVIDER ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Permission () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetLast Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Permission ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Location Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf used Location Provider Client . last Location . add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget New Location () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser [" geo "] Ġ= ĠGeo Point ( task . result . latitude , Ġtask . result . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcan Register Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please ĠEnable Ġyour Ġlocation Ġservice ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget New Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Request . priority Ġ= ĠLocation Request . PRIORITY _ HIGH _ AC CUR ACY ĊĠĠĠĠĠĠĠ Ġlocation Request . interval Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġlocation Request . fast est Interval Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġlocation Request . num Updates Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġif Ġ(! check Permission ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( Looper . my Looper () Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġf used Location Provider Client . request Location Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Request , location CallBack , ĠL ooper . my Looper () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 5 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug (" con ced ido ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} Ċ }