package Ġcom . r nc amer akit . recorder Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġcom . aliyun . common . utils . Bitmap Util Ċ import Ġcom . aliyun . s video . base . Constants Ċ import Ġcom . aliyun . s video . common . utils . Thread Utils Ċ import Ġcom . aliyun . s videos dk . recorder . Record Callback Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ class ĠImp l Record Callback ( private Ġval ĠmContext : ĠContext ) Ġ: ĠRecord Callback Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Callbacks : ĠOn Recorder Callbacks ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset On Recorder Callbacks ( callback : ĠOn Recorder Callbacks ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Callbacks Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonComplete ( valid Clip : ĠBoolean , Ġclip Duration : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Callbacks ?. onComplete ( valid Clip , Ġclip Duration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish ( output Path : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Callbacks ?. on Finish ( output Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Progress ( duration : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Callbacks ?. on Progress ( duration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Max Duration () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( errorCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Callbacks ?. onError ( errorCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Init Ready () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw Ready () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Picture Back ( bitmap : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠThread Utils . run On Sub Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Path Ġ= ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . SD Card Constants . get Dir ( mContext . application Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (). toString () Ġ+ Ġ"- photo . jpg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Util . generate File From Bitmap ( bitmap , Ġimg Path , Ġ" jpg ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Permission Utils . check Permissions Group ( mContext , ĠarrayOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . READ _ EXTERNAL _ STORAGE , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢĤ éħį android ĠQ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . run On Sub Thread Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri Utils . save Img To Media Store ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . application Context , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Path Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Scanner Connection . scan File ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . application Context , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( img Path ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" image / jpeg "), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Callbacks Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callbacks !!. on Take Photo ( img Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . run On Ui Thread Ġ{ Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show ( mContext , Ġ" åĽ¾çīĩ å·² ä¿ĿåŃĺ åĪ° çĽ¸ åĨĮ ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Callbacks Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callbacks !!. on Take Photo ( img Path ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Picture Data Back ( data : ĠByteArray ?) Ġ{ ĊĠĠĠ Ġ} Ċ Ċ }