/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . had ro sa ur . basic bo keh . Camera Controller Ċ Ċ import Ġandroid . hardware . camera 2 .* Ċ import Ġandroidx . annotation . NonNull Ċ import Ġcom . had ro sa ur . basic bo keh .* Ċ Ċ class ĠFocus Capture Session Callback ( val Ġactivity : ĠMainActivity , Ġinternal Ġvar Ġparams : ĠCamera Params ) Ġ: ĠCamera Capture Session . Capture Callback () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Capture Sequence Completed ( session : ĠCamera Capture Session ?, Ġsequence Id : ĠInt , Ġframe Number : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠCapture Ġsequence ĠCOMP LETED ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! params . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Capture Sequence Completed ( session , Ġsequence Id , Ġframe Number ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Capture Sequence Abort ed ( session : ĠCamera Capture Session ?, Ġsequence Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠCapture Ġsequence ĠAB ORT ED ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! params . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . on Capture Sequence Abort ed ( session , Ġsequence Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Capture Failed ( session : ĠCamera Capture Session ?, Ġrequest : ĠCapture Request ?, Ġfailure : ĠCapture Failure ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠCapture Ġsequence ĠFAILED Ġ- Ġ" Ġ+ Ġfailure ?. reason ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! params . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// There Ġis Ġa Ġdevice Ġfailure Ġthis Ġmight Ġhelp ĊĠĠĠĠĠĠĠ Ġclose Camera ( params , Ġactivity ) ĊĠĠĠĠĠĠĠ Ġcamera 2 Open Camera ( activity , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess ( result : ĠCapture Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! params . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( params . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTATE _ PRE VIEW Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}// ĠWe Ġhave Ġnothing Ġto Ġdo Ġwhen Ġthe Ġcamera Ġpreview Ġis Ġworking Ġnormally . ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTATE _ WAIT ING _ LOCK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaf State Ġ= Ġresult . get ( Capture Result . CONTROL _ AF _ STATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠSTATE _ WAIT ING _ LOCK , Ġaf state Ġ== Ġ" Ġ+ Ġaf State ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( af State Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠSTATE _ WAIT ING _ LOCK , ĠCalling Ġcapture Still Picture !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . state Ġ= ĠSTATE _ PI CTURE _ TA KEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture Still Picture ( activity , Ġparams ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Capture Result . CONTROL _ AF _ STATE _ FOC USED _ LOCK ED Ġ== Ġaf State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠCapture Result . CONTROL _ AF _ STATE _ NOT _ FOC USED _ LOCK ED Ġ== Ġaf State ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCONT ROL _ AE _ STATE Ġcan Ġbe Ġnull Ġon Ġsome Ġdevices ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġae State Ġ= Ġresult . get ( Capture Result . CONTROL _ AE _ STATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ae State Ġ== Ġnull Ġ|| Ġae State Ġ== ĠCapture Result . CONTROL _ AE _ STATE _ CONVER GED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠSTATE _ WAIT ING _ LOCK , ĠCalling Ġcapture Still Picture !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . state Ġ= ĠSTATE _ PI CTURE _ TA KEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture Still Picture ( activity , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Pre capture Sequence ( activity , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTATE _ WAIT ING _ PRE CAPTURE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġae State Ġ= Ġresult . get ( Capture Result . CONTROL _ AE _ STATE ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaf State Ġ= Ġresult . get ( Capture Result . CONTROL _ AF _ STATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠSTATE _ WAIT ING _ PRE CAPTURE . Ġaf State : Ġ" Ġ+ Ġ" Ġae State : Ġ" Ġ+ Ġae State ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCONT ROL _ AE _ STATE Ġcan Ġbe Ġnull Ġon Ġsome Ġdevices ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ae State Ġ== Ġnull Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġae State Ġ== Ġ 0 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġae State Ġ== ĠCapture Result . CONTROL _ AE _ STATE _ PRE CAPTURE Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġae State Ġ== ĠCapture Request . CONTROL _ AE _ STATE _ FLASH _ REQUIRED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . state Ġ= ĠSTATE _ WAIT ING _ NON _ PRE CAPTURE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ae State Ġ== ĠCapture Result . CONTROL _ AE _ STATE _ CONVER GED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġae State Ġ== ĠCapture Result . CONTROL _ AE _ STATE _ LOCK ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . state Ġ= ĠSTATE _ WAIT ING _ LOCK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTATE _ WAIT ING _ NON _ PRE CAPTURE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠSTATE _ NON _ PRE CAPTURE .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCONT ROL _ AE _ STATE Ġcan Ġbe Ġnull Ġon Ġsome Ġdevices ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġae State Ġ= Ġresult . get ( Capture Result . CONTROL _ AE _ STATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ae State Ġ== Ġnull Ġ|| Ġae State Ġ== Ġ 0 Ġ|| Ġae State Ġ!= ĠCapture Result . CONTROL _ AE _ STATE _ PRE CAPTURE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . Log d (" Capture Session Callback Ġ: ĠSTATE _ WAIT ING _ NON _ PRE CAPTURE , ĠCalling Ġcapture Still Picture !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . state Ġ= ĠSTATE _ PI CTURE _ TA KEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture Still Picture ( activity , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Capture Prog ressed (@ NonNull Ġsession : ĠCamera Capture Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NonNull Ġrequest : ĠCapture Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NonNull Ġpartial Result : ĠCapture Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess ( partial Result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Capture Completed (@ NonNull Ġsession : ĠCamera Capture Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NonNull Ġrequest : ĠCapture Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NonNull Ġresult : ĠTotal Capture Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ UN INITIAL IZED Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ PRE VIEW Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ WAIT ING _ LOCK Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ WAIT ING _ PRE CAPTURE Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ WAIT ING _ NON _ PRE CAPTURE Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ PI CTURE _ TA KEN Ġ= Ġ 4 ĊĠĠĠ Ġ} Ċ } Ċ