package Ġcom . switch am aj ig . think al oud Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . speech . tts . Ut ter ance Progress Listener Ċ Ċ /** Ċ Ġ* ĠWrap Ġt ts Ġto Ġe caps ulate Ġdetails Ġand Ġlog Ġoutput Ċ Ġ*/ Ċ Ċ interface ĠRe co Starter Ġ{ ĊĠĠĠ Ġfun Ġstart Reco () Ċ } Ċ Ċ class ĠT ts Controller ( val Ġcontext : ĠContext , Ġval Ġlogger : ĠLogger , Ġval Ġre co Starter : ĠRe co Starter ) Ġ{ ĊĠĠĠ Ġval ĠTAG Ġ= Ġ" TT S Controller " ĊĠĠĠ Ġval ĠSTART _ RE CO _ ID Ġ= Ġ" START _ RE CO _ ID " ĊĠĠĠ Ġval ĠOTHER _ ID Ġ= Ġ" OTHER _ ID " ĊĊĠĠĠ Ġvar Ġt ts Initialized Ġ= Ġfalse ĊĠĠĠ Ġval Ġt ts : ĠText ToS peech Ġ= ĠText ToS peech ( context , Ġ{ i Ġ-> Ġt ts Initialized Ġ= Ġ( i Ġ!= ĠText ToS peech . ERROR )}) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġt ts . setOn Ut ter ance Progress Listener ( object : ĠUt ter ance Progress Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Done ( id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( START _ RE CO _ ID . equals ( id )) Ġre co Starter . start Reco () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( utter ance Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . log ( TAG , Ġ" tts Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart ( utter ance Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġspeak ( text : ĠCharSequence , Ġstart Reco When Done : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġif ( start Reco When Done ) ĠSTART _ RE CO _ ID Ġelse ĠOTHER _ ID ĊĠĠĠĠĠĠĠ Ġlogger . log ( TAG , Ġtext . toString () Ġ+ Ġ":" Ġ+ Ġid ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! tts Initialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . log ( TAG , Ġ" TT S Ġnot Ġinitialized ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġt ts . speak ( text , ĠText ToS peech . QUEUE _ ADD , Ġnull , Ġid ) ĊĠĠĠ Ġ} Ċ }