package Ġcom . tw ilio . video . quickstart . kotlin Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Pair Ċ import Ġcom . tw ilio . video . Camera 2 Capt urer Ċ import Ġcom . tw ilio . video . Camera Capt urer Ċ import Ġcom . tw ilio . video . Video Capt urer Ċ import Ġorg . webrtc . Camera 2 Enumerator Ċ Ċ class ĠCamera Capt urer Compat ( context : ĠContext , Ġcamera Source : ĠCamera Capt urer . Camera Source ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Camera Capt urer Compat " ĊĊĠĠĠ Ġprivate Ġvar Ġcamera 1 Capt urer : ĠCamera Capt urer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcamera 2 Capt urer : ĠCamera 2 Capt urer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfront Camera Pair : ĠPair < Camera Capt urer . Camera Source , ĠString >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġback Camera Pair : ĠPair < Camera Capt urer . Camera Source , ĠString >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġcamera 2 Listener Ġ= Ġobject Ġ: ĠCamera 2 Capt urer . Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon First Frame Available () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on First Frame Available ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Camera Sw itched ( new Camera Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on Camera Sw itched : Ġnew Camera Id Ġ= Ġ$ new Camera Id ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( camera 2 Capt urer Exception : ĠCamera 2 Capt urer . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġcamera 2 Capt urer Exception . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcamera Source : ĠCamera Capt urer . Camera Source ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( using Camera 1 ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcamera 1 Capt urer !!. camera Source ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Camera Source ( camera 2 Capt urer !!. camera Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠThis Ġproperty Ġis Ġrequired Ġbecause Ġthis Ġclass Ġis Ġnot Ġan Ġimplementation Ġof ĠVideo Capt urer Ġdue Ġto ĊĠĠĠĠ Ġ* Ġa Ġshort coming Ġin Ġthe ĠVideo ĠAndroid ĠSDK . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġvideo Capt urer : ĠVideo Capt urer ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( using Camera 1 ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcamera 1 Capt urer !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcamera 2 Capt urer !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Camera 2 Capt urer . is Supported ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Camera Pairs ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera 2 Capt urer Ġ= ĠCamera 2 Capt urer ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Camera Id ( camera Source ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera 2 Listener ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera 1 Capt urer Ġ= ĠCamera Capt urer ( context , Ġcamera Source ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswitch Camera () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( using Camera 1 ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera 1 Capt urer !!. switch Camera () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Source Ġ= Ġget Camera Source ( camera 2 Capt urer !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. camera Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( camera Source Ġ== ĠCamera Capt urer . Camera Source . FRONT _ CAMERA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera 2 Capt urer !!. switch Camera ( back Camera Pair !!. second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera 2 Capt urer !!. switch Camera ( front Camera Pair !!. second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġusing Camera 1 (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcamera 1 Capt urer Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Camera Pairs ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera 2 Enumerator Ġ= ĠCamera 2 Enumerator ( context ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( camera Id Ġin Ġcamera 2 Enumerator . device Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( camera 2 Enumerator . is Front Facing ( camera Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfront Camera Pair Ġ= ĠPair ( Camera Capt urer . Camera Source . FRONT _ CAMERA , Ġcamera Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( camera 2 Enumerator . is Back Facing ( camera Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Camera Pair Ġ= ĠPair ( Camera Capt urer . Camera Source . BACK _ CAMERA , Ġcamera Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Camera Id ( camera Source : ĠCamera Capt urer . Camera Source ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( front Camera Pair !!. first Ġ== Ġcamera Source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfront Camera Pair !!. second ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Camera Pair !!. second ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Camera Source ( camera Id : ĠString ): ĠCamera Capt urer . Camera Source Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( front Camera Pair !!. second Ġ== Ġcamera Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfront Camera Pair !!. first ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Camera Pair !!. first ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }