/** Ċ Ġ* ĠCreated Ġby Ġmen ion Ġon Ġ 1 0 . Ġ 7 . Ġ 2 0 1 4 . Ċ Ġ* ĠClass Ġis Ġpart Ġof ĠL ocus Ġproject Ċ Ġ*/ Ċ package Ġloc us . api . android . features . compute Track Ċ Ċ import Ġloc us . api . objects . St orable Ċ import Ġloc us . api . objects . extra . Geo Data Extra Ċ import Ġloc us . api . objects . extra . Location Ċ import Ġloc us . api . utils . DataReader BigEndian Ċ import Ġloc us . api . utils . Data Writer BigEndian Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠContainer Ġfor Ġparameters Ġneeded Ġto Ġcompute Ġroute Ġover Ġ[ Compute Track Service ] Ġinstance . Ċ Ġ* Ċ Ġ* ĠEmpty Ġconstructor Ġfor Ġ' St orable ' Ġclass . ĠDo Ġnot Ġuse Ġdirectly Ċ Ġ*/ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ class ĠCompute Track Parameters () Ġ: ĠSt orable () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠType Ġof Ġtrack Ġthat Ġshould Ġbe Ġcompute . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtype : ĠInt Ġ= ĠGeo Data Extra . VALUE _ RTE _ TYPE _ CAR ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġif Ġuser Ġwants Ġwith Ġnavigation Ġorders . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Compute Instructions : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDirection Ġangle Ġof Ġmovement Ġat Ġfirst Ġpoint Ġ[ Â° ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcurrent Direction : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Direction Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFlag Ġif Ġparameters Ġhas Ġdefined Ġstarting Ġdirection . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhas Direction : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġdefined Ġvia - points Ġ( location ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġlocations : ĠArray < Location > Ġ= ĠarrayOf () ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġnew Ġparameters Ġfor Ġtrack Ġcompute . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġtype Ġof Ġtrack Ġto Ġcompute ĊĠĠĠĠ Ġ* Ġ@ param Ġlo cs Ġlist Ġof Ġdefined Ġpoints Ġover Ġwhich Ġroute Ġshould Ġbe Ġcomputed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( type : ĠInt , Ġlo cs : ĠArray < Location >) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġif Ġ( locs . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ("' locs ' Ġparameter " Ġ+ Ġ" Ġcannot Ġbe Ġ' null ' Ġor Ġsmaller Ġthen Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . locations Ġ= Ġlo cs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ************************************************ * ĊĠĠĠ Ġ// ĠSTOR ABLE ĠPART ĊĠĠĠ Ġ// ************************************************ * ĊĊĠĠĠ Ġoverride Ġfun Ġget Version (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġread Object ( version : ĠInt , Ġdr : ĠData Reader BigEndian ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġdr . readInt () ĊĠĠĠĠĠĠĠ Ġis Compute Instructions Ġ= Ġdr . read Boolean () ĊĠĠĠĠĠĠĠ Ġcurrent Direction Ġ= Ġdr . read Float () ĊĊĠĠĠĠĠĠĠ Ġ// Ġread Ġlocations ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġdr . readInt () ĊĠĠĠĠĠĠĠ Ġval Ġlo cs Ġ= Ġarray ListOf < Location >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlo cs . add ( Location (). apply Ġ{ Ġread ( dr ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlocations Ġ= Ġlo cs . to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġ// ĠV 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( version Ġ>= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Direction Ġ= Ġdr . read Boolean () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġwrite Object ( dw : ĠData Writer BigEndian ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdw . writeInt ( type ) ĊĠĠĠĠĠĠĠ Ġdw . write Boolean ( is Compute Instructions ) ĊĠĠĠĠĠĠĠ Ġdw . write Float ( current Direction ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwrite Ġlocations ĊĠĠĠĠĠĠĠ Ġdw . writeInt ( locations . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( m Loc Ġin Ġlocations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdw . write St orable ( m Loc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠV 1 ĊĠĠĠĠĠĠĠ Ġdw . write Boolean ( has Direction ) ĊĠĠĠ Ġ} Ċ } Ċ