package Ġone . empty 3 . feature . app Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget .* Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġone . empty 3 . feature . app . My Camera Activity Ċ import Ġone . empty 3 . io . Process File Ċ import Ġandroid . widget . Multi Auto Complete TextView Ċ import Ġandroidx . annotation . Requires Permission Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġjava . io . File Ċ import Ġjava . util . jar . Manifest Ċ Ċ class ĠChoose Effects Activity Ġ: ĠActivity () Ġ{ Ċ private Ġvar Ġmedia File : ĠFile Ġ= ĠFile (".") ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġauto Complete TextView : ĠMulti Auto Complete TextView ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġedit Text : ĠEditText ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġeffect List : ĠArrayList < Process File > ĊĠĠĠ Ġlateinit Ġvar Ġeffect List Str : ĠArray < String > ĊĠĠĠ Ġlateinit Ġvar Ġedit Text 1 : ĠEditText Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" effects # logging ", Ġ" create ĠEffect ĠActivity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ choose _ effects ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia File Ġ= Ġintent . extras ?. get (" data ") Ġas ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġfun Ġcomplete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Log . i (" autocomplete ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Autocomplete Ġsearch ") ĊĠĠĠĠĠĠĠ Ġval Ġsplit : ĠList < String > Ġ= Ġedit Text 1 . text . toString (). split (",") Ġas ĠList < String > ĊĠĠĠĠĠĠĠ Ġval Ġeffects Ġ= Ġedit Text . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġsplit Effects List : ĠList < String > Ġ= Ġeffects . split (",") ĊĠĠĠĠĠĠĠ Ġvar Ġauto Str Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġs 1 ) Ġin Ġsplit . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" filters ' Ġlist ", Ġ"" + i +" Ġ: Ġ"+ s 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s 1 . length Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount : ĠLong Ġ= Ġsplit Effects List . stream (). filter Ġ{ Ġit . contains ( s 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" autocomplete ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Autocomplete Ġreplacement : Ġ{" + s 1 + "} Ġby Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Str Ġ+= Ġsplit Effects List . stream (). filter Ġ{ Ġit . contains ( s 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. findFirst (). toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Str Ġ+= Ġs 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġeff Ġ= ĠfindViewById < EditText >( R . id . effects To Apply ) ĊĠĠĠĠĠĠĠ Ġeff . setText ( auto Str ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġfun Ġinit ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete TextView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Multi Auto Complete TextView >( R . id . effects Auto Complete TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġeffect List Ġ= ĠMain . init List Processes () ĊĠĠĠĠĠĠĠ Ġeffect List Str Ġ= ĠArray < String >( effect List . size , Ġ{ Ġ"" Ġ}) ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. effect List Str . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeffect List Str [ i ] Ġ= ĊĠĠĠĠĠĠĠ Ġeffect List [ i ]. java Class . name // . java Class . simple Name . substring ( ĊĠĠĠĠĠĠĠ Ġ// " class Ġ". length , Ġinit List Processes [ i ]. java Class . simple Name . lastIndexOf ('.') Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġarray Adapter : ĠArray Adapter < String > Ġ= ĊĠĠĠĠĠĠĠ ĠArray Adapter < String >( this , Ġandroid . R . layout . simple _ dropdown _ item _ 1 line , Ġeffect List Str ) ĊĠĠĠĠĠĠĠ Ġauto Complete TextView . setAdapter ( array Adapter ) ĊĠĠĠĠĠĠĠ Ġauto Complete TextView . threshold Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġauto Complete TextView . set Tokenizer ( Multi Auto Complete TextView . Comma Tokenizer ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġapply Effect Action Ġ= ĠfindViewById < Button >( R . id . effects To Apply ) ĊĠĠĠĠĠĠĠ Ġapply Effect Action . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ EDIT ) ĊĠĠĠĠĠĠĠ Ġprintln (" C ick Ġon ĠEffect Ġbutton ") ĊĠĠĠĠĠĠĠ Ġintent . setData And Type ( Uri . from File ( media File ), Ġ" image / jpg ") ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" data ", Ġmedia File ) ĊĠĠĠĠĠĠĠ Ġintent . set Class ( ĊĠĠĠĠĠĠĠ Ġauto Complete TextView . context , ĊĠĠĠĠĠĠĠ ĠClass . forName (" one . empty 3 . feature . app . My Camera Activity ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( media File . toString ()) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠ Ġ" data ", Ġfile ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġdir Root : ĠString Ġ= Ġfiles Dir . absolute Path Ġ+ ĠFile . separator Ġ+ Ġ" data " ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĊĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . READ _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . READ _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ), ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġdir Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ&& ĊĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . READ _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdir Ġ= Ġ" photo Dir " ĊĠĠĠĠĠĠĠ Ġdir Root Ġ= Ġmedia File . toString () ĊĠĠĠĠĠĠĠ Ġ. substring ( 0 , Ġmedia File . toString (). lastIndexOf ( File . separator )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Error Ġ: Ġno Ġpermission Ġfor Ġread / write Ġstorage ") ĊĠĠĠĠĠĠĠ Ġdir Ġ= Ġ" app Dir " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstr Effects List : ĠString Ġ= Ġauto Complete TextView . text . toString () ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Process File : ĠFile Ġ= Ġfile ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Process Dir : ĠFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġfile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġfile . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent OutputFile : ĠFile ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Output Dir : ĠFile ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcurrent Process File . name ĊĠĠĠĠĠĠĠ Ġ// dir Ġ= Ġ" app Dir " ĊĠĠĠĠĠĠĠ Ġstr Effects List . split ("," ). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrim Ġ= Ġit . trim () ĊĠĠĠĠĠĠĠ Ġif Ġ( effect List Str . contains ( trim )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠindexOf : ĠInt Ġ= Ġeffect List Str . indexOf ( trim ) ĊĠĠĠĠĠĠĠ Ġval Ġprocess File : ĠProcess File Ġ= Ġeffect List . get ( indexOf ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dir . equals (" app Dir ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġnext File ( ĊĠĠĠĠĠĠĠ Ġdir Root Ġ+ ĊĠĠĠĠĠĠĠ ĠFile . separator Ġ+ Ġtrim Ġ+ Ġindex , ĊĠĠĠĠĠĠĠ Ġname . substring ( 0 , Ġname . lastIndexOf (". ")), ĊĠĠĠĠĠĠĠ Ġ" jpg " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent Output Dir Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent Process File . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġcurrent Process File . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent Process File . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġcurrent Process File . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , Ġcurrent Process File . absolute Path ĊĠĠĠĠĠĠĠ Ġ. lastIndexOf ( File . separator ) ĊĠĠĠĠĠĠĠ Ġ) Ġ+ ĠFile . separator Ġ+ Ġtrim Ġ+ Ġindex Ġ+ ĊĠĠĠĠĠĠĠ ĠFile . separator Ġ+ Ġname ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent Output Dir Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dir . equals (" app Dir ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġnext File ( ĊĠĠĠĠĠĠĠ Ġdir Root , Ġname . substring ( 0 , Ġname . lastIndexOf (". ")), ĊĠĠĠĠĠĠĠ Ġ". jpg " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent Output Dir Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent Process File ĊĠĠĠĠĠĠĠ Ġ. absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , Ġcurrent Process File ĊĠĠĠĠĠĠĠ Ġ. absolute Path . lastIndexOf ('/') ĊĠĠĠĠĠĠĠ Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , Ġcurrent OutputFile . absolute Path ĊĠĠĠĠĠĠĠ Ġ. lastIndexOf ( File . separator ) ĊĠĠĠĠĠĠĠ Ġ) Ġ+ ĠFile . separator Ġ+ Ġtrim Ġ+ Ġindex Ġ+ ĊĠĠĠĠĠĠĠ ĠFile . separator Ġ+ Ġname ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent Output Dir Ġ= ĠFile ( ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . substring ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġcurrent OutputFile . absolute Path . lastIndexOf ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Output Dir . mkdir s () ĊĠĠĠĠĠĠĠ Ġprintln (" Effect Ġclass ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ" Ġ+ Ġtrim ) ĊĠĠĠĠĠĠĠ Ġprintln (" In Ġpicture ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ" Ġ+ Ġcurrent Process File ) ĊĠĠĠĠĠĠĠ Ġprintln (" In Ġpicture Ġdirectory ĠĠ Ġ: Ġ" Ġ+ Ġcurrent Process Dir ) ĊĠĠĠĠĠĠĠ Ġprintln (" Out Ġ Ġpicture ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ" Ġ+ Ġcurrent OutputFile ) ĊĠĠĠĠĠĠĠ Ġprintln (" Out Ġpicture Ġdirectory Ġ Ġ: Ġ" Ġ+ Ġcurrent Output Dir ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Process Dir . exists () ĊĠĠĠĠĠĠĠ Ġ&& Ġcurrent Process File . exists () ĊĠĠĠĠĠĠĠ Ġ&& Ġ! current OutputFile . exists () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! process File . process ( current Process File , Ġcurrent OutputFile )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Error Ġprocessing Ġfile .") ĊĠĠĠĠĠĠĠ Ġprintln (" Error Ġin Ġ" Ġ+ Ġprocess File . java Class . name ) ĊĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" File Ġin Ġdoesn 't Ġexists , Ġor ĠFile Ġout Ġexists \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Precision Ġcurrent Process Dir Ġ Ġexists ?: Ġ" Ġ+ Ġcurrent Process Dir . exists () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Precision Ġcurrent Process File Ġexists ?: Ġ" Ġ+ Ġcurrent Process File . exists () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Precision Ġcurrent Output Dir ĠĠ Ġexists ?: Ġ" Ġ+ Ġcurrent Output Dir . exists () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Precision Ġcurrent OutputFile Ġ Ġexists ?: Ġ" Ġ+ Ġcurrent OutputFile . exists () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error Ġprocessing Ġfile .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Process File Ġ= Ġcurrent OutputFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . from File ( current Process File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" data ", Ġcurrent Process File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" effects # logging ", Ġ" init ĠDetails ĠEffect ĠActivity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeffect List Ġ= ĠMain . init List Processes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Ġ= ĠfindViewById ( R . id . edit Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl : ĠList < String > Ġ= ĠList < String >( effect List . size , Ġinit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs 0 : ĠString Ġ= Ġ(( effect List [ it ]). java Class . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs : ĠString Ġ= Ġ( edit Text . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġs 0 Ġ+ Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . sub Sequence ( 0 , Ġs . length ), ĠTextView . Buffer Type . EDIT ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text 1 Ġ= ĠfindViewById ( R . id . effects Auto Complete TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text 1 . setText ( savedInstanceState ?. getString (" classname ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text 1 . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠCharSequence ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ*/ ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ private Ġfun Ġnext File ( directory : ĠString , Ġfilename Base : ĠString , Ġextension : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdirectory Ġ+ ĠFile . separator Ġ+ Ġfilename Base Ġ+ Ġ"." Ġ+ Ġextension ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i (" effects # logging ", Ġ" save ĠEffect ĠActivity ") ĊĠĠĠĠĠĠĠ Ġout State . putString (" classname ", Ġauto Complete TextView . text . toString ()) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" effects # logging ", Ġ" restore ĠEffect ĠActivity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= ĠsavedInstanceState ?. getString (" classname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete TextView Ġ= ĠfindViewById ( R . id . effects Auto Complete TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete TextView . setText ( string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" effects # logging ", Ġ" destroy ĠEffect ĠActivity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}