package Ġcom . mapbox . navigation . examples . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Image Button Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . AppCompat Image Button Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . mapbox . android . core . location . Location Engine Callback Ċ import Ġcom . mapbox . android . core . location . Location Engine Provider Ċ import Ġcom . mapbox . android . core . location . Location Engine Result Ċ import Ġcom . mapbox . api . directions . v 5 . Directions Criteria Ċ import Ġcom . mapbox . api . directions . v 5 . models . Banner Instructions Ċ import Ġcom . mapbox . api . directions . v 5 . models . Directions Route Ċ import Ġcom . mapbox . api . directions . v 5 . models . Route Options Ċ import Ġcom . mapbox . api . directions . v 5 . models . Voice Instructions Ċ import Ġcom . mapbox . mapbox sdk . Map box Ċ import Ġcom . mapbox . mapbox sdk . camera . Camera Update Factory Ċ import Ġcom . mapbox . mapbox sdk . geometry . LatLng Ċ import Ġcom . mapbox . mapbox sdk . location . Location Component Ċ import Ġcom . mapbox . mapbox sdk . location . Location Component Activation Options Ċ import Ġcom . mapbox . mapbox sdk . location . On Camera Tracking Changed Listener Ċ import Ġcom . mapbox . mapbox sdk . location . modes . Camera Mode Ċ import Ġcom . mapbox . mapbox sdk . location . modes . Render Mode Ċ import Ġcom . mapbox . mapbox sdk . maps . Map box Map Ċ import Ġcom . mapbox . mapbox sdk . maps . On Map Ready Callback Ċ import Ġcom . mapbox . mapbox sdk . maps . Style Ċ import Ġcom . mapbox . navigation . base . internal . extensions . apply Default Params Ċ import Ġcom . mapbox . navigation . base . internal . extensions . coordinates Ċ import Ġcom . mapbox . navigation . base . trip . model . Route Progress Ċ import Ġcom . mapbox . navigation . core . Map box Navigation Ċ import Ġcom . mapbox . navigation . core . directions . session . Routes Request Callback Ċ import Ġcom . mapbox . navigation . core . replay . route . Replay Route Location Engine Ċ import Ġcom . mapbox . navigation . core . telemetry . events . Feedback Event Ċ import Ġcom . mapbox . navigation . core . trip . session . Banner Instructions Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Route Progress Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Trip Session State Ċ import Ġcom . mapbox . navigation . core . trip . session . Trip Session State Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Voice Instructions Observer Ċ import Ġcom . mapbox . navigation . examples . R Ċ import Ġcom . mapbox . navigation . examples . core . Instruction View Activity Ċ import Ġcom . mapbox . navigation . examples . utils . Utils Ċ import Ġcom . mapbox . navigation . examples . utils . extensions . to Point Ċ import Ġcom . mapbox . navigation . ui . Navigation Button Ċ import Ġcom . mapbox . navigation . ui . Sound Button Ċ import Ġcom . mapbox . navigation . ui . camera . Dynamic Camera Ċ import Ġcom . mapbox . navigation . ui . camera . Navigation Camera Ċ import Ġcom . mapbox . navigation . ui . feedback . Feedback Bottom Sheet Ċ import Ġcom . mapbox . navigation . ui . feedback . Feedback Bottom Sheet Listener Ċ import Ġcom . mapbox . navigation . ui . feedback . Feedback Item Ċ import Ġcom . mapbox . navigation . ui . instruction . Navigation Alert View Ċ import Ġcom . mapbox . navigation . ui . legacy . Navigation Constants Ċ import Ġcom . mapbox . navigation . ui . map . Navigation Map box Map Ċ import Ġcom . mapbox . navigation . ui . map . On Way Name Changed Listener Ċ import Ġcom . mapbox . navigation . ui . summary . Summary Bottom Sheet Ċ import Ġcom . mapbox . navigation . ui . utils . View Utils Ċ import Ġcom . mapbox . navigation . ui . voice . Navigation Speech Player Ċ import Ġcom . mapbox . navigation . ui . voice . Speech Player Provider Ċ import Ġcom . mapbox . navigation . ui . voice . Voice Instruction Loader Ċ import Ġjava . io . File Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util . Locale Ċ import Ġkotlinx . android . synt hetic . main . activity _ custom _ ui _ component _ style .* Ċ import Ġokhttp 3 . Cache Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠTo Ġensure Ġproper Ġfunction ing Ġof Ġthis Ġexample Ġmake Ġsure Ġyour ĠLocation Ġis Ġturned Ġon . Ċ Ġ*/ Ċ class ĠCustom UI Component Style Activity Ġ: ĠAppCompatActivity (), ĠOn Map Ready Callback , ĊĠĠĠ ĠFeedback Bottom Sheet Listener , ĠOn Way Name Changed Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġreplay Route Location Engine Ġby Ġlazy Ġ{ ĠRe play Route Location Engine () Ġ} ĊĠĠĠ Ġprivate Ġval Ġroute Overview Padding Ġby Ġlazy Ġ{ Ġbuild Route Overview Padding () Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmap box Navigation : ĠMap box Navigation ĊĠĠĠ Ġprivate Ġvar Ġnavigation Map box Map : ĠNavigation Map box Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġspeech Player : ĠNavigation Speech Player ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdestination : ĠLat Lng ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsummary Behavior : ĠBottom Sheet Behavior < Summary Bottom Sheet > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroute Overview Button : ĠImage Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcancel Btn : ĠAppCompat Image Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfeedback Button : ĠNavigation Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinstruction Sound Button : ĠNavigation Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġalert View : ĠNavigation Alert View ĊĊĠĠĠ Ġprivate Ġvar Ġmap box Map : ĠMap box Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlocation Component : ĠLocation Component ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" onCreate ĠsavedInstanceState =% s ", ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ custom _ ui _ component _ style ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĊĠĠĠĠĠĠĠ Ġmap View . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async ( this ) ĊĊĠĠĠĠĠĠĠ Ġinit Navigation () ĊĠĠĠĠĠĠĠ Ġinitialize Speech Player () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġmap View . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġmap View . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġmap View . onStart () ĊĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġmap View . on Stop () ĊĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Low Memory () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Low Memory () ĊĠĠĠĠĠĠĠ Ġmap View . on Low Memory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġmap View . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġmap box Navigation . unregister Trip Session State Observer ( trip Session State Observer ) ĊĠĠĠĠĠĠĠ Ġmap box Navigation . unregister Route Progress Observer ( route Progress Observer ) ĊĠĠĠĠĠĠĠ Ġmap box Navigation . unregister Banner Instructions Observer ( banner Instruction Observer ) ĊĠĠĠĠĠĠĠ Ġmap box Navigation . unregister Voice Instructions Observer ( voice Instructions Observer ) ĊĊĠĠĠĠĠĠĠ Ġmap box Navigation . stop Trip Session () ĊĠĠĠĠĠĠĠ Ġmap box Navigation . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġspeech Player . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġmap View . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Map Ready ( mapbox Map : ĠMap box Map ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" on Map Ready ") ĊĠĠĠĠĠĠĠ Ġthis . mapbox Map Ġ= Ġmap box Map ĊĠĠĠĠĠĠĠ Ġmap box Map . move Camera ( Camera Update Factory . zoom To ( 1 5 . 0 )) ĊĊĠĠĠĠĠĠĠ Ġmap box Map . add On Map Long ClickListener Ġ{ Ġlat Lng Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Map Long ClickListener Ġposition =% s ", Ġlat Lng ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Ġ= Ġlat Lng ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Component ?. last Known Location ?. let Ġ{ Ġorigin Location Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap box Navigation . request Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Options . builder (). apply Default Params () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accessToken ( Utils . getMap box AccessToken ( application Context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. coordinates ( origin Location . to Point (), Ġnull , Ġlat Lng . to Point ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. altern atives ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. profile ( Directions Criteria . PROFILE _ DR IV ING _ TRA FF IC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroutes Req Callback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmap box Map . setStyle ( Style . MAP BOX _ STRE ETS ) Ġ{ Ġstyle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Component Ġ= Ġmap box Map . location Component . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivate Location Component ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Component Activation Options . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Custom UI Component Style Activity , Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Mode Ġ= ĠCamera Mode . TRACK ING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Location Component Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map Ġ= ĠNavigation Map box Map ( map View , Ġmap box Map , Ġtrue ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Camera Tracking Changed Listener ( camera Tracking Changed Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Progress ChangeListener ( mapbox Navigation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Camera ( Dynamic Camera ( mapbox Map )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Engine Provider . get Best Location Engine ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getLast Location ( location Listener Callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById ( R . id . navigation Layout ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . msg _ long _ press _ map _ to _ place _ waypoint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠInstruction View ĠFeedback ĠBottom ĠSheet Ġlistener ĊĠĠĠ Ġoverride Ġfun Ġon Feedback Selected ( feedback Item : ĠFeedback Item ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfeedback Item ?. let Ġ{ Ġfeedback Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap box Map ?. snapshot Ġ{ Ġsnapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert View . show Feedback Submitted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Navigation . post User Feedback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback . feedback Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeedback Event . UI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencode Snapshot ( snapshot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Feedback Dis missed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġnothing ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Way Name Changed ( way Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( summary Bottom Sheet . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġway Name View . update Way Name Text ( way Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Way Name View () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Way Name View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" start Ġnavigation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mapbox Navigation . get Routes (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplay Route Location Engine . assign ( mapbox Navigation . get Routes ()[ 0 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Camera On Navigation StateChange ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. start Camera ( mapbox Navigation . get Routes ()[ 0 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap box Navigation . start Trip Session () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsummary Bottom Sheet . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġsummary Behavior Ġ= ĠBottom Sheet Behavior . from ( summary Bottom Sheet ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Hide able Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Bottom Sheet Callback ( bottom Sheet Callback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġroute Overview Button Ġ= ĠfindViewById ( R . id . route Overview Btn ) ĊĠĠĠĠĠĠĠ Ġroute Overview Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. show Route Overview ( route Overview Padding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre center Btn . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcancel Btn Ġ= ĠfindViewById ( R . id . cancel Btn ) ĊĠĠĠĠĠĠĠ Ġcancel Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap box Navigation . stop Trip Session () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre center Btn . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre center Btn . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. reset Padding () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. reset Camera Position With ( Navigation Camera . NAV IG ATION _ TRACK ING _ MODE _ GPS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġway Name View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Visible ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfeedback Button Ġ= Ġinstruction View . retrieve Feedback Button (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Feedback Bottom Sheet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinstruction Sound Button Ġ= Ġinstruction View . retrieve Sound Button (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsound Button Ġ= Ġinstruction Sound Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sound Button Ġis ĠSound Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Player . is Mut ed Ġ= Ġsound Button . toggle Mute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert View Ġ= Ġinstruction View . retrieve Alert View (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Views ( trip Session State : ĠTrip Session State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( trip Session State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip Session State . STARTED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Navigation . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Bottom Sheet . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre center Btn . hide () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Button . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction Sound Button . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip Session State . STOP PED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Navigation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Navigation . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Bottom Sheet . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre center Btn . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Way Name View () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Button . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction Sound Button . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= ĠUtils . getMap box AccessToken ( this ) ĊĠĠĠĠĠĠĠ Ġmap box Navigation Ġ= ĠMap box Navigation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Navigation . default Navigation Options ( this , ĠaccessToken ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplay Route Location Engine ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmap box Navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Trip Session State Observer ( trip Session State Observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Route Progress Observer ( route Progress Observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Banner Instructions Observer ( banner Instruction Observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Voice Instructions Observer ( voice Instructions Observer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Speech Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCache ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( application . cacheDir , ĠInstruction View Activity . VOICE _ INSTR UCTION _ CACHE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġvoice Instruction Loader Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVoice Instruction Loader ( application , ĠMap box . get AccessToken (), Ġcache ) ĊĠĠĠĠĠĠĠ Ġval Ġspeech Player Provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpeech Player Provider ( application , ĠLocale . US . language , Ġtrue , Ġvoice Instruction Loader ) ĊĠĠĠĠĠĠĠ Ġspeech Player Ġ= ĠNavigation Speech Player ( speech Player Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Feedback Bottom Sheet () Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeedback Bottom Sheet . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Constants . FEED BACK _ BOTTOM _ SHE ET _ DURATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( it , ĠFeedback Bottom Sheet . TAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġencode Snapshot ( snapshot : ĠBitmap ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġscreenshot View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġscreenshot View . setImage Bitmap ( snapshot ) ĊĠĠĠĠĠĠĠ Ġmap View . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġval Ġencoded Snapshot Ġ= ĠView Utils . encode View ( View Utils . capture View ( map View )) ĊĠĠĠĠĠĠĠ Ġscreenshot View . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġmap View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġreturn Ġencoded Snapshot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Way Name View () Ġ{ ĊĠĠĠĠĠĠĠ Ġway Name View . update Visibility (! way Name View . retrieve Way Name Text (). isNull OrEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Way Name View () Ġ{ ĊĠĠĠĠĠĠĠ Ġway Name View . update Visibility ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Route Overview Padding (): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleft Right Padding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension ( com . mapbox . lib navigation . ui . R . dim en . route _ overview _ left _ right _ padding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġpadding Buffer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension ( com . mapbox . lib navigation . ui . R . dim en . route _ overview _ buffer _ padding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġinstruction Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( resources . get Dimension ( com . mapbox . lib navigation . ui . R . dim en . instruction _ layout _ height ) Ġ+ Ġpadding Buffer ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġsummary Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension ( com . mapbox . lib navigation . ui . R . dim en . summary _ bottom sheet _ height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġint ArrayOf ( left Right Padding , Ġinstruction Height , Ġleft Right Padding , Ġsummary Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Location Tracking ( camera Mode : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcamera Mode Ġ== ĠCamera Mode . TRACK ING Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Mode Ġ== ĠCamera Mode . TRACK ING _ COMP ASS Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Mode Ġ== ĠCamera Mode . TRACK ING _ GPS Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Mode Ġ== ĠCamera Mode . TRACK ING _ GPS _ NORTH ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Camera On Navigation StateChange ( ĊĠĠĠĠĠĠĠ Ġnavigation Started : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( navigation Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Camera Tracking Mode ( Navigation Camera . NAV IG ATION _ TRACK ING _ MODE _ GPS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Location Layer Render Mode ( Render Mode . GPS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Camera Tracking Mode ( Navigation Camera . NAV IG ATION _ TRACK ING _ MODE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Location Layer Render Mode ( Render Mode . COMP ASS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCallback s Ġand ĠOb servers ĊĠĠĠ Ġprivate Ġval Ġroutes Req Callback Ġ= Ġobject Ġ: ĠRoutes Request Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Routes Ready ( routes : ĠList < Directions Route >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" route Ġrequest Ġsuccess Ġ% s ", Ġroutes . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( routes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. draw Route ( routes [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Navigation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Navigation . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Navigation . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Routes Request Failure ( throwable : ĠThrowable , Ġroute Options : ĠRoute Options ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" route Ġrequest Ġfailure Ġ% s ", Ġthrowable . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Routes Request Canceled ( route Options : ĠRoute Options ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" route Ġrequest Ġcanceled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtrip Session State Observer Ġ= Ġobject Ġ: ĠTrip Session State Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Session StateChanged ( trip Session State : ĠTrip Session State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( trip Session State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrip Session State . STARTED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views ( Trip Session State . STARTED ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. add On Way Name Changed Listener ( this @ Custom UI Component Style Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. update Way name Query Map ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrip Session State . STOP PED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views ( Trip Session State . STOP PED ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mapbox Navigation . get Routes (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. remove Route () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. remove On Way Name Changed Listener ( this @ Custom UI Component Style Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Map box Map ?. update Way name Query Map ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Camera On Navigation StateChange ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġroute Progress Observer Ġ= Ġobject Ġ: ĠRoute Progress Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Route Progress Changed ( route Progress : ĠRoute Progress ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction View . update Distance With ( route Progress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Bottom Sheet . update ( route Progress ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbanner Instruction Observer Ġ= Ġobject Ġ: ĠBanner Instructions Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon New Banner Instructions ( banner Instructions : ĠBanner Instructions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction View . update Banner Instructions With ( banner Instructions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġvoice Instructions Observer Ġ= Ġobject Ġ: ĠVoice Instructions Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon New Voice Instructions ( voice Instructions : ĠVoice Instructions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Player . play ( voice Instructions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcamera Tracking Changed Listener Ġ= Ġobject Ġ: ĠOn Camera Tracking Changed Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Camera Tracking Changed ( current Mode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Location Tracking ( current Mode )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Behavior . is Hide able Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Way Name View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Camera Tracking Dis missed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mapbox Navigation . get Trip Session State () Ġ== ĠTrip Session State . STARTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Behavior . is Hide able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Way Name View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbottom Sheet Callback Ġ= Ġobject Ġ: ĠBottom Sheet Behavior . Bottom Sheet Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( summary Behavior . state Ġ== ĠBottom Sheet Behavior . STATE _ HIDDEN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre center Btn . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlocation Listener Callback Ġ= ĠMy Location Engine Callback ( this ) ĊĊĠĠĠ Ġprivate Ġclass ĠMy Location Engine Callback ( activity : ĠCustom UI Component Style Activity ) Ġ: ĊĠĠĠĠĠĠĠ ĠLocation Engine Callback < Location Engine Result > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactivity Ref Ġ= ĠWeak Reference ( activity ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠLocation Engine Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . locations . first OrNull ()?. let Ġ{ Ġlocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" location Ġengine Ġcallback Ġ-> ĠonSuccess Ġlocation :% s ", Ġlocation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ref . get ()?. location Component ?. force Location Update ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" location Ġengine Ġcallback Ġ-> Ġon Failure (% s )", Ġexception . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ