package Ġcom . cy ril pill ai . andro idth ings demo Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Content Values . TAG Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . media . Image Reader Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Handler Thread Ċ import Ġandroid . util . Log Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġcy ril Ġon Ġ 7 / 1 / 1 8 . Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcamera Helper Ġby Ġlazy Ġ{ ĠCamera Helper . instance Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcamera Thread Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler Thread (" Camera Background ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġcamera Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler ( camera Thread . lo oper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( check Self Permission ( Manifest . permission . CAMERA ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" No Ġpermission ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcamera Thread . start () ĊĠĠĠĠĠĠĠ Ġcamera Helper . initialize Camera ( context Ġ= Ġthis , Ġbackground Handler Ġ= Ġcamera Handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Available Listener Ġ= ĠImage Reader . On Image Available Listener Ġ{ Ġreader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġreader . acquire Latest Image () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Buf Ġ= Ġimage . planes [ 0 ]. buffer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Bytes Ġ= ĠByteArray ( image Buf . remaining ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Buf . get ( image Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Picture Taken ( image Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbtn Capture Image . setOnClickListener Ġ{ Ġcamera Helper . take Picture () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġcamera Helper . sh ut Down () ĊĠĠĠĠĠĠĠ Ġcamera Thread . quit S af ely () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Picture Taken ( image Bytes : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode ByteArray ( image Bytes , Ġ 0 , Ġimage Bytes . size ) ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ Ġim Camera Image . setImage Bitmap ( bitmap ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ