package Ġnp . com . intel aid . cash Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . media . MediaPlayer Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . V ibr ator Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġcom . cam er akit . Camera Kit View Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Executors ĊĊĊĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠText ToS peech . OnInit Listener Ġ{ ĊĠĠĠ Ġ// ĠImplementation Ġof ĠText ToS peech ĠAbstract Ġclass ĊĠĠĠ Ġoverride Ġfun Ġon Init ( status : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext ToS peech Status Ġ= Ġstatus ĊĠĠĠĠĠĠĠ Ġplay Initial Message ( text ToS peech Status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMODEL _ PATH Ġ= Ġ" Cash . t flite " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLABEL _ PATH Ġ= Ġ" labels . txt " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINPUT _ SIZE Ġ= Ġ 2 2 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclassifier : ĠClass ifier ĊĠĠĠ Ġprivate Ġval Ġexecutor Ġ= ĠExec utors . new Single Thread Executor () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcamera View : ĠCamera Kit View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresult Output : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcapture Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġt ts : ĠText ToS peech ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbuilder : ĠAlertDialog . Builder ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdialog View : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdialog Message : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdialog : ĠAlertDialog ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġn ep ali Audio : ĠN ep ali Audio ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaudio Player : ĠMedia Player ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlanguage Preference : Language Preference ĊĠĠĠ Ġprivate Ġ Ġvar Ġtext ToS peech Status : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġ Ġvar Ġresult : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġinit Tensor Flow And Load Model () ĊĊĠĠĠĠĠĠĠ Ġn ep ali Audio Ġ= ĠN ep ali Audio ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Text Ġto ĠSpeech ĊĠĠĠĠĠĠĠ Ġt ts Ġ= ĠText ToS peech ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġaudio Player Ġ= Ġn ep ali Audio . initial Message Audio () ĊĊĠĠĠĠĠĠĠ Ġlanguage Preference Ġ= ĠLanguage Preference ( this ) ĊĊĊĠĠĠĠĠĠĠ Ġcamera View Ġ= ĠfindViewById ( R . id . camera View ) ĊĠĠĠĠĠĠĠ Ġresult Output Ġ= ĠfindViewById ( R . id . result Output ) ĊĠĠĠĠĠĠĠ Ġcapture Button Ġ= ĠfindViewById ( R . id . capture Button ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDialog ĠBox ĊĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . progress _ dialog , Ġnull ) ĊĠĠĠĠĠĠĠ Ġdialog Message Ġ= Ġdialog View . findViewById ( R . id . message ) ĊĠĠĠĠĠĠĠ Ġdialog Message . text Ġ= Ġ" Comp uting ..." ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuilder . create () ĊĊĊĠĠĠĠĠĠĠ Ġcapture Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera View . capture Image Ġ{ Ġ_, Ġphoto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Capture Image ( photo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Output . post Ġ{ Ġresult Output . text Ġ= Ġresult Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcamera View . setOn Touch Listener Ġ{ Ġ_, Ġevent Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera View . capture Image Ġ{ Ġ_, Ġphoto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Capture Image ( photo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Output . post Ġ{ Ġresult Output . text Ġ= Ġresult Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġ Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ VOLUME _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Preference . set N ep ali Language () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ate () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Initial Message ( text ToS peech Status ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay Initial Message ( status : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( language Preference . is N ep ali Language ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts . stop () Ġ// Ġstop Ġt ts Ġif Ġit 's Ġplaying ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// N ep ali Ġaudio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player Ġ= Ġn ep ali Audio . initial Message Audio () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player . start () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== ĠText ToS peech . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player . stop () Ġ// Ġstop Ġmedia Ġplayer Ġif Ġit 's Ġplaying ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset ĠUS ĠEnglish Ġas Ġlanguage Ġfor Ġt ts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġt ts !!. set Language ( Locale . US ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== ĠText ToS peech . LANG _ MISSING _ DATA Ġ|| Ġresult Ġ== ĠText ToS peech . LANG _ NOT _ SUPPORTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" TT S ", Ġ" The ĠLanguage Ġspecified Ġis Ġnot Ġsupported !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts !!. speak (" Please ĠTouch Ġthe Ġscreen Ġto Ġcapture Ġimage .", ĠText ToS peech . QUEUE _ FLUSH , Ġnull , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" TT S ", Ġ" Init il ization ĠFailed !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvi br ate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvi br ator Service Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 5 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Capture Image ( photo : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= ĠBitmap Factory . decode ByteArray ( photo , Ġ 0 , Ġphoto . size ) ĊĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap . create Scaled Bitmap ( bitmap , ĠINPUT _ SIZE , ĠINPUT _ SIZE , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġclassifier . re cognize Image ( bitmap ) ĊĠĠĠĠĠĠĠ Ġplay Cash Audio ( results ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay Cash Audio ( results : ĠList < IC lass ifier . Recognition >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( language Preference . is N ep ali Language ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġif Ġ( results . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ 0 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġidentify Ġplease Ġtry Ġagain Ġ!!! " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaudio Result Ġ= Ġif Ġ( results . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ 0 ]. title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġidentify Ġplease Ġtry Ġagain Ġ!!! " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ate () Ġ// Ġvi br ate Ġto Ġgive Ġuser Ġfeedback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player Ġ= Ġn ep ali Audio . cash Audio ( audio Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player . start () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player . stop () Ġ// Ġstop Ġmedia Ġplayer Ġif Ġit 's Ġplaying ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Player . reset () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġif Ġ( results . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ 0 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġidentify Ġplease Ġtry Ġagain Ġ!!! " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ate () Ġ// Ġvi br ate Ġto Ġgive Ġuser Ġfeedback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġspeak Ġthe Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts !!. speak ( result , ĠText ToS peech . QUEUE _ FLUSH , Ġnull ," ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġcamera View . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġcamera View . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( tts Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts !!. stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts !!. shutdown () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġexecutor . execute Ġ{ Ġclassifier . close () Ġ} ĊĠĠĠĠĠĠĠ Ġaudio Player . release () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Tensor Flow And Load Model () Ġ{ ĊĠĠĠĠĠĠĠ Ġexecutor . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ= ĠClass ifier . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassets , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMODEL _ PATH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLABEL _ PATH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINPUT _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Error Ġinitializing ĠTensorFlow !", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ