/** Ċ Ġ* ĠT amp ering Ġwith Ġany Ġfile Ġthat Ġcontains Ġbilling Ġcode Ġis Ġa Ġviolation Ġof ĠMap box ĠTerms Ġof ĠService Ġand Ġwill Ġresult Ġin Ġenforce ment Ġof Ġthe Ġpen alt ies Ġst ip ulated Ġin Ġthe ĠTo S . Ċ Ġ*/ Ċ Ċ package Ġcom . mapbox . navigation . core Ċ Ċ import Ġandroid . Manifest . permission . ACCESS _ CO AR SE _ LOCATION Ċ import Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . Requires Permission Ċ import Ġandroidx . annotation . Ui Thread Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġcom . mapbox . android . core . location . Location Engine Ċ import Ġcom . mapbox . annotation . module . Map box Module Type Ċ import Ġcom . mapbox . api . directions . v 5 . models . Directions Route Ċ import Ġcom . mapbox . api . directions . v 5 . models . Route Options Ċ import Ġcom . mapbox . base . common . logger . model . Message Ċ import Ġcom . mapbox . base . common . logger . model . Tag Ċ import Ġcom . mapbox . common . Tile set Descriptor Ċ import Ġcom . mapbox . common . module . provider . Map box Module Provider Ċ import Ġcom . mapbox . common . module . provider . Module Provider Argument Ċ import Ġcom . mapbox . navigation . base . Experimental Preview Map box Navigation API Ċ import Ġcom . mapbox . navigation . base . extensions . apply Default Navigation Options Ċ import Ġcom . mapbox . navigation . base . extensions . apply Language And Voice Unit Options Ċ import Ġcom . mapbox . navigation . base . formatter . Distance Formatter Ċ import Ġcom . mapbox . navigation . base . internal . accounts . Url Sku Token Provider Ċ import Ġcom . mapbox . navigation . base . options . History Recorder Options Ċ import Ġcom . mapbox . navigation . base . options . Navigation Options Ċ import Ġcom . mapbox . navigation . base . options . Routing Tiles Options Ċ import Ġcom . mapbox . navigation . base . route . Route Altern atives Options Ċ import Ġcom . mapbox . navigation . base . route . Router Ċ import Ġcom . mapbox . navigation . base . route . Router Callback Ċ import Ġcom . mapbox . navigation . base . trip . model . Route Progress Ċ import Ġcom . mapbox . navigation . base . trip . model . eh . EH orizon Edge Ċ import Ġcom . mapbox . navigation . base . trip . model . eh . EH orizon Edge Metadata Ċ import Ġcom . mapbox . navigation . base . trip . notification . Notification Action Ċ import Ġcom . mapbox . navigation . base . trip . notification . Trip Notification Ċ import Ġcom . mapbox . navigation . core . accounts . Billing Controller Ċ import Ġcom . mapbox . navigation . core . arrival . Arrival Controller Ċ import Ġcom . mapbox . navigation . core . arrival . Arrival Observer Ċ import Ġcom . mapbox . navigation . core . arrival . Arrival Progress Observer Ċ import Ġcom . mapbox . navigation . core . arrival . Auto Arrival Controller Ċ import Ġcom . mapbox . navigation . core . directions . session . Directions Session Ċ import Ġcom . mapbox . navigation . core . directions . session . Routes Extra Ċ import Ġcom . mapbox . navigation . core . directions . session . Routes Observer Ċ import Ġcom . mapbox . navigation . core . formatter . Map box Distance Formatter Ċ import Ġcom . mapbox . navigation . core . history . Map box History Reader Ċ import Ġcom . mapbox . navigation . core . history . Map box History Recorder Ċ import Ġcom . mapbox . navigation . core . internal . Reach ability Service Ċ import Ġcom . mapbox . navigation . core . internal . accounts . Map box Navigation Accounts Ċ import Ġcom . mapbox . navigation . core . internal . utils . Internal Utils Ċ import Ġcom . mapbox . navigation . core . navigator . Tile set Descriptor Factory Ċ import Ġcom . mapbox . navigation . core . replay . Map box Re player Ċ import Ġcom . mapbox . navigation . core . rer oute . Map box R er oute Controller Ċ import Ġcom . mapbox . navigation . core . rer oute . R er oute Controller Ċ import Ġcom . mapbox . navigation . core . rer oute . R er oute State Ċ import Ġcom . mapbox . navigation . core . route altern atives . Route Altern atives Controller Ċ import Ġcom . mapbox . navigation . core . route altern atives . Route Altern atives Controller Provider Ċ import Ġcom . mapbox . navigation . core . route altern atives . Route Altern atives Observer Ċ import Ġcom . mapbox . navigation . core . route options . Route Options Updater Ċ import Ġcom . mapbox . navigation . core . rout eref resh . Route Refresh Controller Ċ import Ġcom . mapbox . navigation . core . rout eref resh . Route Refresh Controller Provider Ċ import Ġcom . mapbox . navigation . core . telemetry . Map box Navigation Telemetry Ċ import Ġcom . mapbox . navigation . core . telemetry . events . Feedback Event Ċ import Ġcom . mapbox . navigation . core . telemetry . events . Feedback Helper Ċ import Ġcom . mapbox . navigation . core . telemetry . events . Feedback Metadata Ċ import Ġcom . mapbox . navigation . core . telemetry . events . Feedback Metadata Wrapper Ċ import Ġcom . mapbox . navigation . core . trip . service . Trip Service Ċ import Ġcom . mapbox . navigation . core . trip . session . Banner Instructions Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Leg Index Updated Callback Ċ import Ġcom . mapbox . navigation . core . trip . session . Location Matcher Result Ċ import Ġcom . mapbox . navigation . core . trip . session . Location Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Navigation Session Ċ import Ġcom . mapbox . navigation . core . trip . session . Navigation Session State Ċ import Ġcom . mapbox . navigation . core . trip . session . Navigation Session State . Active Guid ance Ċ import Ġcom . mapbox . navigation . core . trip . session . Navigation Session State . Free Drive Ċ import Ġcom . mapbox . navigation . core . trip . session . Navigation Session State . Idle Ċ import Ġcom . mapbox . navigation . core . trip . session . Navigation Session State Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Off Route Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Road Objects On Route Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Route Progress Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . Trip Session Ċ import Ġcom . mapbox . navigation . core . trip . session . Trip Session Location Engine Ċ 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 . core . trip . session . eh . EH orizon Observer Ċ import Ġcom . mapbox . navigation . core . trip . session . eh . Graph Accessor Ċ import Ġcom . mapbox . navigation . core . trip . session . eh . Road Object Matcher Ċ import Ġcom . mapbox . navigation . core . trip . session . eh . Road Objects Store Ċ import Ġcom . mapbox . navigation . metrics . Map box Metrics Reporter Ċ import Ġcom . mapbox . navigation . navigator . internal . Map box Native Navigator Ċ import Ġcom . mapbox . navigation . navigator . internal . Map box Native Navigator Impl Ċ import Ġcom . mapbox . navigation . utils . internal . Connectivity Handler Ċ import Ġcom . mapbox . navigation . utils . internal . Logger Provider Ċ import Ġcom . mapbox . navigation . utils . internal . Thread Controller Ċ import Ġcom . mapbox . navigation . utils . internal . if NonNull Ċ import Ġcom . mapbox . navigation . utils . internal . monitor Channel With Exception Ċ import Ġcom . mapbox . navigator . Electron ic H orizon Options Ċ import Ġcom . mapbox . navigator . Fallback Versions Observer Ċ import Ġcom . mapbox . navigator . Incident s Options Ċ import Ġcom . mapbox . navigator . Navigator Config Ċ import Ġcom . mapbox . navigator . Polling Config Ċ import Ġcom . mapbox . navigator . Tile Endpoint Configuration Ċ import Ġcom . mapbox . navigator . Tiles Config Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . channels . Receive Channel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . util . Locale Ċ Ċ private Ġconst Ġval ĠMAP BOX _ NAV IG ATION _ USER _ AGENT _ BASE Ġ= Ġ" mapbox - navigation - android " Ċ private Ġconst Ġval ĠMAP BOX _ NAV IG ATION _ TOKEN _ EXCEPTION _ ROUT ER Ġ= ĊĠĠĠ Ġ" You Ġneed Ġto Ġprovide Ġan Ġaccess Ġtoken Ġin ĠNavigation Options Ġin Ġorder Ġto Ġuse Ġthe Ġdefault Ġ" Ġ+ ĊĠĠĠĠĠĠĠ Ġ" Router ." Ċ private Ġconst Ġval ĠMAP BOX _ NAV IG ATION _ NOTIFICATION _ PACKAGE _ NAME Ġ= ĊĠĠĠ Ġ" com . mapbox . navigation . trip . notification . internal . Map box Trip Notification " Ċ private Ġconst Ġval ĠMAP BOX _ NOTIFICATION _ ACTION _ CHANNEL Ġ= Ġ" notification ActionButton Channel " Ċ Ċ /** Ċ Ġ* Ġ## ĠMap box ĠNavigation ĠCore ĠSDK Ċ Ġ* ĠAn Ġentry Ġpoint Ġfor Ġinteracting Ġwith Ġthe ĠMap box ĠNavigation ĠSDK . Ċ Ġ* Ċ Ġ* Ġ** Only Ġone Ġinstance Ġof Ġthis Ġclass Ġshould Ġbe Ġused Ġper Ġapplication Ġprocess .** Ċ Ġ* ĠUse Ġ[ Map box Navigation Provider ] Ġto Ġeasily Ġmanage Ġthe Ġinstance Ġacross Ġlifecycle . Ċ Ġ* Ċ Ġ* ĠFeel Ġfree Ġto Ġvisit Ġour Ġ[ docs Ġpages Ġand Ġexamples ]( https :// docs . mapbox . com / android / beta / navigation / overview /) Ġbefore Ġdiv ing Ġin ! Ċ Ġ* Ċ Ġ* ĠThe Ġ[ Map box Navigation ] Ġimplementation Ġcan Ġenter Ġinto Ġthe Ġfollowing Ġ[ Navigation Session State ] s : Ċ Ġ* Ġ- Ġ[ Idle ] Ċ Ġ* Ġ- Ġ[ Free Drive ] Ċ Ġ* Ġ- Ġ[ Active Guid ance ] Ċ Ġ* Ċ Ġ* ĠThe ĠSDK Ġstarts Ġoff Ġin Ġan Ġ[ Idle ] Ġstate . Ċ Ġ* Ċ Ġ* Ġ### ĠLocation Ċ Ġ* ĠWh enever Ġthe Ġ[ start Trip Session ] Ġis Ġcalled , Ġthe ĠSDK Ġwill Ġenter Ġthe Ġ[ Free Drive ] Ġstate Ġstarting Ġto Ġrequest Ġand Ġpropagate Ġlocation Ġupdates Ġvia Ġthe Ġ[ Location Observer ]. Ċ Ġ* Ċ Ġ* ĠThis Ġobserver Ġprovides Ġ 2 Ġlocation Ġupdate Ġvalues Ġin Ġmixed Ġintervals Ġ- Ġeither Ġthe Ġraw Ġone Ġreceived Ġfrom Ġthe Ġprovided Ġ[ Location Engine ] Ċ Ġ* Ġor Ġthe Ġenhanced Ġone Ġmap - matched Ġinternally Ġusing ĠSDK 's Ġnative Ġcapabilities . Ċ Ġ* Ċ Ġ* ĠIn Ġ[ Free Drive ] Ġmode , Ġthe Ġenhanced Ġlocation Ġis Ġcomputed Ġusing Ġnearby Ġto Ġuser Ġlocation 's Ġrouting Ġtiles Ġthat Ġare Ġcontinuous ly Ġupdating Ġin Ġthe Ġbackground . Ċ Ġ* ĠThis Ġcan Ġbe Ġconfigured Ġusing Ġthe Ġ[ Routing Tiles Options ] Ġin Ġthe Ġ[ Navigation Options ]. Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġsession Ġis Ġstopped , Ġthe ĠSDK Ġwill Ġstop Ġlistening Ġfor Ġraw Ġlocation Ġupdates Ġand Ġenter Ġthe Ġ[ Idle ] Ġstate . Ċ Ġ* Ċ Ġ* Ġ### ĠRouting Ċ Ġ* ĠA Ġroute Ġcan Ġbe Ġrequested Ġwith : Ċ Ġ* Ġ- Ġ[ request Routes ], Ġif Ġsuccessful , Ġreturns Ġa Ġroute Ġreference Ġwithout Ġact ing Ġon Ġit . ĠYou Ġcan Ġthen Ġpass Ġthe Ġgenerated Ġroutes Ġto Ġ[ set Routes ]. Ċ Ġ* Ġ- Ġ[ set Routes ] Ġsets Ġnew Ġroutes , Ġclear Ġcurrent Ġones , Ġor Ġchanges Ġthe Ġroute Ġat Ġprimary Ġindex Ġ 0 . Ċ Ġ* ĠThe Ġroutes Ġare Ġimmediately Ġavailable Ġvia Ġthe Ġ[ Routes Observer ] Ġand Ġthe Ġfirst Ġroute Ġ( at Ġindex Ġ 0 ) Ġis Ġgoing Ġto Ġbe Ġchosen Ġas Ġthe Ġprimary Ġone . Ċ Ġ* Ċ Ġ* Ġ### ĠRoute Ġreason Ġupdate Ċ Ġ* ĠWhen Ġroutes Ġare Ġupdated Ġvia Ġ[ set Routes ] Ġthe Ġreason Ġthat Ġis Ġspread Ġvia Ġ[ Routes Observer . on Routes Changed ] Ġmight Ġbe : Ċ Ġ* Ġ- Ġ[ Routes Extra . ROUT ES _ UPDATE _ REASON _ CLEAN _ UP ] Ġif Ġlist Ġof Ġroutes Ġis Ġempty ; Ċ Ġ* Ġ- Ġ[ Routes Extra . ROUT ES _ UPDATE _ REASON _ ALTER NATIVE ] Ġif Ġany Ġof Ġthe Ġroutes Ġreceived Ġvia Ġ[ Route Altern atives Observer . on Route Altern atives ] Ġare Ġset . Ġ** Order Ġdoes Ġnot Ġmatter **. Ċ Ġ* Ġ- Ġ[ Routes Extra . ROUT ES _ UPDATE _ REASON _ NEW ] Ġotherwise . Ċ Ġ* ĠIf Ġcurrent Ġroutes Ġare Ġinternally Ġref reshed Ġthen Ġthe Ġreason Ġis Ġ[ Routes Extra . ROUT ES _ UPDATE _ REASON _ REFRESH ]. ĠIn Ġcase Ġof Ġre - route Ġ( see Ġ[ R er oute Controller ]) Ġthe Ġreason Ġis Ġ[ Routes Extra . ROUT ES _ UPDATE _ REASON _ R ER OUT E ]. Ċ Ġ* Ċ Ġ* Ġ** Make Ġsure Ġto Ġuse Ġthe Ġ[ apply Default Navigation Options ] Ġfor Ġthe Ġbest Ġnavigation Ġexperience ** Ġ( and Ġto Ġset Ġrequired Ġrequest Ġparameters ). Ċ Ġ* ĠYou Ġcan Ġalso Ġuse Ġ[ apply Language And Voice Unit Options ] Ġget Ġinstructions ' Ġlanguage Ġand Ġvoice Ġunit Ġbased Ġon Ġthe Ġdevice 's Ġ[ Locale ]. Ċ Ġ* ĠIt 's Ġalso Ġworth Ġexplor ing Ġother Ġavailable Ġoptions Ġ( like Ġenabling Ġalternative Ġroutes , Ġspecifying Ġdestination Ġapproach Ġtype , Ġdefining Ġway point Ġtypes , Ġetc .). Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ġ``` Ċ Ġ* Ġval Ġroute Options Ġ= ĠRoute Options . builder () Ċ Ġ* ĠĠ Ġ. apply Default Navigation Options () Ċ Ġ* ĠĠ Ġ. apply Language And Voice Unit Options ( context ) Ċ Ġ* ĠĠ Ġ. accessToken ( token ) Ċ Ġ* ĠĠ Ġ. coordinates List ( listOf ( origin , Ġdestination )) Ċ Ġ* ĠĠ Ġ. altern atives ( true ) Ċ Ġ* ĠĠ Ġ. build () Ċ Ġ* Ġmap box Navigation . request Routes ( Ċ Ġ* ĠĠĠĠ Ġroute Options , Ċ Ġ* ĠĠĠĠ Ġobject Ġ: ĠRouter Callback Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Routes Ready ( routes : ĠList < Directions Route >) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap box Navigation . set Routes ( routes ) Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ} Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( re asons : ĠList < Router Failure >, Ġroute Options : ĠRoute Options ) Ġ{ Ġ} Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Canceled ( route Options : ĠRoute Options ) Ġ{ Ġ} Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ġ) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠIf Ġthe ĠSDK Ġis Ġin Ġan Ġ[ Idle ] Ġstate , Ġit Ġstays Ġin Ġthis Ġsame Ġstate Ġeven Ġwhen Ġa Ġprimary Ġroute Ġis Ġavailable . Ċ Ġ* Ċ Ġ* ĠIf Ġthe ĠSDK Ġis Ġalready Ġin Ġthe Ġ[ Free Drive ] Ġmode Ġor Ġentering Ġit Ġwhenever Ġa Ġprimary Ġroute Ġis Ġavailable , Ċ Ġ* Ġthe ĠSDK Ġwill Ġenter Ġthe Ġ[ Active Guid ance ] Ġmode Ġinstead Ġand Ġpropagate Ġmeaningful Ġ[ Route Progress ]. Ċ Ġ* Ċ Ġ* ĠWhen Ġthe Ġroutes Ġare Ġmanually Ġcleared , Ġthe ĠSDK Ġautomatically Ġfall Ġback Ġto Ġeither Ġ[ Idle ] Ġor Ġ[ Free Drive ] Ġstate . Ċ Ġ* Ċ Ġ* ĠYou Ġcan Ġuse Ġ[ set Routes ] Ġto Ġprovide Ġnew Ġroutes , Ġclear Ġcurrent Ġones , Ġor Ġchange Ġthe Ġroute Ġat Ġprimary Ġindex Ġ 0 . Ċ Ġ* Ċ Ġ* Ġ@ param Ġnavigation Options Ġa Ġset Ġof Ġ[ Navigation Options ] Ġused Ġto Ġcustomize Ġvarious Ġfeatures Ġof Ġthe ĠSDK . Ċ Ġ*/ Ċ @ Ui Thread Ċ class ĠMap box Navigation Ġ@ Visible ForTesting Ġinternal Ġconstructor ( ĊĠĠĠ Ġval Ġnavigation Options : ĠNavigation Options , ĊĠĠĠ Ġprivate Ġval Ġthread Controller : ĠThread Controller , Ċ ) Ġ{ ĊĊĠĠĠ Ġconstructor ( navigation Options : ĠNavigation Options ) Ġ: Ġthis ( navigation Options , ĠThread Controller ()) ĊĊĠĠĠ Ġprivate Ġval ĠaccessToken : ĠString ? Ġ= Ġnavigation Options . accessToken ĊĠĠĠ Ġprivate Ġval Ġmain Job Controller Ġ= Ġthread Controller . get Main Scope And Root Job () ĊĠĠĠ Ġprivate Ġval Ġdirections Session : ĠDirection s Session ĊĠĠĠ Ġprivate Ġvar Ġnavigator : ĠMap box Native Navigator ĊĠĠĠ Ġprivate Ġval Ġtrip Service : ĠTrip Service ĊĠĠĠ Ġprivate Ġval Ġtrip Session : ĠTrip Session ĊĠĠĠ Ġprivate Ġval Ġnavigation Session : ĠNavigation Session ĊĠĠĠ Ġprivate Ġval Ġtrip Session Location Engine : ĠTrip Session Location Engine ĊĠĠĠ Ġprivate Ġval Ġbilling Controller : ĠBilling Controller ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger Provider . logger ĊĠĠĠ Ġprivate Ġval Ġconnectivity Handler : ĠConnect ivity Handler Ġ= ĠConnect ivity Handler ( ĊĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠ ĠChannel ( Channel . CON FL ATED ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġinternal Routes Observer : ĠRoutes Observer ĊĠĠĠ Ġprivate Ġval Ġinternal Off Route Observer : ĠOff Route Observer ĊĠĠĠ Ġprivate Ġval Ġinternal Fallback Versions Observer : ĠF allback Versions Observer ĊĠĠĠ Ġprivate Ġval Ġroute Altern atives Controller : ĠRoute Altern atives Controller ĊĠĠĠ Ġprivate Ġval Ġroute Refresh Controller : ĠRoute Refresh Controller ĊĠĠĠ Ġprivate Ġval Ġar rival Progress Observer : ĠAr rival Progress Observer ĊĠĠĠ Ġprivate Ġval Ġelectronic H orizon Options : ĠElectron ic H orizon Options Ġ= ĠElectron ic H orizon Options ( ĊĠĠĠĠĠĠĠ Ġnavigation Options . e H orizon Options . length , ĊĠĠĠĠĠĠĠ Ġnavigation Options . e H orizon Options . expansion . to Byte (), ĊĠĠĠĠĠĠĠ Ġnavigation Options . e H orizon Options . branch Length , ĊĠĠĠĠĠĠĠ Ġtrue , Ġ// Ġdo Not Re calculate In Un cert ain State Ġis Ġnot Ġexposed Ġand Ġcan 't Ġbe Ġchanged Ġat Ġthe Ġmoment ĊĠĠĠĠĠĠĠ Ġnavigation Options . e H orizon Options . min Time Delta Between Updates ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġincident s Options : ĠInc idents Options ? Ġ= Ġnavigation Options . incident s Options . run Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( graph . isNotEmpty () Ġ|| Ġapi Url . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInc idents Options ( graph , Ġapi Url ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpolling Config Ġ= ĠPol ling Config ( ĊĠĠĠĠĠĠĠ Ġnavigation Options . navigator Prediction Millis Ġ/ ĠONE _ SECOND _ IN _ M ILL IS , ĊĠĠĠĠĠĠĠ ĠInternal Utils . UN CONDITION AL _ POL LING _ P ATI ENCE _ MILLISECONDS Ġ/ ĠONE _ SECOND _ IN _ M ILL IS , ĊĠĠĠĠĠĠĠ ĠInternal Utils . UN CONDITION AL _ POL LING _ INTERVAL _ MILLISECONDS Ġ/ ĠONE _ SECOND _ IN _ M ILL IS ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġnavigator Config Ġ= ĠNavigator Config ( ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġelectronic H orizon Options , ĊĠĠĠĠĠĠĠ Ġpolling Config , ĊĠĠĠĠĠĠĠ Ġincident s Options , ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġnotification Channel Field : ĠField ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠR er oute Ġcontroller , Ġby Ġdefault Ġuses Ġ[ default R er oute Controller ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġrer oute Controller : ĠR er oute Controller ? ĊĠĠĠ Ġprivate Ġval Ġdefault R er oute Controller : ĠR er oute Controller ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Navigation Version Switch Observer ] Ġis Ġnotified Ġwhen Ġnavigation Ġswitches Ġtiles Ġversion . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġnavigation Version Switch Observer s Ġ= Ġmutable Set Of < Navigation Version Switch Observer >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Map box Navigation . road Objects Store ] Ġprovides Ġmethods Ġto Ġget Ġroad Ġobjects Ġmetadata , ĊĠĠĠĠ Ġ* Ġadd Ġand Ġremove Ġcustom Ġroad Ġobjects . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġroad Objects Store : ĠRoad Objects Store ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Map box Navigation . graph Accessor ] Ġprovides Ġmethods Ġto Ġget Ġedge Ġ( e . g . Ġ[ EH orizon Edge ]) Ġshape Ġand ĊĠĠĠĠ Ġ* Ġmetadata . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** NOTE **: ĠThe ĠMap box ĠElectron ic ĠH orizon Ġfeature Ġof Ġthe ĠMap box ĠNavigation ĠSDK Ġis Ġin Ġpublic Ġbeta ĊĠĠĠĠ Ġ* Ġand Ġis Ġsubject Ġto Ġchanges , Ġincluding Ġits Ġpr icing . ĠUse Ġof Ġthe Ġfeature Ġis Ġsubject Ġto Ġthe Ġbeta ĊĠĠĠĠ Ġ* Ġproduct Ġrestrictions Ġin Ġthe ĠMap box ĠTerms Ġof ĠService . ĊĠĠĠĠ Ġ* ĠMap box Ġre serves Ġthe Ġright Ġto Ġeliminate Ġany Ġfree Ġtier Ġor Ġfree Ġevaluation Ġoffers Ġat Ġany Ġtime Ġand ĊĠĠĠĠ Ġ* Ġrequire Ġcustomers Ġto Ġplace Ġan Ġorder Ġto Ġpurchase Ġthe ĠMap box ĠElectron ic ĠH orizon Ġfeature , ĊĠĠĠĠ Ġ* Ġregardless Ġof Ġthe Ġlevel Ġof Ġuse Ġof Ġthe Ġfeature . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġgraph Accessor : ĠGraph Accessor ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Map box Navigation . tile set Descriptor Factory ] Ġprovide Ġmethods Ġto Ġbuild Ġnavigation ĊĠĠĠĠ Ġ* Ġ[ Tile set Descriptor ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtile set Descriptor Factory : ĠTile set Descriptor Factory ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Map box Navigation . road Object Matcher ] Ġprovides Ġmethods Ġto Ġmatch Ġcustom Ġroad Ġobjects ĊĠĠĠĠ Ġ* Ġto Ġthe Ġroad Ġgraph . ĠTo Ġmake Ġthe Ġroad Ġobject Ġdiscover able Ġby Ġthe Ġelectronic Ġh orizon Ġmodule Ġand ĊĠĠĠĠ Ġ* Ġthe Ġ[ EH orizon Observer ] Ġin Ġparticular Ġit Ġmust Ġbe Ġadded Ġto Ġthe Ġ[ Road Objects Store ] Ġwith ĊĠĠĠĠ Ġ* Ġ[ Road Objects Store . add Custom Road Object ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġroad Object Matcher : ĠRoad Object Matcher ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthe Ġhistory Ġrecorder Ġto Ġsave Ġhistory Ġfiles . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ History Recorder Options ] Ġto Ġenable Ġand Ġcustomize Ġthe Ġdirectory ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Map box History Reader ] Ġto Ġread Ġthe Ġfiles ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhistory Recorder Ġ= ĠMap box History Recorder ( navigation Options , Ġlogger ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ** THIS ĠIS ĠAN ĠEX PERIMENT AL ĠAPI , ĠDO ĠNOT ĠUSE ĠIN ĠA ĠPRO DU CTION ĠENV IRONMENT .** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNavigation Ġnative Ġexperimental ĠAPI . ĠDo Ġnot Ġstore Ġa Ġreference Ġto Ġ[ Experimental ] Ġobject , ĊĠĠĠĠ Ġ* Ġalways Ġaccess Ġthe Ġobject Ġvia Ġ` mapbox Navigation . experimental ` Ġbecause Ġ[ Map box Navigation ] Ġis ĊĠĠĠĠ Ġ* Ġresponsible Ġfor Ġit 's Ġlifecycle . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġval Ġexperimental : Ġcom . mapbox . navigator . Experimental ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnavigator . experimental ĊĊĠĠĠ Ġprivate Ġvar Ġreach ability Observer Id : ĠLong ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġlatest Leg Index : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDescri bes Ġwhether Ġthis Ġinstance Ġof Ġ` Map box Navigation ` Ġhas Ġbeen Ġdestroyed Ġby Ġcalling ĊĠĠĠĠ Ġ* Ġ[ on Destroy ]. ĠOnce Ġan Ġinstance Ġis Ġdestroyed , Ġit Ġcannot Ġbe Ġused Ġanymore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Map box Navigation Provider ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġvar Ġis Destroyed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Instance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġdifferent ĠMap box Navigation Ġinstance Ġalready Ġexists . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMake Ġsure Ġto Ġdestroy Ġit Ġwith Ġ# on Destroy Ġbefore Ġcreating Ġa Ġnew Ġone . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlso Ġsee ĠMap box Navigation Provider Ġfor Ġinstance Ġmanagement Ġassistance . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhas Instance Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġnavigator Ġ= ĠNavigation Component Provider . create Native Navigator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . device Profile , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator Config , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Tiles Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Fallback Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiles Version Ġ= Ġnavigation Options . routing Tiles Options . tiles Version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Recorder . file Directory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . accessToken Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġhistory Recorder . history Recorder Handle Ġ= Ġnavigator . get History Recorder Handle () ĊĠĠĠĠĠĠĠ Ġnavigation Session Ġ= ĠNavigation Component Provider . create Navigation Session () ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification : ĠTrip Notification Ġ= ĠMap box Module Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Module ( Map box Module Type . Navigation Trip Notification , Ġ:: params Provider ) ĊĠĠĠĠĠĠĠ Ġif Ġ( notification . java Class . name Ġ== ĠMAP BOX _ NAV IG ATION _ NOTIFICATION _ PACKAGE _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel Field Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification . java Class . getDeclared Field ( MAP BOX _ NOTIFICATION _ ACTION _ CHANNEL ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrip Service Ġ= ĠNavigation Component Provider . create Trip Service ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Controller , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtrip Session Location Engine Ġ= ĠNavigation Component Provider . create Trip Session Location Engine ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options Ġ= Ġnavigation Options ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtrip Session Ġ= ĠNavigation Component Provider . create Trip Session ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Service Ġ= Ġtrip Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session Location Engine Ġ= Ġtrip Session Location Engine , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator Ġ= Ġnavigator , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Controller , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġlogger , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtrip Session . register State Observer ( navigation Session ) ĊĠĠĠĠĠĠĠ Ġdirections Session Ġ= ĠNavigation Component Provider . create Directions Session ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Provider . create Module ( Map box Module Type . Navigation Router , Ġ:: params Provider ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( reach ability Observer Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreach ability Observer Id Ġ= ĠRe ach ability Service . add Reach ability Observer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnectivity Handler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdirections Session . register Routes Observer ( navigation Session ) ĊĊĠĠĠĠĠĠĠ Ġar rival Progress Observer Ġ= ĠNavigation Component Provider . create Arrival Progress Observer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset Arrival Controller () ĊĊĠĠĠĠĠĠĠ Ġbilling Controller Ġ= ĠNavigation Component Provider . create Billing Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . accessToken , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar rival Progress Observer ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif NonNull ( accessToken ) Ġ{ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Navigation Telemetry . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage (" Map box Metrics Reporter . init Ġfrom ĠMap box Navigation Ġmain ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Metrics Reporter . init ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobtain UserAgent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Metrics Reporter . toggle Logging ( navigation Options . isDebug Logging Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Navigation Telemetry . initialize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Metrics Reporter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġroute Options Provider Ġ= ĠRoute Options Updater () ĊĊĠĠĠĠĠĠĠ Ġroute Altern atives Controller Ġ= ĠRoute Altern atives Controller Provider . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . route Altern atives Options , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġroute Refresh Controller Ġ= ĠRoute Refresh Controller Provider . create Route Refresh Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . route Refresh Options , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Controller , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdefault R er oute Controller Ġ= ĠMap box R er oute Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute Options Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Controller , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrer oute Controller Ġ= Ġdefault R er oute Controller ĊĊĠĠĠĠĠĠĠ Ġinternal Routes Observer Ġ= Ġcreate Internal Routes Observer () ĊĠĠĠĠĠĠĠ Ġinternal Off Route Observer Ġ= Ġcreate Internal Off Route Observer () ĊĠĠĠĠĠĠĠ Ġinternal Fallback Versions Observer Ġ= Ġcreate Internal Fallback Versions Observer () ĊĠĠĠĠĠĠĠ Ġtrip Session . register Off Route Observer ( internal Off Route Observer ) ĊĠĠĠĠĠĠĠ Ġtrip Session . register Fallback Versions Observer ( internal Fallback Versions Observer ) ĊĠĠĠĠĠĠĠ Ġdirections Session . register Routes Observer ( internal Routes Observer ) ĊĊĠĠĠĠĠĠĠ Ġroad Objects Store Ġ= ĠRoad Objects Store ( navigator ) ĊĠĠĠĠĠĠĠ Ġgraph Accessor Ġ= ĠGraph Accessor ( navigator ) ĊĠĠĠĠĠĠĠ Ġtile set Descriptor Factory Ġ= ĠTile set Descriptor Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . routing Tiles Options , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . cache ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġroad Object Matcher Ġ= ĠRoad Object Matcher ( navigator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠControl Ġthe Ġlocation Ġevents Ġplayback Ġduring Ġa Ġreplay Ġtrip Ġsession . ĊĠĠĠĠ Ġ* ĠStart Ġa Ġreplay Ġtrip Ġsession Ġwith Ġ[ start Replay Trip Session ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġval Ġmap box Re player : ĠMap box Re player Ġby Ġlazy Ġ{ Ġtrip Session Location Engine . mapbox Re player Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġlistening Ġfor Ġlocation Ġupdates Ġand Ġent ers Ġan Ġ` Active ĠGuid ance ` Ġstate Ġif Ġthere 's Ġa Ġprimary Ġroute Ġavailable ĊĠĠĠĠ Ġ* Ġor Ġa Ġ` Free ĠDrive ` Ġstate Ġotherwise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Starting Ġa Ġsession Ġcan Ġhave Ġan Ġimpact Ġon Ġyour Ġusage Ġcosts .** ĠRefer Ġto Ġthe Ġ[ pricing Ġdocumentation ]( https :// docs . mapbox . com / android / beta / navigation / guides / pricing /) Ġto Ġlearn Ġmore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwith Foreground Service ĠBoolean Ġif Ġset Ġto Ġfalse , Ġforeground Ġservice Ġwill Ġnot Ġbe Ġstarted Ġand ĊĠĠĠĠ Ġ* Ġno Ġnotifications Ġwill Ġbe Ġrendered , Ġand Ġno Ġlocation Ġupdates Ġwill Ġbe Ġavailable Ġwhile Ġthe Ġapp Ġis Ġin Ġthe Ġbackground . ĊĠĠĠĠ Ġ* ĠDefault Ġvalue Ġis Ġset Ġto Ġtrue . ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Trip Session State Observer ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Route Progress Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Permission ( any Of Ġ= Ġ[ ACCESS _ CO AR SE _ LOCATION , ĠACCESS _ F INE _ LOCATION ]) ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġstart Trip Session ( with Foreground Service : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Session ( with Foreground Service , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSto ps Ġlistening Ġfor Ġlocation Ġupdates Ġand Ġent ers Ġan Ġ` Idle ` Ġstate . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Trip Session State Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop Trip Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun IfNot Destroyed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Leg Index Ġ= Ġtrip Session . get Route Progress ()?. current Leg Progress ?. leg Index ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . set Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroutes Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleg Index Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason Ġ= ĠRoutes Extra . ROUT ES _ UPDATE _ REASON _ CLEAN _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction ally Ġthe Ġsame Ġas Ġ[ start Trip Session ] Ġexcept Ġthe Ġlocations Ġdo Ġnot Ġcome Ġfrom Ġthe ĊĠĠĠĠ Ġ* Ġ[ Navigation Options . location Engine ]. ĠThe Ġevents Ġare Ġemitted Ġby Ġthe Ġ[ mapbox Re player ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġallows Ġyou Ġto Ġsimulate Ġnavigation Ġroutes Ġor Ġreplay Ġhistory Ġfrom Ġthe Ġ[ history Recorder ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġfun Ġstart Replay Trip Session ( with Foreground Service : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Session ( with Foreground Service , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReset Ġthe Ġsession Ġwith Ġthe Ġsame Ġconfiguration . ĠThe Ġlocation Ġbecomes Ġunknown , ĊĠĠĠĠ Ġ* Ġbut Ġthe Ġ[ Navigation Options ] Ġstay Ġthe Ġsame . ĠThis Ġcan Ġbe Ġused Ġto Ġtransport Ġthe ĊĠĠĠĠ Ġ* Ġnavigator Ġto Ġa Ġnew Ġlocation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset Trip Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigator . reset R ide Session () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠQuery Ġif Ġthe Ġ[ Map box Navigation ] Ġis Ġrunning Ġa Ġforeground Ġservice ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġ[ Map box Navigation ] Ġis Ġrunning Ġa Ġforeground Ġservice Ġelse Ġfalse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Running Foreground Service (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrip Session . isRunning With Foreground Service () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġcurrent Ġ[ Trip Session ]' s Ġstate . ĊĠĠĠĠ Ġ* ĠThe Ġstate Ġis Ġ[ Trip Session State . STARTED ] Ġwhen Ġthe Ġsession Ġis Ġactive , Ġrunning Ġa Ġforeground Ġservice Ġand ĊĠĠĠĠ Ġ* Ġrequesting Ġand Ġreturning Ġlocation Ġupdates . ĊĠĠĠĠ Ġ* ĠThe Ġstate Ġis Ġ[ Trip Session State . STOP PED ] Ġwhen Ġthe Ġsession Ġis Ġinactive . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġcurrent Ġ[ Trip Session State ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Trip Session State Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Trip Session State (): ĠTrip Session State Ġ= Ġtrip Session . getState () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġthe Ġcurrent Ġnavigation Ġsession Ġstate . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġcurrent Ġ[ Navigation Session State ] ĊĠĠĠĠ Ġ* Ġ@ see ĠNavigation Session State Observer ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Navigation Session State Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Navigation Session State (): ĠNavigation Session State Ġ= Ġnavigation Session . state ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġthe Ġcurrent ĠZ - Level . ĠCan Ġbe Ġused Ġto Ġbuild Ġa Ġroute Ġfrom Ġa Ġproper Ġlevel Ġof Ġa Ġroad . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġcurrent ĠZ - Level . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Z Level (): ĠInt ? Ġ= Ġtrip Session . z Level ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġa Ġroute Ġusing Ġthe Ġavailable Ġ[ Router ] Ġimplementation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUse Ġ[ Map box Navigation . set Routes ] Ġto Ġsupply Ġthe Ġreturned Ġlist Ġof Ġroutes , Ġtransformed Ġlist , Ġor Ġa Ġlist Ġfrom Ġan Ġexternal Ġsource , Ġto Ġbe Ġmanaged Ġby Ġthe ĠSDK . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠExample : ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* Ġmap box Navigation . request Routes ( route Options , Ġobject Ġ: ĠRouter Callback Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġoverride Ġfun Ġon Routes Ready ( routes : ĠList < Directions Route >) Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġ... ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġmap box Navigation . set Routes ( routes ) ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ... ĊĠĠĠĠ Ġ* Ġ}) ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġroute Options Ġparams Ġfor Ġthe Ġroute Ġrequest . ĊĠĠĠĠ Ġ* Ġ** Make Ġsure Ġto Ġuse Ġthe Ġ[ apply Default Navigation Options ] Ġfor Ġthe Ġbest Ġnavigation Ġexperience ** Ġ( and Ġto Ġset Ġrequired Ġrequest Ġparameters ). ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġalso Ġuse Ġ[ apply Language And Voice Unit Options ] Ġget Ġinstructions ' Ġlanguage Ġand Ġvoice Ġunit Ġbased Ġon Ġthe Ġdevice 's Ġ[ Locale ]. ĊĠĠĠĠ Ġ* ĠIt 's Ġalso Ġworth Ġexplor ing Ġother Ġavailable Ġoptions Ġ( like Ġenabling Ġalternative Ġroutes , Ġspecifying Ġdestination Ġapproach Ġtype , Ġdefining Ġway point Ġtypes , Ġetc .) ĊĠĠĠĠ Ġ* Ġ@ param Ġroutes Request Callback Ġlistener Ġthat Ġgets Ġnotified Ġwhen Ġrequest Ġstate Ġchanges ĊĠĠĠĠ Ġ* Ġ@ return ĠrequestId , Ġsee Ġ[ cancel Route Request ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Routes Observer ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Route Progress Observer ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ apply Default Navigation Options ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ apply Language And Voice Unit Options ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequest Routes ( ĊĠĠĠĠĠĠĠ Ġroute Options : ĠRoute Options , ĊĠĠĠĠĠĠĠ Ġroutes Request Callback : ĠRouter Callback ĊĠĠĠ Ġ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdirections Session . request Routes ( route Options , Ġroutes Request Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel s Ġa Ġspecific Ġroute Ġrequest Ġusing Ġthe ĠID Ġreturned Ġby Ġ[ request Routes ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcancel Route Request ( requestId : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdirections Session . cancel Route Request ( requestId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġa Ġlist Ġof Ġroutes . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġlist Ġis Ġnot Ġempty , Ġthe Ġroute Ġat Ġindex Ġ 0 Ġis Ġvalid , Ġand Ġthe Ġtrip Ġsession Ġis Ġstarted , ĊĠĠĠĠ Ġ* Ġthen Ġthe ĠSDK Ġent ers Ġan Ġ` Active ĠGuid ance ` Ġstate Ġand Ġ[ Route Progress ] Ġupdates Ġwill Ġbe Ġavailable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġlist Ġis Ġempty , Ġthe ĠSDK Ġwill Ġexit Ġthe Ġ` Active ĠGuid ance ` Ġstate . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUse Ġ[ Routes Observer ] Ġand Ġ[ Map box Navigation . register Routes Observer ] Ġto Ġobserve Ġwhenever Ġthe Ġroutes Ġlist Ġreference Ġmanaged Ġby Ġthe ĠSDK Ġchanges , Ġregardless Ġof Ġa Ġsource . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġroutes Ġa Ġlist Ġof Ġ[ Directions Route ] s ĊĠĠĠĠ Ġ* Ġ@ param Ġinitial Leg Index Ġstarting Ġleg Ġto Ġfollow . ĠBy Ġdefault Ġthe Ġfirst Ġleg Ġis Ġused . ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ request Routes ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Routes ( routes : ĠList < Directions Route >, Ġinitial Leg Index : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( routes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbilling Controller . on External Route Set ( routes . first ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrer oute Controller ?. interrupt () ĊĊĠĠĠĠĠĠĠ Ġ@ Routes Extra . Routes Update Reason Ġval Ġreason Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroutes . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoutes Extra . ROUT ES _ UPDATE _ REASON _ CLEAN _ UP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoutes Extra . ROUT ES _ UPDATE _ REASON _ NEW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdirections Session . set Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroutes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Leg Index , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreason , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġlist Ġof Ġroutes . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġlist Ġis Ġnot Ġempty , Ġthe Ġroute Ġat Ġindex Ġ 0 Ġis Ġthe Ġone Ġtreated Ġas Ġthe Ġprimary Ġroute ĊĠĠĠĠ Ġ* Ġand Ġused Ġfor Ġroute Ġprogress , Ġoff Ġroute Ġevents Ġand Ġmap - matching Ġcalculations . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġlist Ġof Ġ[ Directions Route ] s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Routes (): ĠList < Directions Route > Ġ= Ġdirections Session . routes ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġan Ġalternative Ġroute Ġusing Ġthe Ġoriginal Ġ[ Route Options ] Ġassociated Ġwith ĊĠĠĠĠ Ġ* Ġ[ Map box Navigation . set Routes ()] Ġcall Ġand Ġ[ Router ] Ġimplementation . ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Route Altern atives Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequest Alternative Routes () Ġ{ ĊĠĠĠĠĠĠĠ Ġroute Altern atives Controller . trigger Alternative Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġthis Ġmethod Ġwhenever Ġthis Ġinstance Ġof Ġthe Ġ[ Map box Navigation ] Ġis Ġnot Ġgoing Ġto Ġbe Ġused Ġanymore Ġand Ġshould Ġrelease Ġall Ġof Ġits Ġresources . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Destroyed ) Ġreturn ĊĠĠĠĠĠĠĠ Ġlogger . d ( Map box Navigation Telemetry . TAG , ĠMessage (" Map box Navigation Ġon Destroy ")) ĊĠĠĠĠĠĠĠ Ġbilling Controller . on Destroy () ĊĠĠĠĠĠĠĠ Ġdirections Session . shutdown () ĊĠĠĠĠĠĠĠ Ġdirections Session . unregister All Routes Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . stop () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Location Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Route Progress Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Off Route Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All State Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Banner Instructions Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Voice Instructions Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Road Objects On Route Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All EH orizon Observer s () ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister All Fallback Versions Observer s () ĊĠĠĠĠĠĠĠ Ġroute Altern atives Controller . unregister All () ĊĠĠĠĠĠĠĠ Ġroute Refresh Controller . stop () ĊĠĠĠĠĠĠĠ Ġdirections Session . set Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroutes Update Reason Ġ= ĠRoutes Extra . ROUT ES _ UPDATE _ REASON _ CLEAN _ UP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreset Trip Session () ĊĠĠĠĠĠĠĠ Ġnavigator . unregister All Observer s () ĊĠĠĠĠĠĠĠ Ġnavigation Version Switch Observer s . clear () ĊĠĠĠĠĠĠĠ Ġar rival Progress Observer . unregister All Observer s () ĊĊĠĠĠĠĠĠĠ Ġnavigation Session . unregister All Navigation Session State Observer s () ĊĠĠĠĠĠĠĠ ĠMap box Navigation Telemetry . destroy ( this @ Map box Navigation ) ĊĠĠĠĠĠĠĠ Ġthread Controller . cancel All Non UIC or outines () ĊĠĠĠĠĠĠĠ Ġthread Controller . cancel All UIC or outines () ĊĠĠĠĠĠĠĠ Ġif NonNull ( reach ability Observer Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe ach ability Service . remove Reach ability Observer ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreach ability Observer Id Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Destroyed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġhas Instance Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Location Observer ]. ĠThe Ġupdates Ġare Ġavailable Ġwhenever Ġthe Ġtrip Ġsession Ġis Ġstarted . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Location Matcher Result ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ start Trip Session ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Location Observer ( location Observer : ĠLocation Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register Location Observer ( location Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Location Observer ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Location Matcher Result ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Location Observer ( location Observer : ĠLocation Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister Location Observer ( location Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Route Progress Observer ]. ĠThe Ġupdates Ġare Ġavailable Ġwhenever Ġthe Ġtrip Ġsession Ġis Ġstarted Ġand Ġa Ġprimary Ġroute Ġis Ġavailable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ start Trip Session ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ request Routes ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Route Progress Observer ( route Progress Observer : ĠRoute Progress Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register Route Progress Observer ( route Progress Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Route Progress Observer ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Route Progress Observer ( route Progress Observer : ĠRoute Progress Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister Route Progress Observer ( route Progress Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Off Route Observer ]. ĠThe Ġupdates Ġare Ġavailable Ġwhenever ĠSDK Ġis Ġin Ġan Ġ` Active ĠGuid ance ` Ġstate Ġand Ġdetect s Ġan Ġoff Ġroute Ġevent . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe ĠSDK Ġwill Ġautomatically Ġrequest Ġredirected Ġroute . ĠYou Ġcan Ġcontrol Ġor Ġobserve Ġthis Ġrequest Ġwith ĊĠĠĠĠ Ġ* Ġ[ R er oute Controller ] Ġand Ġ[ R er oute State ]. ĊĠĠĠĠ Ġ* Ġ@ see Ġget R er oute Controller ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Off Route Observer ( off Route Observer : ĠOff Route Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register Off Route Observer ( off Route Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Off Route Observer ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Off Route Observer ( off Route Observer : ĠOff Route Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister Off Route Observer ( off Route Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Routes Observer ]. ĠThe Ġupdates Ġare Ġavailable Ġwhen Ġa Ġnew Ġlist Ġof Ġroutes Ġis Ġset . ĊĠĠĠĠ Ġ* ĠThe Ġroute Ġat Ġindex Ġ 0 , Ġif Ġexist , Ġwill Ġbe Ġtreated Ġas Ġthe Ġprimary Ġroute Ġfor Ġ' Active ĠGuid ance '. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Routes Observer ( routes Observer : ĠRoutes Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdirections Session . register Routes Observer ( routes Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Routes Observer ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Routes Observer ( routes Observer : ĠRoutes Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdirections Session . unregister Routes Observer ( routes Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Banner Instructions Observer ]. ĠThe Ġupdates Ġare Ġavailable Ġwhenever ĠSDK Ġis Ġin Ġan Ġ` Active ĠGuid ance ` Ġstate . ĊĠĠĠĠ Ġ* ĠThe ĠSDK Ġwill Ġpush Ġthis Ġevent Ġonly Ġonce Ġper Ġroute Ġstep . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Banner Instructions Observer ( ĊĠĠĠĠĠĠĠ Ġbanner Instructions Observer : ĠBanner Instructions Observer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register Banner Instructions Observer ( banner Instructions Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Banner Instructions Observer ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Banner Instructions Observer ( ĊĠĠĠĠĠĠĠ Ġbanner Instructions Observer : ĠBanner Instructions Observer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister Banner Instructions Observer ( banner Instructions Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Voice Instructions Observer ]. ĠThe Ġupdates Ġare Ġavailable Ġwhenever ĠSDK Ġis Ġin Ġan Ġ` Active ĠGuid ance ` Ġstate . ĊĠĠĠĠ Ġ* ĠThe ĠSDK Ġwill Ġpush Ġthis Ġevent Ġonly Ġonce Ġper Ġroute Ġstep . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Voice Instructions Observer ( voice Instructions Observer : ĠVoice Instructions Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register Voice Instructions Observer ( voice Instructions Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Voice Instructions Observer ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Voice Instructions Observer ( voice Instructions Observer : ĠVoice Instructions Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister Voice Instructions Observer ( voice Instructions Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Trip Session State Observer ]. ĠMonitor s Ġthe Ġtrip Ġsession 's Ġstate . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ start Trip Session ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ stop Trip Session ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Trip Session State Observer ( trip Session State Observer : ĠTrip Session State Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register State Observer ( trip Session State Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Trip Session State Observer ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Trip Session State Observer ( trip Session State Observer : ĠTrip Session State Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister State Observer ( trip Session State Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġyour Ġown Ġcontroller Ġto Ġdetermine Ġwhen Ġdrivers Ġar rived Ġat Ġstops Ġvia Ġ[ Arrival Controller ]. ĊĠĠĠĠ Ġ* ĠUse Ġ[ navigate Next Route Leg ] Ġto Ġmanually Ġmove Ġnavigator Ġto Ġthe Ġnext Ġstop . ĠTo Ġreset Ġto Ġthe ĊĠĠĠĠ Ġ* Ġautomatic Ġar rival Ġcontroller , Ġcall Ġ[ set Arrival Controller ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠBy Ġdefault Ġuses Ġ[ Auto Arrival Controller ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSet Ġ* null * Ġdisables Ġar rival Ġat Ġstops Ġcompletely . ĠUse Ġthis Ġif Ġyou Ġwant Ġto Ġwrite Ġyour ĊĠĠĠĠ Ġ* Ġown Ġmechanism Ġfor Ġhandling Ġar rival Ġat Ġstops . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġar rival Controller Ġ[ Arrival Controller ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Arrival Controller ( arrival Controller : ĠAr rival Controller ? Ġ= ĠAuto Arrival Controller ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( arrival Controller Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . unregister Route Progress Observer ( arrival Progress Observer ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar rival Progress Observer . attach ( arrival Controller ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . register Route Progress Observer ( arrival Progress Observer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġ[ R er oute Controller ] Ġthat 's Ġautomatically Ġinvoked Ġwhen Ġuser Ġis Ġoff - route . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠBy Ġdefault Ġuses Ġ[ Map box R er oute Controller ]. ĠSetting Ġ* null * Ġdisables Ġauto - rer oute . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset R er oute Controller ( rer oute Controller : ĠR er oute Controller ? Ġ= Ġdefault R er oute Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlegacy R er oute Controller Ġ= Ġthis . rer oute Controller ĊĠĠĠĠĠĠĠ Ġthis . rer oute Controller Ġ= Ġrer oute Controller ĊĊĠĠĠĠĠĠĠ Ġif Ġ( legacy R er oute Controller ?. state Ġ== ĠR er oute State . Fetching Route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlegacy R er oute Controller . interrupt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrer oute () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġcurrently Ġset Ġ[ R er oute Controller ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġset R er oute Controller ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget R er oute Controller (): ĠR er oute Controller ? Ġ= Ġrer oute Controller ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġ[ Arrival Observer ]. ĠMonitor Ġar rival Ġat Ġstops Ġand Ġdest inations . ĠFor Ġmore Ġcontrol ĊĠĠĠĠ Ġ* Ġof Ġar rival Ġat Ġstops , Ġsee Ġ[ set Arrival Controller ]. ĠUse Ġ[ Route Progress Observer ] Ġto Ġcreate ĊĠĠĠĠ Ġ* Ġcustom Ġexperiences Ġfor Ġar rival Ġbased Ġon Ġtime Ġor Ġdistance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ unregister Arrival Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Arrival Observer ( arrival Observer : ĠAr rival Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġar rival Progress Observer . register Observer ( arrival Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġ[ Arrival Observer ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ register Arrival Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Arrival Observer ( arrival Observer : ĠAr rival Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġar rival Progress Observer . unregister Observer ( arrival Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAfter Ġar riving Ġat Ġa Ġstop , Ġthis Ġcan Ġbe Ġused Ġto Ġmanually Ġdecide Ġwhen Ġto Ġstart ĊĠĠĠĠ Ġ* Ġnavig ating Ġto Ġthe Ġnext Ġstop . ĠUse Ġthe Ġ[ Arrival Controller ] Ġto Ġcontrol Ġwhen Ġto ĊĠĠĠĠ Ġ* Ġcall Ġ[ navigate Next Route Leg ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġnavigation Ġto Ġnext Ġstop Ġcould Ġbe Ġstarted , Ġfalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnavigate Next Route Leg ( callback : ĠLeg Index Updated Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġar rival Progress Observer . navigate Next Route Leg ( callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġan Ġobserver Ġthat Ġgets Ġnotified Ġwhenever Ġthe Ġroute Ġchanges Ġand Ġprovides Ġthe Ġlist ĊĠĠĠĠ Ġ* Ġof Ġroad Ġobjects Ġon Ġthis Ġnew Ġroute , Ġif Ġthere Ġare Ġany . ĠThe Ġobjects Ġreturned Ġhere Ġare Ġequal Ġto ĊĠĠĠĠ Ġ* Ġthe Ġones Ġavailable Ġin Ġ[ Route Progress . up coming Road Objects ], Ġbut Ġthey Ġcapture Ġthe Ġwhole Ġroute ĊĠĠĠĠ Ġ* Ġ( not Ġonly Ġwhat 's Ġahead Ġof Ġus ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġunregister Road Objects On Route Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Road Objects On Route Observer ( ĊĠĠĠĠĠĠĠ Ġroad Objects On Route Observer : ĠRoad Objects On Route Observer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register Road Objects On Route Observer ( road Objects On Route Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġthe Ġroute Ġobjects Ġobserver . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġregister Road Objects On Route Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Road Objects On Route Observer ( ĊĠĠĠĠĠĠĠ Ġroad Objects On Route Observer : ĠRoad Objects On Route Observer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister Road Objects On Route Observer ( road Objects On Route Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġstart Ġlistening ĠEH orizon Ġupdates Ġ[ EH orizon Observer ] Ġshould Ġbe Ġregistered . ĊĠĠĠĠ Ġ* ĠObserver Ġwill Ġbe Ġcalled Ġwhen Ġthe ĠEH orizon Ġchanges . ĊĠĠĠĠ Ġ* ĠTo Ġsave Ġresources Ġand Ġbe Ġmore Ġefficient Ġcallbacks Ġreturn Ġminimum Ġdata . ĊĠĠĠĠ Ġ* ĠTo Ġget Ġ[ EH orizon Edge ] Ġshape Ġor Ġ[ EH orizon Edge Metadata ] Ġuse Ġ[ Map box Navigation . graph Accessor ] ĊĠĠĠĠ Ġ* ĠTo Ġget Ġmore Ġdata Ġabout ĠEH orizon Ġroad Ġobject Ġuse Ġ[ Map box Navigation . road Objects Store ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRegister ing Ġan ĠEH orizon Observer Ġactiv ates Ġthe ĠElectron ic ĠH orizon Ġmodule . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** NOTE **: ĠThe ĠMap box ĠElectron ic ĠH orizon Ġfeature Ġof Ġthe ĠMap box ĠNavigation ĠSDK Ġis Ġin Ġpublic Ġbeta ĊĠĠĠĠ Ġ* Ġand Ġis Ġsubject Ġto Ġchanges , Ġincluding Ġits Ġpr icing . ĠUse Ġof Ġthe Ġfeature Ġis Ġsubject Ġto Ġthe Ġbeta ĊĠĠĠĠ Ġ* Ġproduct Ġrestrictions Ġin Ġthe ĠMap box ĠTerms Ġof ĠService . ĊĠĠĠĠ Ġ* ĠMap box Ġre serves Ġthe Ġright Ġto Ġeliminate Ġany Ġfree Ġtier Ġor Ġfree Ġevaluation Ġoffers Ġat Ġany Ġtime Ġand ĊĠĠĠĠ Ġ* Ġrequire Ġcustomers Ġto Ġplace Ġan Ġorder Ġto Ġpurchase Ġthe ĠMap box ĠElectron ic ĠH orizon Ġfeature , ĊĠĠĠĠ Ġ* Ġregardless Ġof Ġthe Ġlevel Ġof Ġuse Ġof Ġthe Ġfeature . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġunregister EH orizon Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġfun Ġregister EH orizon Observer ( e H orizon Observer : ĠEH orizon Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . register EH orizon Observer ( e H orizon Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġa ĠEH orizon Ġobserver . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUn register ing Ġall Ġob servers Ġde activ ates Ġthe Ġmodule . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** NOTE **: ĠThe ĠMap box ĠElectron ic ĠH orizon Ġfeature Ġof Ġthe ĠMap box ĠNavigation ĠSDK Ġis Ġin Ġpublic Ġbeta ĊĠĠĠĠ Ġ* Ġand Ġis Ġsubject Ġto Ġchanges , Ġincluding Ġits Ġpr icing . ĠUse Ġof Ġthe Ġfeature Ġis Ġsubject Ġto Ġthe Ġbeta ĊĠĠĠĠ Ġ* Ġproduct Ġrestrictions Ġin Ġthe ĠMap box ĠTerms Ġof ĠService . ĊĠĠĠĠ Ġ* ĠMap box Ġre serves Ġthe Ġright Ġto Ġeliminate Ġany Ġfree Ġtier Ġor Ġfree Ġevaluation Ġoffers Ġat Ġany Ġtime Ġand ĊĠĠĠĠ Ġ* Ġrequire Ġcustomers Ġto Ġplace Ġan Ġorder Ġto Ġpurchase Ġthe ĠMap box ĠElectron ic ĠH orizon Ġfeature , ĊĠĠĠĠ Ġ* Ġregardless Ġof Ġthe Ġlevel Ġof Ġuse Ġof Ġthe Ġfeature . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġregister EH orizon Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġfun Ġunregister EH orizon Observer ( e H orizon Observer : ĠEH orizon Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrip Session . unregister EH orizon Observer ( e H orizon Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġuser Ġfeedback Ġabout Ġan Ġissue Ġor Ġproblem Ġwith Ġthe ĠNavigation ĠSDK . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback Type Ġone Ġof Ġ[ Feedback Event . Type ] ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġdescription Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback Source Ġone Ġof Ġ[ Feedback Event . Source ] ĊĠĠĠĠ Ġ* Ġ@ param Ġscreenshot Ġencoded Ġscreenshot ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback SubType Ġarray Ġof Ġ[ Feedback Event . SubType ] Ġ( optional ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Feedback Helper . get Feedback Sub Types ] ĊĠĠĠĠ Ġ* Ġto Ġretrieve Ġpossible Ġfeedback Ġsub types Ġfor Ġa Ġgiven Ġ[ feedback Type ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ View Utils . capture ] Ġto Ġcapture Ġscreenshots ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Feedback Helper . encode Screenshot ] Ġto Ġencode Ġscreenshots ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġpost User Feedback ( ĊĠĠĠĠĠĠĠ Ġ@ Feedback Event . Type Ġfeedback Type : ĠString , ĊĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Feedback Event . Source Ġfeedback Source : ĠString , ĊĠĠĠĠĠĠĠ Ġscreenshot : ĠString , ĊĠĠĠĠĠĠĠ Ġfeedback SubType : ĠArray < @ Feedback Event . SubType ĠString >? Ġ= Ġempty Array () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMap box Navigation Telemetry . post User Feedback ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Source , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreenshot , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback SubType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġuser Ġfeedback Ġabout Ġan Ġissue Ġor Ġproblem Ġwith Ġthe ĠNavigation ĠSDK . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMethod Ġcan Ġbe Ġinvoked Ġout Ġof Ġthe Ġtrip Ġsession Ġ( wh enever Ġuntil Ġ[ on Destroy ] Ġis Ġcalled ), Ġbecause ĊĠĠĠĠ Ġ* Ġa Ġfeedback Ġis Ġattached Ġto Ġpassed Ġlocation Ġand Ġtime Ġin Ġthe Ġpast Ġwhen Ġ[ Feedback Metadata ] Ġwas ĊĠĠĠĠ Ġ* Ġgenerated Ġ( see Ġ[ provide Feedback Metadata Wrapper ]). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback Type Ġone Ġof Ġ[ Feedback Event . Type ] ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġdescription Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback Source Ġone Ġof Ġ[ Feedback Event . Source ] ĊĠĠĠĠ Ġ* Ġ@ param Ġscreenshot Ġencoded Ġscreenshot ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback SubType Ġarray Ġof Ġ[ Feedback Event . SubType ] Ġ( optional ) ĊĠĠĠĠ Ġ* Ġ@ param Ġfeedback Metadata Ġuse Ġit Ġto Ġattach Ġfeedback Ġto Ġa Ġspecific Ġpassed Ġlocation . ĊĠĠĠĠ Ġ* ĠSee Ġ[ Feedback Metadata ] Ġand Ġ[ Feedback Metadata Wrapper ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Feedback Helper . get Feedback Sub Types ] ĊĠĠĠĠ Ġ* Ġto Ġretrieve Ġpossible Ġfeedback Ġsub types Ġfor Ġa Ġgiven Ġ[ feedback Type ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ View Utils . capture ] Ġto Ġcapture Ġscreenshots ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Feedback Helper . encode Screenshot ] Ġto Ġencode Ġscreenshots ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġpost User Feedback ( ĊĠĠĠĠĠĠĠ Ġ@ Feedback Event . Type Ġfeedback Type : ĠString , ĊĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Feedback Event . Source Ġfeedback Source : ĠString , ĊĠĠĠĠĠĠĠ Ġscreenshot : ĠString , ĊĠĠĠĠĠĠĠ Ġfeedback SubType : ĠArray < @ Feedback Event . SubType ĠString >? Ġ= Ġempty Array (), ĊĠĠĠĠĠĠĠ Ġfeedback Metadata : ĠFeedback Metadata , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMap box Navigation Telemetry . post User Feedback ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Source , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreenshot , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback SubType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeedback Metadata , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġwrapper Ġof Ġ[ Feedback Metadata ]. Ġ[ Feedback Metadata ] Ġis Ġused Ġto Ġsend Ġdeferred ĊĠĠĠĠ Ġ* Ġfeedback Ġattached Ġto Ġpassed Ġlocation . ĠIt Ġcontains Ġdata Ġ( like Ġlocation , Ġtime ) Ġwhen Ġmethod Ġis ĊĠĠĠĠ Ġ* Ġinvoked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote : Ġmethod Ġthrows Ġ[ IllegalStateException ] Ġif Ġtri ps Ġsession Ġis Ġnot ĊĠĠĠĠ Ġ* Ġstarted Ġ([ start Trip Session ]) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Preview Map box Navigation API ĊĠĠĠ Ġfun Ġprovide Feedback Metadata Wrapper (): ĠFeedback Metadata Wrapper Ġ= ĊĠĠĠĠĠĠĠ ĠMap box Navigation Telemetry . provide Feedback Metadata Wrapper () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStart Ġob serving Ġalternatives Ġroutes Ġfor Ġa Ġtrip Ġsession Ġvia Ġ[ Route Altern atives Observer ]. ĊĠĠĠĠ Ġ* ĠRoute Ġalternatives Ġare Ġrequested Ġperiodically Ġbased Ġon Ġ[ Route Altern atives Options ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġroute Altern atives Observer ĠRoute Altern atives Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Route Altern atives Observer ( route Altern atives Observer : ĠRoute Altern atives Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroute Altern atives Controller . register ( route Altern atives Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStop Ġob serving Ġthe Ġpossibility Ġof Ġroute Ġalternatives . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġroute Altern atives Observer ĠRoute Altern atives Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Route Altern atives Observer ( route Altern atives Observer : ĠRoute Altern atives Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroute Altern atives Controller . unregister ( route Altern atives Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStart Ġob serving Ġnavigation Ġtiles Ġversion Ġswitch Ġvia Ġ[ Navigation Version Switch Observer ]. ĊĠĠĠĠ Ġ* ĠNavigation Ġmight Ġswitch Ġto Ġa Ġfallback Ġtiles Ġversion Ġwhen Ġtarget Ġtiles Ġare Ġnot Ġavailable ĊĠĠĠĠ Ġ* Ġand Ġreturn Ġback Ġto Ġthe Ġtarget Ġversion Ġwhen Ġtiles Ġare Ġloaded . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġobserver ĠNavigation Version Switch Observer ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Navigation Version Switch Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Navigation Version Switch Observer ( observer : ĠNavigation Version Switch Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Version Switch Observer s . add ( observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStop Ġob serving Ġtiles Ġversion Ġswitch Ġvia Ġ[ Navigation Version Switch Observer ]. ĊĠĠĠĠ Ġ* ĠNavigation Ġmight Ġswitch Ġto Ġa Ġfallback Ġtiles Ġversion Ġwhen Ġtarget Ġtiles Ġare Ġnot Ġavailable ĊĠĠĠĠ Ġ* Ġand Ġreturn Ġback Ġto Ġthe Ġtarget Ġversion Ġwhen Ġtiles Ġare Ġloaded . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġobserver ĠNavigation Version Switch Observer ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Navigation Version Switch Observer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Navigation Version Switch Observer ( observer : ĠNavigation Version Switch Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Version Switch Observer s . remove ( observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġ[ Navigation Session State Observer ] Ġto Ġbe Ġnotified Ġof Ġthe Ġvarious ĠSession Ġstates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnavigation Session State Observer ĠNavigation Session State Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Navigation Session State Observer ( ĊĠĠĠĠĠĠĠ Ġnavigation Session State Observer : ĠNavigation Session State Observer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Session . register Navigation Session State Observer ( navigation Session State Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġa Ġ[ Navigation Session State Observer ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnavigation Session State Observer ĠNavigation Session State Observer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Navigation Session State Observer ( ĊĠĠĠĠĠĠĠ Ġnavigation Session State Observer : ĠNavigation Session State Observer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Session . unregister Navigation Session State Observer ( navigation Session State Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Session ( with Trip Service : ĠBoolean , Ġwith Replay Enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun IfNot Destroyed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . start ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Trip Service Ġ= Ġwith Trip Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Replay Enabled Ġ= Ġwith Replay Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestore Trip Session Route () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel Field ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonitor Notification ActionButton ( it . get ( null ) Ġas ĠReceive Channel < Notification Action >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestore Trip Session Route () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleg Index Ġ= Ġlatest Leg Index Ġ?: Ġdirections Session . initial Leg Index ĊĠĠĠĠĠĠĠ Ġtrip Session . set Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session . routes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleg Index , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoutes Extra . ROUT ES _ UPDATE _ REASON _ NEW , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Internal Routes Observer () Ġ= ĠRoutes Observer Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠ Ġlatest Leg Index Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( trip Session . getState () Ġ== ĠTrip Session State . STARTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . set Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . routes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session . initial Leg Index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . reason , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( result . routes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute Refresh Controller . restart ( result . routes . first ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute Refresh Controller . stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Internal Off Route Observer () Ġ= ĠOff Route Observer Ġ{ Ġoff Route Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( off Route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrer oute () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Internal Fallback Versions Observer () Ġ= Ġobject Ġ: ĠF allback Versions Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fallback Versions Found ( versions : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( versions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġlast Ġversion Ġin Ġthe Ġlist Ġis Ġthe Ġlatest Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtiles Version Ġ= Ġversions . last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecreate Navigator Instance ( is Fallback Ġ= Ġtrue , Ġtiles Version Ġ= Ġtiles Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Version Switch Observer s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Switch To Fallback Version ( tiles Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Fallback Versions Observer . on Fallback Versions Found Ġcalled Ġwith Ġan Ġempty Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" versions Ġlist , Ġnavigator Ġcan 't Ġbe Ġre created ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Can Return To Latest ( version : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecreate Navigator Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Fallback Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiles Version Ġ= Ġnavigation Options . routing Tiles Options . tiles Version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Version Switch Observer s . forEach Ġ{ Ġobserver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver . on Switch To Target Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . routing Tiles Options . tiles Version . take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrecreate Navigator Instance ( is Fallback : ĠBoolean , Ġtiles Version : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" re create Navigator Instance (). Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Fallback Ġ= Ġ$ is Fallback , Ġtiles Version Ġ= Ġ$ tiles Version " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmain Job Controller . scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . re create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . device Profile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Tiles Config ( is Fallback , Ġtiles Version ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Recorder . file Directory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . accessToken Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Recorder . history Recorder Handle Ġ= Ġnavigator . get History Recorder Handle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session . routes . first OrNull ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . set Route ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroutes Ġ= Ġdirections Session . routes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Session . get Route Progress ()?. current Leg Progress ?. leg Index Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrer oute () Ġ{ ĊĠĠĠĠĠĠĠ Ġrer oute Controller ?. rer oute Ġ{ Ġroutes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Session . set Routes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroutes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroutes Update Reason Ġ= ĠRoutes Extra . ROUT ES _ UPDATE _ REASON _ R ER OUT E ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobtain UserAgent (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ MAP BOX _ NAV IG ATION _ USER _ AGENT _ BASE /${ Build Config . MAP BOX _ NAV IG ATION _ VERSION _ NAME }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmonitor Notification ActionButton ( channel : ĠReceive Channel < Notification Action >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Job Controller . scope . monitor Channel With Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġnotification Action Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( notification Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Action . END _ NAV IG ATION Ġ-> Ġtrip Session . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġparameters Ġfor ĠMap box Ġdefault Ġmodules , Ġrecursively Ġif Ġa Ġmodule Ġdepends Ġon Ġother ĠMap box Ġmodules . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġparams Provider ( type : ĠMap box Module Type ): ĠArray < Module Provider Argument > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Type . Navigation Router Ġ-> ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Ġ?: Ġthrow ĠRuntimeException ( MAP BOX _ NAV IG ATION _ TOKEN _ EXCEPTION _ ROUT ER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( Context :: class . java , Ġnavigation Options . application Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUrl Sku Token Provider :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Navigation Accounts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Native Navigator :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Native Navigator Impl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( Connectivity Handler :: class . java , Ġconnectivity Handler ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( Thread Controller :: class . java , Ġthread Controller ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Type . Navigation Trip Notification Ġ-> ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( Navigation Options :: class . java , Ġnavigation Options ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Provider Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDistance Formatter :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Distance Formatter ( navigation Options . distance Formatter Options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Type . Common Logger Ġ-> ĠarrayOf () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Type . Common Library Loader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" not Ġsupported : Ġ$ type ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Type . Common HttpClient Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" not Ġsupported : Ġ$ type ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Module Type . Map Telemetry Ġ-> Ġthrow ĠIllegalArgumentException (" not Ġsupported : Ġ$ type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Tiles Config ( ĊĠĠĠĠĠĠĠ Ġis Fallback : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġtiles Version : ĠString ĊĠĠĠ Ġ): ĠT iles Config Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠStrict Mode Ġmay Ġreport Ġa Ġviolation Ġas Ġwe 're Ġcreating Ġa ĠFile Ġfrom Ġthe ĠMain ĊĠĠĠĠĠĠĠ Ġval Ġoffline Files Path Ġ= ĠRouting Tiles Files ( navigation Options . application Context , Ġlogger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. absolute Path ( navigation Options . routing Tiles Options ) ĊĠĠĠĠĠĠĠ Ġval Ġdataset Ġ= ĠStringBuilder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( navigation Options . routing Tiles Options . tiles Dataset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( navigation Options . routing Tiles Options . tiles Profile ) ĊĠĠĠĠĠĠĠ Ġ}. toString () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠT iles Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffline Files Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . routing Tiles Options . tile Store , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTHREAD S _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTile Endpoint Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . routing Tiles Options . tiles Base Uri . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdataset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiles Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . accessToken Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUSER _ AGENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Config . NAV _ NATIVE _ SDK _ VERSION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Fallback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . routing Tiles Options . tiles Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Options . routing Tiles Options . min Days Between Server And Local Tiles Version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun IfNot Destroyed ( block : Ġ() Ġ-> ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( is Destroyed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThis Ġinstance Ġof ĠMap box Navigation Ġis Ġdestroyed . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhas Instance Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠTag (" M bx Navigation ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSER _ AGENT : ĠString Ġ= Ġ" Map box Navigation Native " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTHREAD S _ COUNT Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠONE _ SECOND _ IN _ M ILL IS Ġ= Ġ 1 0 0 0 . 0 ĊĠĠĠ Ġ} Ċ } Ċ