package Ġcom . mapbox . services . android . navigation . v 5 . utils . time Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . style . Relative Size Span Ċ import Ġandroid . text . style . Style Span Ċ import Ġcom . mapbox . services . android . navigation . R Ċ import Ġcom . mapbox . services . android . navigation . v 5 . navigation . Time Format Type Ċ import Ġcom . mapbox . services . android . navigation . v 5 . utils . extensions . combine Span Ċ import Ġcom . mapbox . services . android . navigation . v 5 . utils . span . Span Item Ċ import Ġcom . mapbox . services . android . navigation . v 5 . utils . span . Text Span Item Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġtim ber . log . Tim ber Ċ Ċ object ĠTime Formatter Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTIME _ STRING _ FORMAT Ġ= Ġ" Ġ% s Ġ" ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġformat Time ( ĊĠĠĠĠĠĠĠ Ġtime : ĠCalendar , ĊĠĠĠĠĠĠĠ Ġroute Duration : ĠDouble , ĊĠĠĠĠĠĠĠ Ġ@ Time Format Type Ġtype : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Device Tw enty Four Hour Format : ĠBoolean ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtime . add ( Calendar . SECOND , Ġroute Duration . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġchain Ġ= ĠTime Formatting Chain () ĊĠĠĠĠĠĠĠ Ġreturn Ġchain . setup ( is Device Tw enty Four Hour Format ). obtain Time Formatted ( type , Ġtime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġformat Time Remaining ( context : ĠContext , Ġroute Duration : ĠDouble ): ĠSp ann able StringBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġseconds Ġ= Ġroute Duration . to Long () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( seconds Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Duration Ġmust Ġbe Ġgreater Ġthan Ġzero . ĠInvalid Ġduration Ġ% s ", Ġseconds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdays Ġ= ĠTimeUnit . SECONDS . to Days ( seconds ) ĊĠĠĠĠĠĠĠ Ġseconds Ġ-= ĠTimeUnit . DAYS . to Seconds ( days ) ĊĠĠĠĠĠĠĠ Ġval Ġhours Ġ= ĠTimeUnit . SECONDS . to Hours ( seconds ) ĊĠĠĠĠĠĠĠ Ġseconds Ġ-= ĠTimeUnit . HOUR S . to Seconds ( hours ) ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= ĠTimeUnit . SECONDS . to Minutes ( seconds Ġ+ ĠTimeUnit . MIN UTES . to Seconds ( 1 ) Ġ/ Ġ 2 ) Ġ// Ġround Ġit Ġto Ġnext Ġminute Ġif Ġseconds Ġis Ġmore Ġor Ġequal Ġthan Ġ 3 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Span Items Ġ= ĠArrayList < Span Item >() ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠ Ġformat Days ( resources , Ġdays , Ġtext Span Items ) ĊĠĠĠĠĠĠĠ Ġformat Hours ( context , Ġhours , Ġtext Span Items ) ĊĠĠĠĠĠĠĠ Ġformat Minutes ( context , Ġminutes , Ġtext Span Items ) ĊĠĠĠĠĠĠĠ Ġformat No Data ( context , Ġdays , Ġhours , Ġminutes , Ġtext Span Items ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Span Items . combine Span () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Days ( resources : ĠResources , Ġdays : ĠLong , Ġtext Span Items : ĠMutable List < Span Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( days Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Quantity String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Quantity String ( R . plurals . numberOf Days , Ġdays . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday String Ġ= ĠString . format ( TIME _ STRING _ FORMAT , Ġday Quantity String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Style Span ( Type face . BOLD ), Ġdays . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Relative Size Span ( 1 f ), Ġday String )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Hours ( context : ĠContext , Ġhours : ĠLong , Ġtext Span Items : ĠMutable List < Span Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hours Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhour String Ġ= ĠString . format ( TIME _ STRING _ FORMAT , Ġcontext . getString ( R . string . hr )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Style Span ( Type face . BOLD ), Ġhours . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Relative Size Span ( 1 f ), Ġhour String )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Minutes ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġminutes : ĠLong , ĊĠĠĠĠĠĠĠ Ġtext Span Items : ĠMutable List < Span Item > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( minutes Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminute String Ġ= ĠString . format ( TIME _ STRING _ FORMAT , Ġcontext . getString ( R . string . min )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Style Span ( Type face . BOLD ), Ġminutes . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Relative Size Span ( 1 f ), Ġminute String )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat No Data ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġdays : ĠLong , ĊĠĠĠĠĠĠĠ Ġhours : ĠLong , ĊĠĠĠĠĠĠĠ Ġminutes : ĠLong , ĊĠĠĠĠĠĠĠ Ġtext Span Items : ĠMutable List < Span Item > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( days Ġ== Ġ 0 L Ġ&& Ġhours Ġ== Ġ 0 L Ġ&& Ġminutes Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminute String Ġ= ĠString . format ( TIME _ STRING _ FORMAT , Ġcontext . getString ( R . string . min )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Style Span ( Type face . BOLD ), Ġ 1 . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Span Items . add ( Text Span Item ( Relative Size Span ( 1 f ), Ġminute String )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ