package Ġvideo . api . react native . li vest ream Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . util . Log Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġcom . facebook . react . bridge . Arguments Ċ import Ġcom . facebook . react . bridge . React Context Ċ import Ġcom . facebook . react . bridge . Writable Map Ċ import Ġcom . facebook . react . u im an ager . events . RCT EventEmitter Ċ import Ġvideo . api . li vest ream . Api Video Live Stream Ċ import Ġvideo . api . li vest ream . enums . Camera Facing Direction Ċ import Ġvideo . api . li vest ream . interfaces . I Connection Checker Ċ import Ġvideo . api . li vest ream . models . Audio Config Ċ import Ġvideo . api . li vest ream . models . Video Config ĊĊ Ċ class ĠReact Native Live Stream View ( context : ĠContext ) Ġ: ĠConstraint Layout ( context ), ĠI Connection Checker Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" RN Live Stream View " ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġapi Video Live Stream : ĠApi Video Live Stream ? Ġ= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġinf late ( context , ĠR . layout . react _ native _ li vest ream , Ġthis ) ĊĠ Ġ} ĊĊĠ Ġvar Ġvideo Bit rate : ĠInt ĊĠĠĠ Ġget () Ġ= Ġapi Video Live Stream ?. video Bit rate Ġ?: Ġ 0 ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġapi Video Live Stream ?. video Bit rate Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġvideo Config : ĠVideo Config ? Ġ= Ġnull ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠ Ġif Ġ( api Video Live Stream Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Video Live Stream Ġ= Ġbuild OrNull () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Video Live Stream ?. video Config Ġ= Ġvalue !! ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġaudio Config : ĠAudio Config ? Ġ= Ġnull ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠ Ġif Ġ( api Video Live Stream Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Video Live Stream Ġ= Ġbuild OrNull () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Video Live Stream ?. audio Config Ġ= Ġvalue !! ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġval Ġis Streaming : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġapi Video Live Stream ?. is Streaming Ġ?: Ġfalse ĊĊĠ Ġprivate Ġfun Ġbuild OrNull (): ĠApi Video Live Stream ? Ġ{ ĊĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ ĠManifest . permission . CAMERA ĊĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ ĠManifest . permission . RECORD _ AUDIO ĊĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠ Ġ" Missing Ġpermissions ĠManifest . permission . CAMERA Ġor / and ĠManifest . permission . RECORD _ AUDIO " ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġif Ġ(( audio Config Ġ!= Ġnull ) Ġ&& Ġ( video Config Ġ!= Ġnull )) Ġ{ ĊĠĠĠĠĠ ĠApi Video Live Stream ( ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠ Ġconnection Checker Ġ= Ġthis , ĊĠĠĠĠĠĠĠ Ġinitial Audio Config Ġ= Ġaudio Config !! , ĊĠĠĠĠĠĠĠ Ġinitial Video Config Ġ= Ġvideo Config !! , ĊĠĠĠĠĠĠĠ Ġinitial Camera Ġ= Ġcamera , ĊĠĠĠĠĠĠĠ Ġapi Video View Ġ= ĠfindViewById ( R . id . apiv ideo _ view ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġvar Ġcamera : ĠCamera Facing Direction Ġ= ĠCamera Facing Direction . BACK ĊĠĠĠ Ġget () Ġ= Ġapi Video Live Stream ?. camera Ġ?: Ġfield ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġapi Video Live Stream ?. camera Ġ= Ġvalue ĊĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġis Mut ed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġget () Ġ= Ġapi Video Live Stream ?. is Mut ed Ġ?: Ġfield ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġapi Video Live Stream ?. is Mut ed Ġ= Ġvalue ĊĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġstart Streaming ( requestId : ĠInt , Ġstream Key : ĠString , Ġurl : ĠString ?) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġurl ?. let Ġ{ Ġapi Video Live Stream ?. start Streaming ( stream Key , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġapi Video Live Stream ?. start Streaming ( stream Key ) ĊĠĠĠĠĠ ĠonStart Streaming Event ( requestId , Ġtrue ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ ĠLog . w ( this :: class . simple Name , Ġ" start Streaming Ġfailed ", Ġe ) ĊĠĠĠĠĠ ĠonStart Streaming Event ( requestId , Ġfalse , Ġe . message ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġstop Streaming () Ġ{ ĊĠĠĠ Ġapi Video Live Stream ?. stop Streaming () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Connection Success () Ġ{ ĊĠĠĠ ĠLog . i ( this :: class . simple Name , Ġ" Connection Ġsuccess ") ĊĠĠĠ Ġon Connection Success Event () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Connection Failed ( reason : ĠString ) Ġ{ ĊĠĠĠ ĠLog . e ( this :: class . simple Name , Ġ" Connection Ġfailed Ġdue Ġto Ġ$ reason ") ĊĠĠĠ Ġon Connection Failed Event ( reason ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Disconnect () Ġ{ ĊĠĠĠ ĠLog . w ( this :: class . simple Name , Ġ" Disconnected ") ĊĠĠĠ Ġon Disconnected Event () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠonStart Streaming Event ( requestId : ĠInt , Ġresult : ĠBoolean , Ġerror : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġval Ġpayload Ġ= ĠArguments . create Map (). apply Ġ{ ĊĠĠĠĠĠ Ġput Int (" requestId ", ĠrequestId ) ĊĠĠĠĠĠ Ġput Boolean (" result ", Ġresult ) ĊĠĠĠĠĠ Ġerror ?. let Ġ{ Ġput String (" error ", Ġerror ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġsend Event ( context Ġas ĠReact Context , ĠView Props . Events . ON _ START _ STREAM ING . type , Ġpayload ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġon Connection Success Event () Ġ{ ĊĠĠĠ Ġsend Event ( context Ġas ĠReact Context , ĠView Props . Events . CONNECTION _ SUCCESS . type ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġon Connection Failed Event ( reason : ĠString ?) Ġ{ ĊĠĠĠ Ġval Ġpayload Ġ= ĠArguments . create Map (). apply Ġ{ ĊĠĠĠĠĠ Ġput String (" code ", Ġreason ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġsend Event ( context Ġas ĠReact Context , ĠView Props . Events . CONNECTION _ FAILED . type , Ġpayload ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġon Disconnected Event () Ġ{ ĊĠĠĠ Ġsend Event ( context Ġas ĠReact Context , ĠView Props . Events . DIS CONNECTED . type ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsend Event ( ĊĠĠĠ Ġreact Context : ĠReact Context , ĊĠĠĠ ĠeventName : ĠString , ĊĠĠĠ Ġparams : ĠWrit able Map ? Ġ= Ġnull ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġreact Context ĊĠĠĠĠĠ Ġ. get JS Module ( RCT EventEmitter :: class . java ) ĊĠĠĠĠĠ Ġ. receive Event ( id , ĠeventName , Ġparams ) ĊĠ Ġ} Ċ } Ċ