package Ġnet . v on for st . ev map Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . browser . custom tabs . Custom Tab Color Scheme Params Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Intent Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġnet . v on for st . ev map . api . going electric . Charge Location Ċ import Ġnet . v on for st . ev map . storage . Preference DataSource Ċ import Ġnet . v on for st . ev map . utils . Locale Context Wrapper ĊĊ Ċ const Ġval ĠREQUEST _ LOCATION _ PERMISSION Ġ= Ġ 1 Ċ Ċ class ĠMaps Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġinterface ĠFragment Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Root View (): ĠView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġre enter State : ĠBundle ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĠĠĠ Ġvar Ġfragment Callback : ĠFragment Callback ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprefs : ĠPreference DataSource ĊĊĠĠĠ Ġoverride Ġfun Ġattach Base Context ( new Base : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . attach Base Context ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale Context Wrapper . wrap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Base , ĠPreference DataSource ( new Base ). language ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġset Ġtheme Ġto ĠApp Theme Ġto Ġend Ġlaunch Ġscreen ĊĠĠĠĠĠĠĠ Ġset Theme ( R . style . App Theme ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ maps ) ĊĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . map , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fav s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . about , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . settings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Drawer Layout >( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Navigation View >( R . id . nav _ view ). setup With Nav Controller ( nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġprefs Ġ= ĠPreference DataSource ( this ) ĊĊĠĠĠĠĠĠĠ Ġcheck Play Services ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To ( ch arger : ĠCharge Location ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgoogle Ġmaps Ġnavigation ĊĠĠĠĠĠĠĠ Ġval Ġcoord Ġ= Ġch arger . coordinates ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" google . navigation : q =${ coord . lat }, ${ coord . lng }") ĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . navigate Use Maps Ġ&& Ġintent . resolve Activity ( package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfallback : Ġgeneric Ġgeo Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Location ( ch arger ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Location ( ch arger : ĠCharge Location ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoord Ġ= Ġch arger . coordinates ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" geo : 0 , 0 ? q =${ coord . lat }, ${ coord . lng } (${ ch arger . name }) ") ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . resolve Activity ( package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcb Ġ= Ġfragment Callback Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . getRoot View (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . no _ maps _ app _ found , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Url ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠCustom Tabs Intent . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Color Scheme Params ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Tab Color Scheme Params . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( Context Compat . getColor ( this , ĠR . color . color Primary )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġintent . launch Url ( this , ĠUri . parse ( url )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshare Url ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Type (" text / plain ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} Ċ } Ċ