@ file : Jvm Name (" Utils ") Ċ @ file : Jvm Mult if ile Class Ċ Ċ package Ġpy x is . uz uki . live . rich util sk t Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠSave ĠBitmap Ġto Ġfile Ċ Ġ* Ċ Ġ* Ġ@ param [ bitmap ] Ġto Ġsave Ċ Ġ* Ġ@ return Ġpath Ġof Ġfile Ċ Ġ*/ Ċ fun ĠContext . save Bitmap ToFile ( bitmap : ĠBitmap ): ĠString ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġsave Bitmap ToFile ( this , Ġbitmap ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfile ?. absolute Path ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ"" Ċ } Ċ Ċ private Ġfun Ġsave Bitmap ToFile ( context : ĠContext , Ġbitmap : ĠBitmap ): ĠFile ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphoto Ġ= Ġget Output Media File ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠFileOutputStream ( photo ) ĊĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , Ġout ) ĊĠĠĠĠĠĠĠ Ġout . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġphoto ĊĠĠĠ Ġ} Ġcatch Ġ( exception : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" FileNotFoundException ", Ġexception . message ) ĊĠĠĠ Ġ} Ġcatch Ġ( exception : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" IOException ", Ġexception . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ private Ġfun Ġget Output Media File ( context : ĠContext ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġpic Name Ġ= ĠUUID . randomUUID (). toString (). replace ("- ". to Regex (), Ġ"") Ġ+ Ġ". jpg " ĊĊĠĠĠ Ġval Ġfolder Ġ= Ġcontext . get External Files Dir ( null ) ĊĠĠĠ Ġif Ġ(! folder . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfolder . mkdir s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠFile ( folder , Ġpic Name ) Ċ } Ċ Ċ /** Ċ Ġ* ĠConvert ĠDrawable Ġto ĠBitmap Ġin Ġsafe Ġway Ċ Ġ* Ċ Ġ* Ġ@ param [ drawable ] Ġto Ġconvert Ċ Ġ* Ġ@ return ĠBitmap Ġobject Ċ Ġ*/ Ċ fun Ġdrawable To Bitmap ( drawable : ĠDrawable ): ĠBitmap Ġ{ ĊĠĠĠ Ġif Ġ( drawable Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdrawable . bitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġwidth Ġ= Ġdrawable . intrinsic Width ĊĠĠĠ Ġwidth Ġ= Ġif Ġ( width Ġ> Ġ 0 ) Ġwidth Ġelse Ġ 1 ĊĠĠĠ Ġvar Ġheight Ġ= Ġdrawable . intrinsic Height ĊĠĠĠ Ġheight Ġ= Ġif Ġ( height Ġ> Ġ 0 ) Ġheight Ġelse Ġ 1 ĊĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( width , Ġheight , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠ Ġdrawable . draw ( canvas ) ĊĊĠĠĠ Ġreturn Ġbitmap Ċ } Ċ Ċ /** Ċ Ġ* ĠRequest ĠMedia Sc anning Ċ Ġ* Ċ Ġ* Ġ@ param [ url ] Ġto Ġrequest Ċ Ġ*/ Ċ fun ĠContext . request Media Scanner ( url : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġmedia Scan Intent Ġ= ĠIntent ( Intent . ACTION _ MEDIA _ SCAN NER _ SCAN _ FILE ) ĊĠĠĠ Ġval Ġf Ġ= ĠFile ( url ) ĊĠĠĠ Ġval Ġcontent Uri Ġ= ĠUri . from File ( f ) ĊĠĠĠ Ġmedia Scan Intent . data Ġ= Ġcontent Uri ĊĠĠĠ Ġthis . send Broadcast ( media Scan Intent ) Ċ }