package Ġfr . n sp u . dev . record voice learning . view . activity ĊĊ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ Ċ import Ġjava . io . File Ċ import Ġjava . util . UUID Ċ Ċ import Ġfr . n sp u . dev . record voice learning . Record Voice Learning Ċ import Ġfr . n sp u . dev . record voice learning . R Ċ import Ġfr . n sp u . dev . record voice learning . controller . entity . Peer Entity Ċ import Ġfr . n sp u . dev . record voice learning . databinding . Activity Record Binding Ċ import Ġfr . n sp u . dev . record voice learning . model . Folder Ċ import Ġfr . n sp u . dev . record voice learning . utils . Listen Voice Ċ import Ġfr . n sp u . dev . record voice learning . utils . Record Voice Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġn sp u Ġon Ġ 1 8 - 0 2 - 0 4 . Ċ Ġ*/ Ċ Ċ class ĠRecord Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġinternal Ġval ĠTAG Ġ= Ġ" Record Activity " ĊĠĠĠ Ġprivate Ġvar Ġm Folder : ĠFolder ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Peer : ĠPeer Entity ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Binding : ĠActivity Record Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Exit Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ record ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġintent . getInt Extra ( KEY _ FOLDER _ ID , Ġ- 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( folder Id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . support ActionBar !!. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġthis . support ActionBar !!. set Display Show Home Enabled ( true ) ĊĊĠĠĠĠĠĠĠ ĠLoad Folder Task (). execute ( folder Id ) ĊĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ record ) ĊĠĠĠĠĠĠĠ Ġm Binding !!. exit Btn . setOnClickListener Ġ{ Ġ_: ĠView Ġ-> Ġexit () Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Binding !!. record Another Btn . setOnClickListener Ġ{ Ġ_: ĠView Ġ-> Ġrecord An Another () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( android . R . id . home Ġ== Ġitem . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Peer !!. fileName Answer Ġ!= Ġnull Ġ|| Ġm Peer !!. fileName Question Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( m Binding !!. ll Record , Ġ" V ou lez - vous Ġv ra iment Ġqu itter ?", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Qu itter ") Ġ{ Ġv Ġ-> Ġsuper . on Back Pressed () Ġ}. show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġm Folder !!. name ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Generate Ġ= ĠUUID . randomUUID (). toString () ĊĊĠĠĠĠĠĠĠ Ġval ĠfileName Question Ġ= Ġm Folder !!. id . toString () Ġ+ Ġ"_ q _" Ġ+ Ġuuid Generate Ġ+ Ġ". mp 4 " ĊĠĠĠĠĠĠĠ Ġval ĠfileName Answer Ġ= Ġm Folder !!. id . toString () Ġ+ Ġ"_ a _" Ġ+ Ġuuid Generate Ġ+ Ġ". mp 4 " ĊĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= Ġexternal Cache Dir !!. absolute Path ĊĊĠĠĠĠĠĠĠ Ġm Binding !!. reset Btn . setOnClickListener Ġ{ Ġ_: ĠView ? Ġ-> Ġinit () Ġ} ĊĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠRecord Voice ( fileName Question , Ġdirectory , Ġm Binding !!. record Question Btn , Ġthis ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġoverride Ġfun Ġon Record Finish ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Peer !!. fileName Question Ġ= ĠfileName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding !!. peer Ġ= Ġm Peer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠRecord Voice ( fileName Answer , Ġdirectory , Ġm Binding !!. record Answer Btn , Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġoverride Ġfun Ġon Record Finish ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Peer !!. fileName Answer Ġ= ĠfileName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding !!. peer Ġ= Ġm Peer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠListen Voice ( m Binding !!. listen Question Btn , ĠfileName Question , Ġdirectory ) ĊĊĠĠĠĠĠĠĠ ĠListen Voice ( m Binding !!. listen Answer Btn , ĠfileName Answer , Ġdirectory ) ĊĊĠĠĠĠĠĠĠ Ġm Peer Ġ= ĠPeer Entity ( m Folder !!. id ) ĊĠĠĠĠĠĠĠ Ġm Binding !!. peer Ġ= Ġm Peer ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġexit () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Exit Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġregister () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrecord An Another () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Exit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġregister () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Cache To Files ( m Peer !!. fileName Question ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log Ġer reur ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġ" Er reur : Ġ" Ġ+ Ġm Peer !!. fileName Question Ġ+ Ġ" Ġ" Ġ+ Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( m Binding !!. ll Record , Ġm , ĠSn ackbar . LENGTH _ SHORT ). setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Cache To Files ( m Peer !!. fileName Answer ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log Ġer reur ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġ" Er reur : Ġ" Ġ+ Ġm Peer !!. fileName Answer Ġ+ Ġ" Ġ" Ġ+ Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( m Binding !!. ll Record , Ġm , ĠSn ackbar . LENGTH _ SHORT ). setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSave Peer Task (). execute ( m Peer ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Security Exception :: class , ĠNullPointerException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġmove Cache To Files ( fileName : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirectory Cache Ġ= Ġexternal Cache Dir !!. absolute Path ĊĠĠĠĠĠĠĠ Ġval Ġdirectory Final Ġ= Ġget External Files Dir ( null ) !!. absolute Path ĊĠĠĠĠĠĠĠ Ġval Ġfrom Question Ġ= ĠFile ( directory Cache Ġ+ Ġ"/" Ġ+ ĠfileName ) ĊĠĠĠĠĠĠĠ Ġval Ġto Question Ġ= ĠFile ( directory Final Ġ+ Ġ"/" Ġ+ ĠfileName ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! from Question . rename To ( to Question )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" error Ġmove Ġfile ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠ Ġprivate Ġinner Ġclass ĠLoad Folder Task Ġ: ĠAsync Task < Int , ĠVoid , ĠUnit >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġintegers : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Folder Ġ= Ġ( application Ġas ĠRecord Voice Learning ). database !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. folder Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load Folder ById Sync ( inte gers [ 0 ] !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Post Execute ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠ Ġprivate Ġinner Ġclass ĠSave Peer Task Ġ: ĠAsync Task < Peer Entity , ĠVoid , ĠUnit >() Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġpeers : ĠPeer Entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( application Ġas ĠRecord Voice Learning ). database !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. peer Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. insert Peer Sync ( peers [ 0 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Post Execute ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Record Activity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Record Activity , Ġ" Pa ire Ġen regist rer !", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠKEY _ FOLDER _ ID Ġ= Ġ" id _ folder " ĊĠĠĠ Ġ} Ċ Ċ } Ċ