package Ġcom . app . rt mp _ publisher Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . hardware . camera 2 . Camera AccessException Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Long Sparse Array Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . app . rt mp _ publisher . Camera Permissions . Result Callback Ċ import Ġio . flutter . plugin . common .* Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . view . Texture Registry Ċ Ċ internal Ġclass ĠMethod Call Handler Impl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmess enger : ĠBinary Messenger , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcamera Permissions : ĠCamera Permissions , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpermissions Registry : ĠPermission Stuff , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtexture Registry : ĠTexture Registry ) Ġ: ĠMethod Call Handler Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmethod Channel : ĠMethod Channel ĊĠĠĠ Ġprivate Ġval Ġimage Stream Channel : ĠEvent Channel Ċ // ĠĠĠ Ġprivate Ġvar Ġcamera : ĠCamera Wrapper ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcamera : ĠCamera ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmethod Channel Ġ= ĠMethod Channel ( messenger , Ġ" plugins . flutter . io / rt mp _ publisher ") ĊĠĠĠĠĠĠĠ Ġimage Stream Channel Ġ= ĠEvent Channel ( messenger , Ġ" plugins . flutter . io / rt mp _ publisher / image Stream ") ĊĠĠĠĠĠĠĠ Ġmethod Channel . set MethodCall Handler ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" available Cam eras " Ġ-> Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" available Cam eras ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( Camera Utils . get Available Cam eras ( activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" initialize " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" initialize ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Permissions . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Registry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . argument (" enable Audio ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠResult Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( errorCode : ĠString ?, Ġerror Description : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( errorCode Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstantiate Camera ( call , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error ( errorCode , Ġerror Description , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" take Picture " Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. take Picture ( call . argument (" path ") !! , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" take Picture ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" prepare For Video Recording " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" prepare For Video Recording ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġoptimization Ġis Ġnot Ġrequired Ġfor ĠAndroid . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Video Recording " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" start Video Recording ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. start Video Recording ( call . argument (" filePath ") !! , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Video Streaming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" start Video Streaming Ġ${ call . arguments . toString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbit rate : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . has Argument (" bit rate ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit rate Ġ= Ġcall . argument (" bit rate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. start Video Streaming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . argument (" url "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Video Recording And Streaming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" start Video Recording And Streaming Ġ${ call . arguments . toString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbit rate : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . has Argument (" bit rate ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit rate Ġ= Ġcall . argument (" bit rate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. start Video Recording And Streaming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . argument (" filePath ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . argument (" url "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pause Video Streaming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" pause Video Streaming ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. pause Video Streaming ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" resume Video Streaming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" resume Video Streaming ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. resume Video Streaming ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop Recording Or Streaming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" stop Recording Or Streaming ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. stop Video Recording Or Streaming ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop Recording " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" stop Recording ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. stop Video Recording ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop Streaming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" stop Streaming ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. stop Video Streaming ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pause Video Recording " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" pause Video Recording ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. pause Video Recording ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" resume Video Recording " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" resume Video Recording ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. resume Video Recording ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Image Stream " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" start Image Stream ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. start Preview With Image Stream ( image Stream Channel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop Image Stream " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" start Image Stream ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. start Preview () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" get Stream Statistics " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" get Stream Statistics ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. get Stream Statistics ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dispose " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Stuff ", Ġ" dispose ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( camera Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera ?. dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Listening () Ġ{ ĊĠĠĠĠĠĠĠ Ġmethod Channel . set MethodCall Handler ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġ@ Throws ( Camera AccessException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġinstantiate Camera ( call : ĠMethod Call , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera Name Ġ= Ġcall . argument < String >(" camera Name ") ĊĠĠĠĠĠĠĠ Ġval Ġresolution Preset Ġ= Ġcall . argument < String >(" resolution Preset ") ĊĠĠĠĠĠĠĠ Ġval Ġstreaming Preset Ġ= Ġcall . argument < String >(" streaming Preset ") ĊĠĠĠĠĠĠĠ Ġval Ġenable Audio Ġ= Ġcall . argument < Boolean >(" enable Audio ") !! ĊĠĠĠĠĠĠĠ Ġvar Ġenable OpenGL Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( call . has Argument (" enable Android OpenGL ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable OpenGL Ġ= Ġcall . argument < Boolean >(" enable Android OpenGL ") !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġflutter Surface Texture Ġ= Ġtexture Registry . create Surface Texture () ĊĠĠĠĠĠĠĠ Ġval Ġtexture Id : ĠLong Ġ= Ġflutter Surface Texture . id () ĊĠĠĠĠĠĠĠ Ġval Ġdart Messenger Ġ= ĠDart Messenger ( messenger , Ġtexture Id ) Ċ // ĠĠĠĠĠĠĠ Ġcamera Ġ= ĠCamera Wrapper ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġactivity , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflutter Texture Ġ= Ġflutter Surface Texture , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdart Messenger Ġ= Ġdart Messenger , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Name Ġ= Ġcamera Name !! , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolution Preset Ġ= Ġresolution Preset , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstreaming Preset Ġ= Ġstreaming Preset , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Audio Ġ= Ġenable Audio , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse OpenGL Ġ= Ġenable OpenGL ) ĊĠĠĠĠĠĠĠ Ġcamera Ġ= ĠCamera ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflutter Texture Ġ= Ġflutter Surface Texture , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdart Messenger Ġ= Ġdart Messenger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Name Ġ= Ġcamera Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolution Preset Ġ= Ġresolution Preset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstreaming Preset Ġ= Ġstreaming Preset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Audio Ġ= Ġenable Audio , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse OpenGL Ġ= Ġenable OpenGL ) ĊĠĠĠĠĠĠĠ Ġcamera ?. apply Ġ{ Ġopen ( result ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġmove Ġcatch ing ĠCamera AccessException Ġout Ġof Ġon MethodCall Ġbecause Ġit Ġcauses Ġa Ġcrash ĊĠĠĠ Ġ// Ġon Ġplugin Ġregistration Ġfor Ġsdk s Ġincompatible Ġwith ĠCamera 2 Ġ(< Ġ 2 1 ). ĠWe Ġwant Ġthis Ġplugin Ġto ĊĠĠĠ Ġ// Ġto Ġbe Ġable Ġto Ġcompile Ġwith Ġ< 2 1 Ġsdk s Ġfor Ġapps Ġthat Ġwant Ġthe Ġcamera Ġand Ġsupport Ġearlier Ġversion . ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġprivate Ġfun Ġhandle Exception ( exception : ĠException , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( exception Ġis ĠCamera AccessException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" Camera Access ", Ġexception . message , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow Ġ( exception Ġas ĠRuntimeException ) ĊĠĠĠ Ġ} Ċ Ċ }