/* Ċ Ġ* ĠCopyright Ġ( C ) ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġcontains Ġmodifications Ġby ĠThe ĠFl or in Ġdevelopers Ċ Ġ* ĠAll Ġmodifications Ġcopyright Ġ( C ) ĠThe ĠFl or in Ġdevelopers Ċ Ġ*/ Ċ package Ġcom . fl or in . bar coder e ader Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Texture View Ċ import Ġandroidx . annotation . Requires Permission Ċ import Ġjava . io . IOException ĊĊ Ċ class ĠCamera Source Preview ( private Ġval ĠmContext : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠTexture View ( mContext , Ġattrs ), ĠTexture View . Surface Texture Listener Ċ { ĊĠĠĠ Ġprivate Ġvar Ġtexture Height Ġ: ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġtexture Width Ġ: ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġpreview Height Ġ: ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġpreview Width Ġ: ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Start Requested : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Surface Available : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Camera Source : ĠCamera Source ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġis Por trait Mode : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorientation Ġ= ĠmContext . resources . configuration . orientation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠConfiguration . OR IENTATION _ POR TRA IT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" is Por trait Mode Ġreturning Ġfalse Ġby Ġdefault ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġm Start Requested Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Surface Available Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġsurface Texture Listener Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Texture Ġview Ġlistener Ġoverrides Ġbegin */ ĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Available ( texture : ĠSurface Texture , Ġwidth : ĠInt , Ġheight : ĠInt ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġm Surface Available Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtexture Height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġtexture Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart If Ready () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠIOException ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Could Ġnot Ġstart Ġcamera Ġsource .", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Size Changed ( texture : ĠSurface Texture , Ġwidth : ĠInt , Ġheight : ĠInt ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtexture Height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġtexture Width Ġ= Ġwidth ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Destroyed ( texture : ĠSurface Texture ): ĠBoolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġm Surface Available Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Updated ( texture : ĠSurface Texture ) ĊĠĠĠ Ġ{ ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/* Texture Ġview Ġlistener Ġoverrides Ġend */ ĊĊĊĠĠĠ Ġ@ Requires Permission ( Manifest . permission . CAMERA ) ĊĠĠĠ Ġ@ Throws ( IOException :: class , ĠSecurity Exception :: class ) ĊĠĠĠ Ġfun Ġstart ( camera Source : ĠCamera Source ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( camera Source Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Camera Source Ġ= Ġcamera Source ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Camera Source Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Start Requested Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart If Ready () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Camera Source Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera Source ?. stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrelease () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Camera Source Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera Source ?. release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera Source Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Permission ( Manifest . permission . CAMERA ) ĊĠĠĠ Ġ@ Throws ( IOException :: class , ĠSecurity Exception :: class ) ĊĠĠĠ Ġprivate Ġfun Ġstart If Ready () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Start Requested Ġ&& Ġm Surface Available ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera Source ?. start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Start Requested Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġpreview Height Ġ= Ġbottom Ġ- Ġtop ĊĠĠĠĠĠĠĠ Ġpreview Width Ġ= Ġright Ġ- Ġleft ĊĊĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart If Ready () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( se : ĠSecurity Exception ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Do Ġnot Ġhave Ġpermission Ġto Ġstart Ġthe Ġcamera ", Ġse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠIOException ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Could Ġnot Ġstart Ġcamera Ġsource .", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Camera Source Preview " ĊĠĠĠ Ġ} Ċ } Ċ