package Ġxyz . un ance . android color naming Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity ; Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġio . foto ap par at . F oto ap par at Ċ import Ġio . foto ap par at . configuration . Camera Configuration Ċ import Ġio . foto ap par at . configuration . Update Configuration Ċ import Ġio . foto ap par at . log . log cat Ċ import Ġio . foto ap par at . log . log gers Ċ import Ġio . foto ap par at . parameter . Scale Type Ċ import Ġio . foto ap par at . selector .* Ċ import Ġio . foto ap par at . view . Camera View Ċ import Ġkotlinx . android . synt hetic . main . activity _ camera .* Ċ import Ġjava . lang . Exception ĊĊ Ċ class ĠCamera Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġenum Ġclass ĠF oto ap par at State { ĊĠĠĠĠĠĠĠ ĠON , ĠOFF ĊĠĠĠ Ġ} ĊĠĠĠ Ġenum Ġclass ĠFlash State { ĊĠĠĠĠĠĠĠ ĠTOR CH , ĠOFF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpermissions Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġ// android . Manifest . permission . WRITE _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠ Ġ// android . Manifest . permission . READ _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . CAMERA ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġcamera Configuration Ġ= ĠCamera Configuration ( ĊĠĠĠĠĠĠĠ Ġpicture Resolution Ġ= Ġlowest Resolution (), ĊĠĠĠĠĠĠĠ Ġpreview Resolution Ġ= Ġhighest Resolution () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġcolor Matcher : ĠColor Matcher ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġfoto ap par at : ĠF oto ap par at ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfoto ap par at State Ġ: ĠF oto ap par at State ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġflash State : ĠFlash State ? Ġ= Ġnull ĊĊĊĠĠĠ Ġprivate Ġfun Ġhas Permissions (): ĠBoolean { ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpermissions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġpermission Ġ-> ĠContext Compat . check Self Permission ( this , Ġpermission ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. all Ġ{ Ġgranted Ġ-> Ġgranted Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Permission (){ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , Ġpermissions , 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġrecreate () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ camera ) ĊĊĠĠĠĠĠĠĠ Ġcreate F oto ap par at () ĊĊĠĠĠĠĠĠĠ Ġfab _ flash . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Flash State () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcamera _ view . setOn Touch Listener Ġ{ Ġview : ĠView , Ġevent : ĠMotion Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcapture Ġ= Ġevent . action Ġ== ĠMotion Event . ACTION _ DOWN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( capture ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture Color ( view , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcapture ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġinit Ġmatcher ĊĠĠĠĠĠĠĠ Ġcolor Matcher Ġ= ĠColor Matcher ( application Context ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġfoto ap par at ?. stop () ĊĠĠĠĠĠĠĠ Ġfoto ap par at State Ġ= ĠF oto ap par at State . OFF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! has Permissions ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfoto ap par at ?. start () ĊĠĠĠĠĠĠĠ Ġfoto ap par at State Ġ= ĠF oto ap par at State . ON ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġif ( has Permissions () Ġ&& Ġfoto ap par at State Ġ== ĠF oto ap par at State . OFF ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( base Context , ĠCamera Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate F oto ap par at (){ ĊĠĠĠĠĠĠĠ Ġval Ġcamera View Ġ= ĠfindViewById < Camera View >( R . id . camera _ view ) ĊĊĠĠĠĠĠĠĠ Ġfoto ap par at Ġ= ĠF oto ap par at ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġcamera View , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Type Ġ= ĠScale Type . Center Crop , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlens Position Ġ= Ġback (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġlog gers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog cat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Configuration Ġ= Ġcamera Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Error Callback Ġ= Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Recorder Ġerrors : Ġ$ error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Flash State () Ġ{ ĊĠĠĠĠĠĠĠ Ġfoto ap par at ?. update Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflash Mode Ġ= Ġif ( flash State Ġ== ĠFlash State . TOR CH ) Ġoff () Ġelse Ġtorch () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif ( flash State Ġ== ĠFlash State . TOR CH ) Ġflash State Ġ= ĠFlash State . OFF ĊĠĠĠĠĠĠĠ Ġelse Ġflash State Ġ= ĠFlash State . TOR CH ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay Sound ( sound Id : ĠString ){ ĊĠĠĠĠĠĠĠ Ġvar Ġsound Ġ= Ġresources . getIdentifier ( sound Id . toLowerCase (), Ġ" raw ", ĠpackageName ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sound Ġ== Ġ 0 ) Ġsound Ġ= ĠR . raw . unknown ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Player : ĠMedia Player ? Ġ= ĠMedia Player . create ( application Context , Ġsound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player ?. start () Ġ// Ġno Ġneed Ġto Ġcall Ġprepare (); Ġcreate () Ġdoes Ġthat Ġfor Ġyou ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġe . toString (), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcapture Color ( v : ĠView , Ġevent : ĠMotion Event ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! has Permissions ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( foto ap par at Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , ĠR . string . camera _ not _ available , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( color Matcher Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , ĠR . string . color _ matcher _ not _ ready , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Result Ġ= Ġfoto ap par at !!. take Picture (). to Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Result . when Available Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Photo Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtouch Center Ġ= Ġget Touch Position On Image ( bitmap Photo !! , Ġv , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget Average Color ( bitmap Photo , Ġtouch Center , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġknown Color Ġ= Ġcolor Matcher !!. get Closest Color Name ( color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġtext Ġ= Ġbitmap Photo ?. bitmap ?. height . toString () Ġ+ Ġ" x " Ġ+ Ġbitmap Photo ?. bitmap ?. width . toString () Ġ+ Ġ" Ġ" Ġ+ Ġbitmap Photo ?. rotation Degrees Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ" Ġ+ Ġv . width . toString () Ġ+ Ġ" x " Ġ+ Ġv . height . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ" Ġ+ Ġview X . toString () Ġ+ Ġ" x " Ġ+ Ġview Y . toString () */ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġknown Color . second , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Sound ( known Color . first ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// bitmap Photo ?. bitmap ?. ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ