package Ġbr . com . liv ro android . car ros . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroidx . core . content . File Provider Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ Ċ class ĠCamera Helper Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" camera " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAr quivo Ġpode Ġser Ġn ulo ĊĠĠĠ Ġvar Ġfile : ĠFile ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ// ĠSe Ġg iro u Ġa Ġt ela Ġrecuper a Ġo Ġestado ĊĠĠĠ Ġfun Ġinit ( ic icle : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ic icle Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġic icle . get Serializable (" file ") Ġas ĠFile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSal va Ġo Ġestado ĊĠĠĠ Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Serializable (" file ", Ġfile ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIntent Ġpara Ġab rir Ġa Ġc Ã¢ mer a ĊĠĠĠ Ġfun Ġopen ( context : ĠContext , ĠfileName : ĠString ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġfile Ġ= Ġget Sd Card File ( context , ĠfileName ) ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( Media Store . ACTION _ IMAGE _ CAPTURE ) ĊĠĠĠĠĠĠĠ Ġfile ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" camera ", Ġfile . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠFile Provider . get Uri For File ( context , Ġcontext . application Context . packageName Ġ+ Ġ". provider ", Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . putExtra ( Media Store . EXTRA _ OUTPUT , Ġuri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠC ria Ġo Ġarquivo Ġda Ġfoto Ġno Ġdire tÃ³ rio Ġpriv ado Ġdo Ġapp ĊĠĠĠ Ġprivate Ġfun Ġget Sd Card File ( context : ĠContext , ĠfileName : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= Ġcontext . get External Files Dir ( Environment . DIRECTORY _ PI CTURE S ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir . mkdir () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( dir , ĠfileName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠL Ãª Ġo Ġbitmap Ġno Ġtamanho Ġdese j ado ĊĠĠĠ Ġfun Ġget Bitmap ( w : ĠInt , Ġh : ĠInt ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfile ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġabsolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠResize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠImage Utils . resize ( this , Ġw , Ġh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" get Bitmap Ġw / h : Ġ" Ġ+ Ġbitmap . width Ġ+ Ġ"/" Ġ+ Ġbitmap . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSal va Ġo Ġbitmap Ġre du z ido Ġno Ġarquivo Ġ( para Ġupload ) ĊĠĠĠ Ġfun Ġsave ( bitmap : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠFileOutputStream ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , Ġout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" F oto Ġsal va : Ġ$ absolute Path ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ