package Ġcom . nlp . ac lp kotlin Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . speech . Recognition Listener Ċ import Ġandroid . speech . Recognizer Intent Ċ import Ġandroid . speech . Speech Recognizer Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . AppCompat EditText Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠDescription : ĠACL P Ġallows Ġusers Ġto Ġsay Ġto Ġpredefined Ġshort Ġstatements Ġto Ġautomatically Ġgenerate Ġequivalent Ġcode Ġin Ġwritten Ċ Ġ* Ġin Ġthe Ġusers Ġselected Ġchoice Ġof Ġlanguage . ĠACL P Ġheav ily Ġrelies Ġon Ġbuilt - in ĠSpeech Recognizer Ġlibrary Ġto Ġdo Ġspeech Ġto Ġtext Ġoperations . Ċ Ġ* ĠGithub : Ġ" https :// github . com / vir aj 3 2 5 / AC LP Kotlin " Ċ Ġ*/ Ċ Ċ // Test ĠFrom ĠV ir aj Ċ Ċ @ Suppress (" RECE IVER _ NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ") Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprogram Name Ġ= Ġ" Test AC LP . txt " ĊĠĠĠ Ġvar Ġcommand List Ġ= Ġmutable ListOf < KV Object >() ĊĠĠĠ Ġval Ġrecent List Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠRecent Adapter ĊĠĠĠ Ġvar Ġis Recording Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdone : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġretry : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtext view : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġedit text : ĠAppCompat EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġenter : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrecording : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfab : ĠFloating ActionButton ĊĠĠĠ Ġvar Ġcurrent Key Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġcheck Permission () ĊĊĠĠĠĠĠĠĠ Ġval Ġre cycler view Ġ= ĠfindViewById < RecyclerView >( R . id . recent List ) ĊĠĠĠĠĠĠĠ Ġre cycler view . layout Manager Ġ= ĠLinearLayoutManager ( this , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠRecent Adapter ( recent List ) ĊĠĠĠĠĠĠĠ Ġre cycler view . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġdone Ġ= ĠfindViewById ( R . id . done ) ĊĠĠĠĠĠĠĠ Ġretry Ġ= ĠfindViewById ( R . id . retry ) ĊĠĠĠĠĠĠĠ Ġtext view Ġ= ĠfindViewById ( R . id . text view ) ĊĠĠĠĠĠĠĠ Ġedit text Ġ= ĠfindViewById ( R . id . edit text ) ĊĠĠĠĠĠĠĠ Ġenter Ġ= ĠfindViewById ( R . id . enter ) ĊĠĠĠĠĠĠĠ Ġrecording Ġ= ĠfindViewById ( R . id . recording ) ĊĠĠĠĠĠĠĠ Ġfab Ġ= ĠfindViewById ( R . id . fab ) ĊĠĠĠĠĠĠĠ Ġstart Recording () ĊĊĠĠĠĠĠĠĠ Ġdone . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretry . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorgan ize Text () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġretry . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit text . setText ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġenter . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit text . text . toString (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent List . add ( edit text . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠK V Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . key Ġ= Ġcurrent Key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . type Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . value Ġ= Ġedit text . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand List . add ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( edit text . text . toString (). uppercase () Ġ== Ġ" END "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Key -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Key ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Permission () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . RECORD _ AUDIO ), Ġ 5 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Recording (){ ĊĠĠĠĠĠĠĠ Ġval Ġspeech Recognizer Ġ= ĠSpeech Recognizer . create Speech Recognizer ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġspeech Recognizer Intent Ġ= ĠIntent ( Recognizer Intent . ACTION _ RE CO GN IZE _ SPE E CH ) ĊĠĠĠĠĠĠĠ Ġspeech Recognizer Intent . putExtra ( Recognizer Intent . EXTRA _ LANGUAGE _ MODEL , ĠRe cognizer Intent . LANGUAGE _ MODEL _ FREE _ FORM ) ĊĠĠĠĠĠĠĠ Ġspeech Recognizer Intent . putExtra ( Recognizer Intent . EXTRA _ LANGUAGE , ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġspeech Recognizer Intent . putExtra ( Recognizer Intent . EXTRA _ PROMPT , Ġ" Start Ġsaying Ġyour Ġcommand Ġin Ġorder ") ĊĠĠĠĠĠĠĠ Ġspeech Recognizer . set Recognition Listener ( object Ġ: ĠRecognition Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ready For Speech ( bundle : ĠBundle ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Beginning Of Speech () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon R ms Changed ( v : ĠFloat ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Buffer Received ( bytes : ĠByteArray ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon EndOf Speech () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( i : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Results ( bundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġbundle . getString ArrayList ( Speech Recognizer . RESULTS _ RE CO GN ITION )// getting Ġall Ġthe Ġmatches ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// display ing Ġthe Ġfirst Ġmatch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matches Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsr Ġ= Ġmatches [ 0 ] // . split (" Ġ" )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit text . setText ( sr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Command ĠLog ", sr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* value List . add ( sr [ 0 ]. uppercase Char (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Command List . add ( sr [ 1 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġvalue List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Partial Results ( bundle : ĠBundle ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Event ( i : ĠInt , Ġbundle : ĠBundle ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Recording ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswap Color ( fab , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Recording Ġ= Ġ! is Recording ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecording . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Recognizer . stop Listening () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswap Color ( fab , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Recording Ġ= Ġ! is Recording ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecording . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Recognizer . start Listening ( speech Recognizer Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtext ToS peech Engine : ĠText ToS peech Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠText ToS peech ( this ) Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== ĠText ToS peech . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ToS peech Engine . language Ġ= ĠLocale . US ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġorgan ize Text (){ ĊĠĠĠĠĠĠĠ Ġ// organ ize Ġthe Ġtext ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġopening Comments () Ġ+ Ġ"\ n " Ġ+ ĠACL P Methods . tree Parser ( command List ) ĊĠĠĠĠĠĠĠ Ġ// AC LP Output . outputFile ( result Ġ= Ġtext , Ġprogram Name , Ġthis ) ĊĠĠĠĠĠĠĠ Ġdone . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġretry . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġshow Result ( text Ġ= Ġtext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopening Comments (): ĠString { ĊĠĠĠĠĠĠĠ Ġreturn Ġ" /* NOTICE ĠFOR ĠA UT OM ATED ĠJAVA ĠFILE ĠCRE ATED ĠBY ĠACL P .." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n * MAKE ĠS URE ĠTO ĠRUN ĠTHE ĠPRO GRAM ĠYOU ĠCHANGE ĠTHE ĠEXT ENSION ĠFROM Ġ. txt ĠTO Ġ. java " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n * THE ĠPRO GRAM ĠIS N ' T ĠGU AR AN TE ED ĠTO ĠRUN , ĠCODE ĠIS ĠCRE ATED ĠSTRICT LY ĠBASE D ĠON ĠTHE ĠORDER ĠOF ĠYOUR ĠSPE E CH ĠCOMMAND S */ \ n \ n " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Result ( text : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠText Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" result ", Ġtext ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswap Color ( floating : ĠFloating ActionButton , ĠisActive : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( isActive ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloating . set BackgroundColor ( Color . CY AN ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloating . set BackgroundColor ( Color . WHITE ) ĊĠĠĠ Ġ} Ċ }