package Ġcom . ha ish ink it . media Ċ Ċ import Ġandroid . graphics . Image Format Ċ import Ġandroid . hardware . Camera Ċ import Ġandroid . view . Surface Holder Ċ import Ġcom . ha ish ink it . y uv . NV 2 1 to Y UV 4 2 0 Sem i Plan ar Converter Ċ import Ġcom . ha ish ink it . media . util . Camera Utils Ċ import Ġcom . ha ish ink it . media . util . Media Codec Utils Ċ import Ġcom . ha ish ink it . rt mp . RT MP Stream Ċ import Ġcom . ha ish ink it . util . Log Ċ import Ġcom . ha ish ink it . util . Size Ċ Ċ class ĠCamera : ĠSurface Holder . Callback , Ġandroid . hardware . Camera . Preview Callback , ĠI Device Ġ{ ĊĠĠĠ Ġvar Ġcamera : Ġandroid . hardware . Camera ? ĊĠĠĠ Ġinternal Ġvar Ġdisplay Orient a ion : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġstream : ĠR TMP Stream ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġsize : ĠSize Ġ= ĠSize ( DEFAULT _ WIDTH , ĠDEFAULT _ HEIGHT ) ĊĠĠĠ Ġvar Ġactual Size : ĠSize Ġ= ĠSize ( DEFAULT _ WIDTH , ĠDEFAULT _ HEIGHT ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġconstructor ( camera : Ġandroid . hardware . Camera ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . camera Ġ= Ġcamera ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Created ( holder : ĠSurface Holder ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. set Preview Callback ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. set Preview Display ( holder ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( java Class . name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Changed ( holder : ĠSurface Holder ?, Ġformat : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcamera ?. stop Preview () ĊĠĠĠĠĠĠĠ Ġif Ġ(- 1 Ġ< Ġdisplay Orient a ion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. set Display Orientation ( display Orient a ion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte Converter Ġ= Ġstream ?. get Encoder ByName (" video / av c ") ?. byte Converter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( byte Converter Ġis ĠNV 2 1 to Y UV 4 2 0 Sem i Plan ar Converter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Converter . rotation Ġ= Ġdisplay Orient a ion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcamera ?. start Preview () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Destroyed ( holder : ĠSurface Holder ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Preview Frame ( bytes : ĠByteArray ?, Ġcamera : ĠCamera ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstream ?. append Bytes ( bytes , ĠSystem . nano Time () Ġ/ Ġ 1 0 0 0 0 0 0 L , ĠR TMP Stream . Buffer Type . VIDEO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( camera Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactual Size Ġ= ĠCamera Utils . get Actual Size ( size , Ġcamera !!. parameters . supported Preview Sizes ) ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġcamera !!. parameters ĊĠĠĠĠĠĠĠ Ġparameters . set Preview Size ( actual Size . width , Ġactual Size . height ) ĊĠĠĠĠĠĠĠ Ġparameters . set Preview F ps Range ( 3 0 0 0 0 , Ġ 3 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( format Ġin Ġcamera !!. parameters . supported Preview Formats ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( java Class . name , ĠMedia Codec Utils . image Format ToString ( format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparameters . preview Format Ġ= ĠImage Format . NV 2 1 ĊĠĠĠĠĠĠĠ Ġcamera ?. parameters Ġ= Ġparameters ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtearDown () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠDEFAULT _ WIDTH : Int Ġ= Ġ 6 4 0 ĊĠĠĠĠĠĠĠ Ġvar ĠDEFAULT _ HEIGHT : Int Ġ= Ġ 4 8 0 ĊĠĠĠ Ġ} Ċ } ĊĊ