package Ġcom . ct sed uc are . cts location Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location .* Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfld Latitude : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld Longitude : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġfld Postal Code : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld Street : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld Number : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld District : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld City : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld State : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfld Country : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġlocation Manager : ĠLocation Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlocation Listener : ĠLocation Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . main _ activity ) ĊĊĠĠĠĠĠĠĠ Ġfld Latitude Ġ= ĠfindViewById ( R . id . fld Latitude ) ĊĠĠĠĠĠĠĠ Ġfld Longitude Ġ= ĠfindViewById ( R . id . fld Longitude ) ĊĠĠĠĠĠĠĠ Ġfld Postal Code Ġ= ĠfindViewById ( R . id . fld Postal Code ) ĊĠĠĠĠĠĠĠ Ġfld Street Ġ= ĠfindViewById ( R . id . fld Street ) ĊĠĠĠĠĠĠĠ Ġfld Number Ġ= ĠfindViewById ( R . id . fld Number ) ĊĠĠĠĠĠĠĠ Ġfld District Ġ= ĠfindViewById ( R . id . fld District ) ĊĠĠĠĠĠĠĠ Ġfld City Ġ= ĠfindViewById ( R . id . fld City ) ĊĠĠĠĠĠĠĠ Ġfld State Ġ= ĠfindViewById ( R . id . fld State ) ĊĠĠĠĠĠĠĠ Ġfld Country Ġ= ĠfindViewById ( R . id . fld Country ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbtn GPS Location : ĠButton Ġ= ĠfindViewById ( R . id . btn Update Location ) ĊĠĠĠĠĠĠĠ Ġbtn GPS Location . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Location Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Location Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Manager Ġ= Ġbase Context . getSystem Service ( LOCATION _ SERVICE ) Ġas ĠLocation Manager ĊĠĠĠĠĠĠĠ Ġval Ġis Location Enabled Ġ= Ġlocation Manager !!. is Provider Enabled ( Location Manager . GPS _ PROVIDER ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Location Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Location Listener () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Location () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Location Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Listener Ġ= Ġobject Ġ: ĠLocation Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Changed ( location : ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld Latitude !!. text Ġ= Ġlocation . latitude . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld Longitude !!. text Ġ= Ġlocation . longitude . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Data : ĠLocation Data ? Ġ= Ġget Address Info ( location . latitude , Ġlocation . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld Postal Code ?. text Ġ= Ġlocation Data . postal Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld Street ?. text Ġ= Ġlocation Data . street ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld Number ?. text Ġ= Ġlocation Data . number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld District ?. text Ġ= Ġlocation Data . district ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld City ?. text Ġ= Ġlocation Data . city ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld State ?. text Ġ= Ġlocation Data . state ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfld Country ?. text Ġ= Ġlocation Data . country ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Status Changed ( provider : ĠString , Ġstatus : ĠInt , Ġextras : ĠBundle ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Enabled ( provider : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Disabled ( provider : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this @ MainActivity , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this @ MainActivity , ĠarrayOf ( Manifest . permission . ACCESS _ F INE _ LOCATION ), 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Manager !!. request Location Updates ( Location Manager . NETWORK _ PROVIDER , 0 , 0 f , Ġlocation Listener !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Manager !!. request Location Updates ( Location Manager . NETWORK _ PROVIDER , Ġ 0 , Ġ 0 f , Ġlocation Listener !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactive Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog : ĠAlertDialog . Builder Ġ= ĠAlertDialog . Builder ( this @ MainActivity ) ĊĠĠĠĠĠĠĠ Ġalert Dialog . setTitle (" Local izaÃ§Ã£o ĠnÃ£o Ġesta Ġat iva ") ĊĠĠĠĠĠĠĠ Ġalert Dialog . setMessage (" V ocÃª Ġdese ja Ġat ivar Ġa ĠLocal izaÃ§Ã£o Ġpara Ġcontinu ar Ġusando Ġeste Ġaplicativo ?") ĊĠĠĠĠĠĠĠ Ġalert Dialog . set Positive Button (" At ivar " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ LOCATION _ SOURCE _ SETTINGS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog . set Negative Button (" Cancel ar " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠEste Ġevento Ġoc orre Ġquando Ġo ĠusuÃ¡rio Ġat iva Ġa Ġ' Local izaÃ§Ã£o ' ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠRESULT _ OK Ġ&& Ġrequest Code Ġ== Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Location Listener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Address Info ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠLocation Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlocation Data : ĠLocation Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġgcd Ġ= ĠGeo coder ( base Context , ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġvar Ġaddresses : ĠList < Address >? ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddresses Ġ= Ġgcd . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addresses . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Ġ= ĠLocation Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . postal Code Ġ= Ġaddresses [ 0 ]. postal Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . street Ġ= Ġaddresses [ 0 ]. th orough f are ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . number Ġ= Ġaddresses [ 0 ]. sub Th orough f are ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . district Ġ= Ġaddresses [ 0 ]. sub Local ity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . city Ġ= Ġaddresses [ 0 ]. sub Admin Area ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . state Ġ= Ġaddresses [ 0 ]. admin Area ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . country Ġ= Ġaddresses [ 0 ]. country Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlocation Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ------------------------------------------------------------------------------------------------ ---- ĊĠĠĠ Ġ// ĠMENU ĊĠĠĠ Ġ// ------------------------------------------------------------------------------------------------ ---- ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mm i About Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow About () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ------------------------------------------------------------------------------------------------ ---- ĊĠĠĠ Ġ// ĠA BO UT ĊĠĠĠ Ġ// ------------------------------------------------------------------------------------------------ ---- ĊĠĠĠ Ġprivate Ġfun Ġshow About () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ MainActivity , ĠAbout Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} Ċ Ċ }