package Ġcom . tu ya . smart . android . demo . camera Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . alibaba . fastjson . JSON Ċ import Ġcom . alibaba . fastjson . JSONException Ċ import Ġcom . alibaba . fastjson . JSONObject Ċ import Ġcom . tu ya . smart . android . camera . sdk . Tu ya IP CS dk Ċ import Ġcom . tu ya . smart . android . camera . timeline . On Bar Move Listener Ċ import Ġcom . tu ya . smart . android . camera . timeline . Time Bean Ċ import Ġcom . tu ya . smart . android . common . utils . L Ċ import Ġcom . tu ya . smart . android . demo . camera . adapter . Camera Playback Time Adapter Ċ import Ġcom . tu ya . smart . android . demo . camera . bean . Record Info Bean Ċ import Ġcom . tu ya . smart . android . demo . camera . bean . Time Piece Bean Ċ import Ġcom . tu ya . smart . android . demo . camera . databinding . Activity Camera Playback Binding Ċ import Ġcom . tu ya . smart . android . demo . camera . utils . Constants Ċ import Ġcom . tu ya . smart . android . demo . camera . utils . Message Util Ċ import Ġcom . tu ya . smart . android . demo . camera . utils . Toast Util Ċ import Ġcom . tu ya . smart . camera . cam eras dk . ty player . callback . Abs P 2 p Camera Listener Ċ import Ġcom . tu ya . smart . camera . cam eras dk . ty player . callback . Operation Delegate CallBack Ċ import Ġcom . tu ya . smart . camera . ip cc am eras dk . bean . Month Days Ċ import Ġcom . tu ya . smart . camera . ip cc am eras dk . p 2 p . IC amera P 2 P Ċ import Ġcom . tu ya . smart . camera . middleware . p 2 p . IT u ya Smart Camera P 2 P Ċ import Ġcom . tu ya . smart . camera . middleware . widget . Abs Video View Callback Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠS d Card ĠVideo ĠPlay Back Ċ Ġ* Ġ@ author Ġh ou Ġq ing Ġ< a Ġhref =" mailto : developer @ tu ya . com "/> Ċ Ġ* Ġ@ since Ġ 2 0 2 1 / 7 / 2 7 Ġ 8 : 2 7 ĠPM Ċ Ġ*/ Ċ class ĠCamera Playback Activity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Camera Playback Activity " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Binding : ĠActivity Camera Playback Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Camera P 2 P : ĠIT u ya Smart Camera P 2 P < Any > ĊĠĠĠ Ġprivate Ġval ĠAS PECT _ RATIO _ WIDTH Ġ= Ġ 9 ĊĠĠĠ Ġprivate Ġval ĠAS PECT _ RATIO _ HEIGHT Ġ= Ġ 1 6 ĊĠĠĠ Ġprivate Ġvar Ġdev Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠCamera Playback Time Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġquery Date List : ĠMutable List < Time Piece Bean >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġis Playback Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġm Back Data Month Cache : ĠMutable Map < String , ĠMutable List < String >> ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġm Back Data Day Cache : ĠMutable Map < String , ĠMutable List < Time Piece Bean >> ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Playback Mute Ġ= ĠI Camera P 2 P . M UTE ĊĠĠĠ Ġ@ Suppress Lint (" Handler Leak ") ĊĠĠĠ Ġprivate Ġval Ġm Handler : ĠHandler Ġ= Ġobject Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ M UTE Ġ-> Ġhandle Mute ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ DATA _ DATE Ġ-> Ġhandle Data Date ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ DATA _ DATE _ BY _ DAY _ SU CC , ĠConstants . MSG _ DATA _ DATE _ BY _ DAY _ FAIL Ġ-> Ġhandle Data Day ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . handle Message ( msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Data Day ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( msg . arg 1 Ġ== ĠConstants . ARG 1 _ OPER ATE _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Date List ?. clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Time pieces Ġwith Ġdata Ġfor Ġthe Ġquery Ġday ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Piece Beans Ġ= Ġm Back Data Day Cache ! ![ m Camera P 2 P . day Key ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! time Piece Beans . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Date List ?. addAll ( time Piece Beans ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeline Data : ĠMutable List < Time Bean > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( startTime , ĠendTime ) Ġin Ġtime Piece Beans ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠTime Bean () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb . startTime Ġ= ĠstartTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb . endTime Ġ= ĠendTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimeline Data . add ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . timeline . setCurrent Time Config ( time Piece Beans [ 0 ]. endTime Ġ* Ġ 1 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . timeline . set Record Data Exist Time Cli ps List ( timeline Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Toast () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Mute ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( msg . arg 1 Ġ== ĠConstants . ARG 1 _ OPER ATE _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . camera Mute . isSelected Ġ= Ġm Playback Mute Ġ== ĠI Camera P 2 P . M UTE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . short Toast ( this @ Camera Playback Activity , ĠgetString ( R . string . operation _ failed )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error Toast () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . short Toast ( this @ Camera Playback Activity , ĠgetString ( R . string . no _ data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Data Date ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( msg . arg 1 Ġ== ĠConstants . ARG 1 _ OPER ATE _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdays Ġ= Ġm Back Data Month Cache ?. get ( m Camera P 2 P . month Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( days !!. isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Toast () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Str : ĠString Ġ= Ġview Binding . date Input Ed t . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Str . isNotEmpty () Ġ&& Ġinput Str . contains ("/ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubstring Ġ= Ġinput Str . split ("/ ". to Regex ()). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġsubstring [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm outh Ġ= Ġsubstring [ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġsubstring [ 2 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . query Record Time Slice By Day ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm outh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e ( TAG , Ġ"$ input Str Ġ--- Ġ$ data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse Playback Data ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . send Empty Message ( Constants . MSG _ DATA _ DATE _ BY _ DAY _ FAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Playback Data ( obj : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparse Object Ġ= ĠJSON . parse Object ( obj . toString (), ĠRecord Info Bean :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( parse Object . count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parse Object . items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Back Data Day Cache ?. put ( m Camera P 2 P . day Key , Ġparse Object . items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Util . getMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ DATA _ DATE _ BY _ DAY _ SU CC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ARG 1 _ OPER ATE _ SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Util . getMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ DATA _ DATE _ BY _ DAY _ FAIL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ARG 1 _ OPER ATE _ FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġview Binding Ġ= ĠActivity Camera Playback Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( view Binding . root ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġinit Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġview Binding . camera Video View . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Playback ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . stop Play Back ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . remove On P 2 PC amera Listener () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . disconnect ( object Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( i : ĠInt , Ġi 1 : ĠInt , Ġs : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( i : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġview Binding . camera Video View . on Resume () ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . register P 2 PC amera Listener ( p 2 p Camera Listener ) ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . generate Camera View ( view Binding . camera Video View . created View ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġp 2 p Camera Listener : ĠAbs P 2 p Camera Listener Ġ= Ġobject Ġ: ĠAbs P 2 p Camera Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive Frame Y UV Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer : ĠByteBuffer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer 1 : ĠByteBuffer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer 2 : ĠByteBuffer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 2 : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 3 : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi 4 : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl 1 : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl 2 : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo : ĠAny ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Receive Frame Y UV Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . timeline . setCurrent TimeIn Millisecond ( l Ġ* Ġ 1 0 0 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Binding . camera Mute . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Binding . query Btn . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Binding . start Btn . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Binding . pause Btn . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Binding . resume Btn . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Binding . stop Btn . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġadapter ?. set Listener ( object Ġ: ĠCamera Playback Time Adapter . On Time Item Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( time Piece Bean : ĠTime Piece Bean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayback ( time Piece Bean . startTime , Ġtime Piece Bean . endTime , Ġtime Piece Bean . startTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Back Data Month Cache Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġm Back Data Day Cache Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġdev Id Ġ= Ġintent . getString Extra ( Constants . INT ENT _ DEV _ ID ) ĊĠĠĠĠĠĠĠ Ġview Binding . query List . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( this , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġview Binding . query List . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġquery Date List Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠCamera Playback Time Adapter ( query Date List Ġas ĠArrayList < Time Piece Bean >) ĊĠĠĠĠĠĠĠ Ġview Binding . query List . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġval Ġcamera Instance Ġ= ĠT u ya IP CS dk . get Camera Instance () ĊĠĠĠĠĠĠĠ Ġif Ġ( camera Instance Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P Ġ= Ġcamera Instance . create Camera P 2 P ( dev Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Binding . camera Video View . setView Callback ( object Ġ: ĠAbs Video View Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Created ( o : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Created ( o ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . generate Camera View ( view Binding . camera Video View . created View ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġview Binding . camera Video View . create Video View ( dev Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Camera P 2 P . is Connecting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . connect ( dev Id , Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( i : ĠInt , Ġi 1 : ĠInt , Ġs : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( i : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . short Toast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Camera Playback Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" p 2 p Ġconnect Ġfailed Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Binding . camera Mute . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy / MM / dd ") ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġview Binding . date Input Ed t . setText ( simple DateFormat . format ( date )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( view Binding . toolbar View ) ĊĠĠĠĠĠĠĠ Ġview Binding . toolbar View . set Navigation OnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġ// It Ġis Ġbest Ġto Ġset Ġthe Ġaspect Ġratio Ġto Ġ 1 6 : 9 ĊĠĠĠĠĠĠĠ Ġval Ġwindow Manager Ġ= Ġthis . getSystem Service ( WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġwindow Manager . default Display . width ĊĠĠĠĠĠĠĠ Ġval Ġheight : ĠInt Ġ= Ġwidth Ġ* ĠAS PECT _ RATIO _ WIDTH Ġ/ ĠAS PECT _ RATIO _ HEIGHT ĊĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠRelative Layout . LayoutParams ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġlayout Params . add Rule ( Relative Layout . BE LOW , Ġview Binding . toolbar View . id ) ĊĠĠĠĠĠĠĠ Ġview Binding . camera Video View Rl . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġview Binding . timeline . setOn Bar Move Listener ( object Ġ: ĠOn Bar Move Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bar Move ( l : ĠLong , Ġl 1 : ĠLong , Ġl 2 : ĠLong ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bar Move Finish ( startTime : ĠLong , ĠendTime : ĠLong , ĠcurrentTime : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . timeline . set Can Query Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . timeline . set Query New Video Data ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startTime Ġ!= Ġ- 1 L Ġ&& ĠendTime Ġ!= Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayback ( startTime . toInt (), ĠendTime . toInt (), ĠcurrentTime . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bar Action Down () Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġview Binding . timeline . setOn Selected Time Listener Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayback ( startTime : ĠInt , ĠendTime : ĠInt , Ġplay Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . start Play Back ( startTime , ĠendTime , Ġplay Time , Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . camera _ mute Ġ-> Ġmute Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . query _ btn Ġ-> Ġquery Day By Month Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . start _ btn Ġ-> Ġstart Playback () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . pause _ btn Ġ-> Ġpause Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . resume _ btn Ġ-> Ġresume Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . stop _ btn Ġ-> Ġstop Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . stop Play Back ( object Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresume Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . resume Play Back ( object Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpause Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . pause Play Back ( object Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Playback () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! query Date List . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Date List ! ![ 0 ]. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . start Play Back ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . startTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . endTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . startTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playback Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . short Toast ( this , ĠgetString ( R . string . no _ data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Day By Month Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Camera P 2 P . is Connecting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . short Toast ( this @ Camera Playback Activity , ĠgetString ( R . string . connect _ first )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Str : ĠString Ġ= Ġview Binding . date Input Ed t . text . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( input Str )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( input Str . contains ("/ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubstring Ġ= Ġinput Str . split ("/ ". to Regex ()). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( substring . size Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġsubstring [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm outh Ġ= Ġsubstring [ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Camera P 2 P . query Record Days By Month ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm outh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonth Days Ġ= ĠJSONObject . parse Object ( data , ĠMonth Days :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Back Data Month Cache ! ![ m Camera P 2 P . month Key ] Ġ= Ġmonth Days . data Days ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e ( TAG , Ġ" Month Days Ġ--- Ġ$ data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Util . getMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ DATA _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ARG 1 _ OPER ATE _ SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Util . getMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ DATA _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ARG 1 _ OPER ATE _ FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . short Toast ( this @ Camera Playback Activity , ĠgetString ( R . string . input _ err )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmute Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmute : ĠInt Ġ= Ġif Ġ( m Playback Mute Ġ== ĠI Camera P 2 P . M UTE ) ĠI Camera P 2 P . UN M UTE Ġelse ĠI Camera P 2 P . M UTE ĊĠĠĠĠĠĠĠ Ġm Camera P 2 P . set Mute ( mute , Ġobject Ġ: ĠOperation Delegate CallBack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Playback Mute Ġ= ĠInteger . valueOf ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Util . getMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ M UTE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ARG 1 _ OPER ATE _ SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( sessionId : ĠInt , ĠrequestId : ĠInt , Ġerr Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Util . getMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ M UTE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ARG 1 _ OPER ATE _ FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }