package Ġme . sh ou h eng . compress . request Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . AsyncTask Ċ import Ġio . reactivex . Flow able Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġme . sh ou h eng . compress . RequestBuilder Ċ import Ġme . sh ou h eng . compress . utils . C Log Ċ Ċ import Ġjava . util . concurrent . Callable Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /** ĠTry Ġto Ġget Ġresult Ġas Ġbitmap . Ġ*/ Ċ class ĠBitmap Builder Ġ: ĠRequest Builder < Bitmap >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġget Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Success ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Error ( Exception (" Failed Ġto Ġcompress Ġimage , Ġeither Ġcaused Ġby ĠO OM Ġor Ġother Ġproblems .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Log . e ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget ( coroutine Context : ĠCor outine Context ): ĠBitmap ? Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( coroutine Context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġget () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġas Flow able (): ĠFlow able < Bitmap > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . defer ( Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġget Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Success ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Callable ĠFlow able . just ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException (" Failed Ġto Ġcompress Ġimage , Ġeither Ġcaused Ġby ĠO OM Ġor Ġother Ġproblems .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Callable ĠFlow able . error < Bitmap >( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Log . e ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Callable ĠFlow able . error < Bitmap >( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlaunch () Ġ{ ĊĠĠĠĠĠĠĠ ĠAsync Task . SERIAL _ EXECUT OR . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġget Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Error ( Exception (" Failed Ġto Ġcompress Ġimage , Ġeither Ġcaused Ġby ĠO OM Ġor Ġother Ġproblems .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Success ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Compress Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Log . e ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ