package Ġcn . be are ver . lik em osa ic . call Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġcn . be are ver . lik em osa ic . R Ċ import Ġcn . be are ver . lik em osa ic . Uid Util Ċ import Ġcn . be are ver . lik em osa ic . bean . Message Bean Ċ import Ġcn . be are ver . lik em osa ic . bean . Select Topic Bean Ċ import Ġcn . be are ver . lik em osa ic . bean . Topic Bean Ċ import Ġcn . be are ver . lik em osa ic . bean . Topic ListResult Bean Ċ import Ġcn . be are ver . ming base . Base Callback Ċ import Ġcn . be are ver . ming base . app . mvp . Base Presenter I ml Ċ import Ġcn . be are ver . ming base . app . util . Toast Util Ċ import Ġio . ag ora . rtc . Constants . CONNECTION _ CHANGED _ INVALID _ TOKEN Ċ import Ġio . ag ora . rtc . IR tc Engine EventHandler Ex Ċ import Ġio . ag ora . rtc . Rtc Engine Ċ import Ġio . ag ora . rtc . media io . IV ideo Sink Ċ import Ġio . ag ora . rtc . video . Video Encoder Configuration Ċ import Ġio . ag ora . rtm . jni . CONNECTION _ STATE Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ /** Ċ Ġ* Ġ@ author Ġlu om ing Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 4 / 1 6 Ċ Ġ*/ Ċ class ĠVideo Call Presenter ( view : ĠVideo Call Contact . View ?, Ġcontext : ĠContext ?) Ġ: ĊĠĠĠĠĠĠĠ ĠBase Presenter I ml < Video Call Contact . View ?, ĠVideo Call Contact . Model ? >( view , Ġcontext ), ĠVideo Call Contact . Presenter Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Video Call Presenter " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Rtc Engine : ĠR tc Engine ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Channel Ġ= Ġ"" ĊĠĠĠ Ġ// æĪĳ å¯¹ å¯¹ æĸ¹ çļĦ å¥½ æĦŁ åº¦ ĊĠĠĠ Ġprivate Ġvar Ġm Like Count Me 2 Other Ġ= Ġ 5 0 ĊĠĠĠ Ġ// å¯¹ æĸ¹ å¯¹ æĪĳçļĦ å¥½ æĦŁ åº¦ ĊĠĠĠ Ġprivate Ġvar Ġm Like Count Other 2 Me Ġ= Ġ 5 0 ĊĠĠĠ Ġprivate Ġvar Ġm Timer Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠLOCK _ LIKE _ COUNT Ġ= ĠAny () ĊĠĠĠ Ġprivate Ġvar Ġm Other Online Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Timer : ĠTimer ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Engine And Join Channel () ĊĠĠĠĠĠĠĠ Ġinit Like Timer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Like Timer () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æ¯ı ä¸Ģ ç§Ĵ éĴŁ å°Ĩ m Like Count - 1 ĊĠĠĠĠĠĠĠ Ġm Timer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠ Ġm Timer . schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( LOCK _ LIKE _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Like Count Me 2 Other -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Like Count Other 2 Me -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. refresh Like ( m Like Count Me 2 Other ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Like Count Me 2 Other Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¥½ æĦŁ åº¦ ä¸º 0 ï¼Į èģ Ĭ å¤© ç»ĵæĿŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. local Like Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Timer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Like Count Other 2 Me Ġ<= Ġ 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on User Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Timer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Timer Count ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Timer Count Ġ== Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Quit Btn () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Other Online ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on User Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Timer Count Ġ== Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note (" åıĮ æĸ¹ éĢīæĭ© åĲĮ æł· çļĦè¯Ŀ é¢ĺ ä¼ļ çĶ¨ ç² ī èī² è¡¨ç¤º åĵ ¦ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Like Count Other 2 Me Ġ== Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note (" å¯¹ æĸ¹ å¯¹ ä½łçļĦ å¥½ æĦŁ åº¦ éĻį èĩ³ åĨ ° çĤ¹ äºĨ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Like Count Me 2 Other Ġ== Ġ 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note (" åıĮ åĩ» å¯¹ æĸ¹ çļĦ çĶ» éĿ¢ ï¼Į åı¯ä»¥ å¢ŀåĬł ä½ł å¯¹ ä»ĸ / å¥¹ çļĦ å¥½ æĦŁ åº¦ åĵ ¦ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLike Manager . getInstance (). set Like Count Me 2 Other ( m Like Count Me 2 Other ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLike Manager . getInstance (). set Like Count Other 2 Me ( m Like Count Other 2 Me ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Like () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 , Ġ 1 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Engine And Join Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialize Engine () ĊĠĠĠĠĠĠĠ Ġsetup Video Config () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Engine () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Rtc Engine Ġ= ĠR tc Engine . create ( context , Ġcontext . getString ( R . string . ag ora _ app _ id ), Ġobject Ġ: ĠIR tc Engine EventHandler Ex () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æ³¨åĨĮ Ġon Join Channel Success Ġ åĽŀè°ĥ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æľ¬åľ° çĶ¨æĪ· æĪĲåĬŁ åĬłåħ¥ é¢ĳ éģĵ æĹ¶ ï¼Į ä¼ļ è§¦åıĳ è¯¥ åĽŀè°ĥ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Join Channel Success ( channel : ĠString ?, Ġuid : ĠInt , Ġelapsed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Join Channel Success ( channel , Ġuid , Ġelapsed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Join Channel Success :" Ġ+ Ġuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSDK Ġ æİ¥æĶ¶ åĪ° ç¬¬ä¸Ģ å¸ § è¿ľ ç«¯ è§Ĩé¢ĳ å¹¶ æĪĲåĬŁ è§£ çłģ æĹ¶ ï¼Į ä¼ļ è§¦åıĳ è¯¥ åĽŀè°ĥ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġåı¯ä»¥ åľ¨ è¯¥ åĽŀè°ĥ ä¸Ń è°ĥçĶ¨ Ġsetup Remote Video Ġæĸ¹æ³ķ è®¾ç½® è¿ľ ç«¯ è§ĨåĽ¾ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon First Remote Video Decoded ( uid : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt , Ġelapsed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on User Join ( uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connection StateChanged ( state : ĠInt , Ġreason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Connection StateChanged ( state , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" éĶĻè¯¯ äºĨ ï¼ļ" Ġ+ Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reason Ġ== ĠCONNECTION _ CHANGED _ INVALID _ TOKEN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" çĶŁæĪĲ çļĦ token æĹł æķĪ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon User Offline ( uid : ĠInt , Ġreason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on User Offline ( uid , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on User Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , ĠLog . get StackTrace String ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" NEED ĠTO Ġcheck Ġr tc Ġsdk Ġinit Ġfatal Ġerror \ n " Ġ+ ĠLog . get StackTrace String ( e )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Video Config () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. enable Video () ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. set Video Encoder Configuration ( Video Encoder Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Encoder Configuration . VD _ 6 4 0 x 4 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Encoder Configuration . FRAME _ RATE . FRAME _ RATE _ FPS _ 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Encoder Configuration . STANDARD _ BIT RATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Encoder Configuration . OR IENTATION _ MODE . OR IENTATION _ MODE _ FIXED _ POR TRA IT )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Model () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Model Ġ= ĠVideo Call Model ( context ) ĊĠĠĠĠĠĠĠ Ġm Model ?. register Message Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æİ¥æĶ¶ åĪ° å¯¹ æĸ¹ åıĳéĢģ çļĦ æ¶Īæģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message ?. channel Ġ!= Ġm Channel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ register Message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Other Online Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( message . key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Bean . KEY _ SELECT _ TOPIC Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. receive Select Tag ( message . data Ġas ĠSelect Topic Bean ?) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note ( message . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Bean . KEY _ REFRESH _ TOPIC Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. refresh Tags ( message . data Ġas ĠArrayList < Topic Bean >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. start Refresh Animation ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Bean . KEY _ REMOTE _ LIKE _ CHANGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlike Count Ġ= Ġmessage . data Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( like Count Ġ- Ġm Like Count Other 2 Me Ġ> Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Like Count Other 2 Me Ġ< Ġ 1 0 0 Ġ&& Ġlike Count Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note (" å¯¹ æĸ¹ å¯¹ ä½łçļĦ å¥½ æĦŁ åº¦ å¢ŀåĬł äºĨ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Like Count Other 2 Me Ġ< Ġ 2 0 0 Ġ&& Ġlike Count Ġ> Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note (" å¯¹ æĸ¹ å¯¹ ä½łçļĦ å¥½ æĦŁ åº¦ å¢ŀåĬł äºĨ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Like Count Other 2 Me Ġ< Ġ 3 0 0 Ġ&& Ġlike Count Ġ> Ġ 3 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Note (" å¯¹ æĸ¹ å¯¹ ä½łçļĦ å¥½ æĦŁ åº¦ æĬ¥ è¡¨ åķ ¦ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Like Count Other 2 Me Ġ= Ġlike Count Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. refresh Like ( m Like Count Me 2 Other ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Bean . KEY _ QU IT _ ROOM Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on User Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Bean . KEY _ ON LINE _ IN _ ROOM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Other Online Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( message . text )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . show ( message . text ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Local Video Renderer ( sink : ĠI Video Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. set Local Video Renderer ( sink ) ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. start Preview () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Remote Video Renderer ( uid : ĠInt , Ġsink : ĠI Video Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. set Remote Video Renderer ( uid , Ġsink ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġjoin Room ( channel : ĠString ?, Ġr tc Token : ĠString ?, Ġr tm Token : ĠString ?, Ġremote Uid : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Channel Ġ= Ġchannel Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġm Model ?. login R tm ( rtm Token , Ġchannel , Ġremote Uid ) ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. join Channel With User Account ( rtc Token , Ġchannel , ĠU id Util . get Uid ( context )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquit Room () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åıĳéĢģ ç¦» å¼Ģ é¢ĳ éģĵ çļĦ æ¶Īæģ¯ Ċ // ĠĠĠĠĠĠĠ Ġsend Quit Room Message () ĊĠĠĠĠĠĠĠ Ġ// Ċ // ĠĠĠĠĠĠĠ ĠR tc Engine . destroy () ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. leave Channel () ĊĠĠĠĠĠĠĠ Ġm Rtc Engine Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Model ?. logout R tm () ĊĠĠĠĠĠĠĠ Ġm Timer . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Quit Room Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage Bean < String >( m Channel ) ĊĠĠĠĠĠĠĠ Ġmessage . key Ġ= ĠMessage Bean . KEY _ QU IT _ ROOM ĊĠĠĠĠĠĠĠ Ġm Model ?. sendMessage ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmute Audio ( mute : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Rtc Engine ?. mute Local Audio Stream ( mute ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect Topic ( topic Bean : ĠTopic Bean , Ġis Select : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage Bean < Select Topic Bean >( m Channel ) ĊĠĠĠĠĠĠĠ Ġmessage . key Ġ= ĠMessage Bean . KEY _ SELECT _ TOPIC ĊĠĠĠĠĠĠĠ Ġval Ġselect Topic Bean Ġ= ĠSelect Topic Bean () ĊĠĠĠĠĠĠĠ Ġselect Topic Bean . id Ġ= Ġtopic Bean . id ĊĠĠĠĠĠĠĠ Ġselect Topic Bean . selected Ġ= Ġis Select ĊĠĠĠĠĠĠĠ Ġmessage . data Ġ= Ġselect Topic Bean ĊĠĠĠĠĠĠĠ Ġif Ġ( is Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" å¯¹ æĸ¹ éĢīæĭ© äºĨ ãĢĲ " Ġ+ Ġtopic Bean . text Ġ+ Ġ" ãĢĳ è¯Ŀ é¢ĺ " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" å¯¹ æĸ¹ åıĸæ¶Ī äºĨ ãĢĲ " Ġ+ Ġtopic Bean . text Ġ+ Ġ" ãĢĳ è¯Ŀ é¢ĺ " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Model ?. sendMessage ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Like () Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( LOCK _ LIKE _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Like Count Me 2 Other Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Like () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage Bean < Int >( m Channel ) ĊĠĠĠĠĠĠĠ Ġmessage . key Ġ= ĠMessage Bean . KEY _ REMOTE _ LIKE _ CHANGE ĊĠĠĠĠĠĠĠ Ġmessage . data Ġ= Ġm Like Count Me 2 Other ĊĠĠĠĠĠĠĠ Ġm Model ?. sendMessage ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Topics () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Model ?. get Topics ( object Ġ: ĠBase Callback < Topic ListResult Bean >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsuc ( data : ĠTopic ListResult Bean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. refresh Tags ( data . list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage Bean < ArrayList < Topic Bean >>( m Channel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . key Ġ= ĠMessage Bean . KEY _ REFRESH _ TOPIC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . data Ġ= Ġdata . list ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" å¯¹ æĸ¹ åĪ·æĸ° äºĨ è¯Ŀ é¢ĺ åĮº " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model ?. sendMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }