package Ġcom . example . my jet pack application . business . speech . baidu Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . baidu . tts . client . Speech Error Ċ import Ġcom . baidu . tts . client . Speech Synt hes izer Ċ import Ġcom . baidu . tts . client . Speech Synt hes izer Listener Ċ import Ġcom . baidu . tts . client . T ts Mode Ċ import Ġcom . example . my jet pack application . annotation processor . business . annotation . Business Ċ import Ġcom . example . my jet pack application . business . speech . baidu . databinding . Activity Speech B aid u Binding Ċ import Ġcom . github . se el ikes . android . mv vm . basic . Basic Activity Ċ import Ġcom . java . lib . o il . file . FileUtils Ċ import Ġcom . or h ano but . logger . Logger Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ Ċ @ Business ( path Ġ= Ġ"/ business / speech / baidu ", Ġtitle Ġ= Ġ" speech _ baidu _ title ", Ġparent Ġ= Ġ" speech _ title ") Ċ class ĠSpeech B aid u Activity Ġ: ĠBasic Activity < Speech B aid u Activity , ĠSpeech B aid u ViewModel , ĠActivity Speech B aid u Binding >() Ġ{ ĊĠĠĠ Ġval Ġsynt hes izer : ĠSpeech Synt hes izer Ġ= ĠSpeech Synt hes izer . getInstance () ĊĠĠĠ Ġvar Ġutter ance Id : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Context ( this ) ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Speech Synt hes izer Listener ( object Ġ: ĠSpeech Synt hes izer Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Synt hesize Start ( utter ance Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Synt hesize Start , Ġutter ance Id : Ġ$ utter ance Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Speech B aid u Activity . utter ance Id Ġ= Ġutter ance Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Speech Finish ( utter ance Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Speech Finish , Ġutter ance Id : Ġ$ utter ance Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Speech Progress Changed ( utter ance Id : ĠString ?, Ġprogress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Speech Progress Changed , Ġutter ance Id : Ġ$ utter ance Id ; Ġprogress : Ġ$ progress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Synt hesize Finish ( utter ance Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Synt hesize Finish , Ġutter ance Id : Ġ$ utter ance Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Speech Start ( utter ance Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Speech Start , Ġutter ance Id : Ġ$ utter ance Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Synt hesize Data Ar rived ( utter ance Id : ĠString ?, Ġbytes : ĠByteArray ?, Ġprogress : ĠInt , Ġtotal : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Speech Start , Ġutter ance Id : Ġ$ utter ance Id ; Ġbytes : Ġ${ bytes ?. join ToString ( separator Ġ= Ġ"") Ġ{ Ġbyte Ġ-> Ġbyte . toString ( 1 6 ) Ġ}}; Ġprogress : Ġ$ progress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( utter ance Id : ĠString ?, Ġerror : ĠSpeech Error ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" onCreate . synt hes izer . on Speech Start , Ġutter ance Id : Ġ$ utter ance Id ; Ġerror . code : Ġ${ error ?. code }; Ġerror . description : Ġ${ error ?. description }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġapplication Info Ġ= Ġpackage Manager . getApplication Info ( packageName , ĠPackage Manager . GET _ META _ DATA ) ĊĠĠĠĠĠĠĠ ĠLogger . i (" BA ID U _ SPE E CH _ APP _ ID : Ġ${ application Info . metaData . getInt (" BA ID U _ SPE E CH _ APP _ ID ") }") ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set AppId ( application Info . metaData . getInt (" BA ID U _ SPE E CH _ APP _ ID "). toString ()) ĊĠĠĠĠĠĠĠ ĠLogger . i (" BA ID U _ SPE E CH _ APP _ KEY : Ġ${ application Info . metaData . getString (" BA ID U _ SPE E CH _ APP _ KEY ") }; ĠB A ID U _ SPE E CH _ APP _ SECRET : Ġ${ application Info . metaData . getString (" BA ID U _ SPE E CH _ APP _ SECRET ") }") ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set ApiKey ( application Info . metaData . getString (" BA ID U _ SPE E CH _ APP _ KEY "), Ġapplication Info . metaData . getString (" BA ID U _ SPE E CH _ APP _ SECRET ")) ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ SPE AK ER , Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ VOLUME , Ġ" 9 ") ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ SPEED , Ġ" 5 ") ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ P ITCH , Ġ" 5 ") ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ MIX _ MODE , ĠSpeech Synt hes izer . MIX _ MODE _ DEFAULT ) ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ TT S _ TEXT _ MODEL _ FILE , Ġcopy Assets ( this , Ġ" bd _ et ts _ text . dat ")) ĊĠĠĠĠĠĠĠ Ġsynt hes izer . set Param ( Speech Synt hes izer . PARAM _ TT S _ SPE E CH _ MODEL _ FILE , Ġcopy Assets ( this , Ġ" bd _ et ts _ common _ speech _ f 7 _ mand _ eng _ high _ am - mg c _ v 3 . 6 . 0 _ 2 0 1 9 0 1 1 7 . dat ")) ĊĠĠĠĠĠĠĠ Ġval Ġauth Info Ġ= Ġsynt hes izer . auth ( T ts Mode . MIX ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! auth Info . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠR . string . speech _ baidu _ err _ auth , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" auth Info . notify Message : Ġ${ auth Info . notify Message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġauth Info . java Class . fields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i (" auth Info .${ field . name }: Ġ${ field . get ( auth Info )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsynt hes izer . init T ts ( T ts Mode . MIX ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠR . string . speech _ baidu _ err _ init _ tts , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e (" onCreate , Ġresult : Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠR . string . speech _ baidu _ err _ init _ success , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġsynt hes izer . resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġsynt hes izer . pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġsynt hes izer . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Model ( savedInstanceState : ĠBundle ?): ĠSpeech B aid u ViewModel Ġ= ĠSpeech B aid u ViewModel ( this , ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ speech _ baidu )) ĊĊĠĠĠ Ġprivate Ġfun Ġcopy Assets ( context : ĠContext , Ġpath : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġcontext . assets . open ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġtarget File Ġ= ĠFile ( context . cacheDir , Ġ"${ path . hashCode ()} ${ path . substring ( path . lastIndexOf (". ")) }") ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠFileOutputStream ( target File ) ĊĠĠĠĠĠĠĠ ĠFileUtils . getInstance (). write Stream To Stream ( input , Ġoutput ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget File . absolute Path ĊĠĠĠ Ġ} Ċ }