package Ġtr . com . em reme mis . app . leo . ui . result čĊč Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . net . Uri č Ċ import Ġandroid . os . Build č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . view .* č Ċ import Ġandroid . widget . Toast č Ċ import Ġandroidx . fragment . app . Fragment č Ċ import Ġcom . ar then ica . mobile ffmpeg . FF mpeg č Ċ import Ġkotlinx . android . synt hetic . main . fragment _ result .* č Ċ import Ġkotlinx . coroutines .* č Ċ import Ġtr . com . em reme mis . app . leo . R č Ċ import Ġtr . com . em reme mis . app . leo . util . FileUtils č Ċ import Ġtr . com . em reme mis . app . leo . util . Utils č Ċ import Ġjava . io . File č Ċ import Ġjava . util .* č Ċ import Ġkotlin . coroutines . Coroutine Context čĊč Ċ class ĠResult Fragment Ġ: ĠFragment (), ĠCor outine Scope Ġ{ čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ Ġconst Ġval Ġgithub Ġ= Ġ" https :// github . com / me mis hood " Ġ} čĊčĊĠĠĠ Ġprivate Ġval Ġjob Ġ= ĠJob () čĊčĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context Ġget () Ġ= ĠDispatch ers . IO Ġ+ Ġjob čĊčĊĠĠĠ Ġprivate Ġval Ġe Handler Ġ= ĠCor outine ExceptionHandler Ġ{ Ġ_, Ġerror Ġ-> čĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĠToast . makeText ( context , Ġerror . message Ġ?: Ġ" Error ", ĠToast . LENGTH _ SHORT ). show () Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): čĊĠĠĠĠĠĠĠĠĠĠĠ ĠView ? Ġ= Ġinflater . inflate ( R . layout . fragment _ result , Ġcontainer , Ġfalse ) čĊčĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) čĊčĊĠĠĠĠĠĠĠ Ġapp Compat ImageView 5 . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse ( github ))) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) čĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Ġ= ĠFile ( it . getString (" path ") Ġ?: Ġreturn @ let Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġit . getInt (" music ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclip Ġ= Ġit . getInt (" clip ", Ġ- 1 ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ( e Handler ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio Ġ= ĠFileUtils . music ToFile ( context , Ġresources , Ġmusic ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠFileUtils . getFile Duration ( video . absolute Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Path Ġ= Ġ"${ video . absolute Path }${ UUID . randomUUID ()}. mp 4 " čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Ġ= Ġwhen Ġ( clip ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ ĠUtils . cmd ( video . absolute Path , Ġaudio . absolute Path , Ġduration , Ġoutput Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUtils . cmd ( video . absolute Path , Ġaudio . absolute Path , ĠFileUtils . clip ToFile ( context , Ġclip ). absolute Path , Ġduration , Ġoutput Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFF mpeg . execute ( cmd ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio . delete () čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= Ġcontext ?. content Resolver Ġ?: Ġreturn @ launch čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġwhen Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 9 Ġ-> ĠFileUtils . save Output With Pending ( resolver , ĠFile ( output Path )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠFileUtils . save Output ( resolver , ĠFile ( output Path )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ?: Ġreturn @ launch čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui ( uri Ġ= Ġuri ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ//@ MainThread čĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġset Ui ( uri : ĠUri ) Ġ= Ġwith Context ( Dispatch ers . Main ) Ġ{ čĊĠĠĠĠĠĠĠ Ġvideo View . set Video URI ( uri ) čĊĠĠĠĠĠĠĠ Ġvideo View . start () čĊĠĠĠĠĠĠĠ Ġvideo View . setOn Completion Listener Ġ{ Ġvideo View . start () Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĠprogressBar 2 . parent Ġas ĠViewGroup čĊĠĠĠĠĠĠĠ Ġparent . remove View ( progress Bar 2 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠFragment . run On Ui Thread ( action : Ġ() Ġ-> ĠUnit ) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( is Added ) Ġactivity ?. run On Ui Thread ( action ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ čĊĠĠĠĠĠĠĠ ĠFF mpeg . cancel () čĊĠĠĠĠĠĠĠ Ġjob . cancel () čĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () čĊĠĠĠ Ġ} č Ċ }