TalkLobby.java 124 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407
  1. package kr.co.icontrols.wallpadcall.screen;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.graphics.Color;
  5. import android.os.Handler;
  6. import android.os.Looper;
  7. import android.os.Message;
  8. import android.util.Log;
  9. import android.view.Gravity;
  10. import android.view.KeyEvent;
  11. import android.view.LayoutInflater;
  12. import android.view.MotionEvent;
  13. import android.view.View;
  14. import android.widget.LinearLayout;
  15. import android.widget.RelativeLayout;
  16. import android.widget.RelativeLayout.LayoutParams;
  17. import android.widget.SeekBar;
  18. import com.artncore.wallpadimap.RetProci;
  19. import com.util.LogUtil;
  20. import kr.co.icontrols.callengine.engine.AutoSaveVisitorPicture.startAutoSaveVisitorPicture;
  21. import kr.co.icontrols.callengine.engine.CallController.CallEventListener;
  22. import kr.co.icontrols.callengine.engine.CallManager.CALLEVENTTYPE;
  23. import kr.co.icontrols.callengine.engine.CallManager.CALLOWNER;
  24. import kr.co.icontrols.callengine.engine.CallManager.CALLPATH;
  25. import kr.co.icontrols.callengine.engine.CallManager.CALLSTATUS;
  26. import kr.co.icontrols.callengine.engine.CallManager.CALLTYPE;
  27. import kr.co.icontrols.callengine.engine.MissedCallVisitorPicture.startMissedCallVisitorPicture;
  28. import kr.co.icontrols.callengine.remotecall.RemoteCallManager;
  29. import kr.co.icontrols.wallpadcall.MainActivity;
  30. import kr.co.icontrols.wallpadcall.MainActivity.MAINEVENT;
  31. import kr.co.icontrols.wallpadcall.MainActivity.MainEventListener;
  32. import kr.co.icontrols.wallpadcall.R;
  33. import kr.co.icontrols.wallpadcall.declare.Common;
  34. import kr.co.icontrols.wallpadcall.declare.DataClasses.AutoPictureInfo;
  35. import kr.co.icontrols.wallpadcall.declare.DataClasses.MultiCallInfo;
  36. import kr.co.icontrols.wallpadcall.declare.DataClasses.RemoteIDInfo;
  37. import kr.co.icontrols.wallpadcall.declare.DataClasses.SmartRFCamLEDMode;
  38. import kr.co.icontrols.wallpadcall.declare.DataClasses.SmartRFCamStatusMode;
  39. import kr.co.icontrols.wallpadcall.declare.Declare;
  40. import kr.co.icontrols.wallpadcall.declare.Declare.DEVICENAME;
  41. import kr.co.icontrols.wallpadcall.declare.Global;
  42. import kr.co.icontrols.wallpadcall.declare.Global.BOARD_TYPE;
  43. import kr.co.icontrols.wallpadcall.declare.Global.CALLACTION;
  44. import kr.co.icontrols.wallpadcall.declare.Global.CALLDIRECTION;
  45. import kr.co.icontrols.wallpadcall.declare.Global.CALLRESULT;
  46. import kr.co.icontrols.wallpadcall.declare.Global.ConfigValues;
  47. import kr.co.icontrols.wallpadcall.declare.ID;
  48. import kr.co.icontrols.wallpadcall.imap.Request_check_sip_activation;
  49. import kr.co.icontrols.wallpadcall.imap.Request_lobby_open;
  50. import kr.co.icontrols.wallpadcall.imap.Request_start_talking;
  51. import kr.co.icontrols.wallpadsupport.WpadImageView;
  52. import kr.co.icontrols.wallpadsupport.WpadImageView.TOUCH_KIND;
  53. import kr.co.icontrols.wallpadsupport.WpadScale;
  54. import kr.co.icontrols.wallpadsupport.WpadScreen;
  55. import kr.co.icontrols.wallpadsupport.WpadSound.SND;
  56. import kr.co.icontrols.wallpadsupport.WpadTextView;
  57. import static kr.co.icontrols.callengine.remotecall.RemoteCallMSG.REMOTECALL_CMD.CMD_MULTICALL;
  58. public class TalkLobby extends WpadScreen implements CallEventListener, MainEventListener {
  59. private final String TAG = "TalkLobby";
  60. boolean bLOG = true;
  61. private void LOG(String log) {
  62. if (bLOG) Log.v(TAG, log);
  63. }
  64. boolean bLOG_DEBUG = false;
  65. private void LOG_DEBUG(String log) {
  66. if (bLOG_DEBUG) Log.d(TAG, log);
  67. }
  68. boolean bLOG_INFO = true;
  69. private void LOG_INFO(String log) {
  70. if (bLOG_INFO) Log.i(TAG, log);
  71. }
  72. boolean bLOG_WARN = true;
  73. private void LOG_WARN(String log) {
  74. if (bLOG_WARN) Log.i(TAG, log);
  75. }
  76. WpadImageView SCREEN_BG;
  77. WpadImageView IMG_LOBBY_BACKGROUND;
  78. WpadImageView IMG_VIDEO_MODULE;
  79. WpadImageView IMG_VOLUME;
  80. WpadImageView BTN_TALK;
  81. WpadImageView BTN_END;
  82. WpadImageView BTN_SAVE_PICTURE;
  83. WpadImageView BTN_DOOROPEN;
  84. WpadImageView BTN_RELIEF_FILTER_01, BTN_RELIEF_FILTER_02; //, BTN_RELIEF_FILTER_03, BTN_RELIEF_FILTER_04;
  85. SeekBar SEEKBAR_VOLUME;
  86. WpadTextView TXT_VOLUME_LEVEL;
  87. WpadTextView TXT_UPDATE_INFO;
  88. WpadImageView IMG_UPDATE_INFO;
  89. WpadImageView IMG_UPDATE_INFO_ICON;
  90. WpadImageView BTN_UPDATE_INFO;
  91. int nCurrentVolume = 0;
  92. Context mContext;
  93. public TalkLobby(Context context, RelativeLayout layout) {
  94. super(context, layout);
  95. try {
  96. mContext = context;
  97. Initialize();
  98. SCREEN_BG = new WpadImageView(context, TOUCH_KIND.NONE, 1280, 690, R.drawable.bg_body, R.drawable.bg_body, ID.SCREEN.TALKLOBBY.ELEMENT.IMAGE.BG);
  99. ViewRegistration(layout, SCREEN_BG, 0, 0);
  100. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
  101. IMG_LOBBY_BACKGROUND = new WpadImageView(context, TOUCH_KIND.NONE, 729, 544, R.drawable.bg_lobby, 0, ID.SCREEN.TALKLOBBY.ELEMENT.IMAGE.BACKGROUND);
  102. ViewRegistration(layout, IMG_LOBBY_BACKGROUND, Common.ImgPosition.GetX(101), Common.ImgPosition.GetY(110));
  103. IMG_VIDEO_MODULE = new WpadImageView(context, TOUCH_KIND.NONE, 727, 540, R.drawable.image_lobby, 0, ID.SCREEN.TALKLOBBY.ELEMENT.IMAGE.VIDEO_MODULE);
  104. ViewRegistration(layout, IMG_VIDEO_MODULE, Common.ImgPosition.GetX(103), Common.ImgPosition.GetY(112));
  105. }
  106. else {
  107. IMG_LOBBY_BACKGROUND = new WpadImageView(context, TOUCH_KIND.NONE, 722, 544, R.drawable.bg_lobby, 0, ID.SCREEN.TALKLOBBY.ELEMENT.IMAGE.BACKGROUND);
  108. ViewRegistration(layout, IMG_LOBBY_BACKGROUND, Common.ImgPosition.GetX(93), Common.ImgPosition.GetY(110));
  109. IMG_VIDEO_MODULE = new WpadImageView(context, TOUCH_KIND.NONE, 720, 540, R.drawable.image_lobby, 0, ID.SCREEN.TALKLOBBY.ELEMENT.IMAGE.VIDEO_MODULE);
  110. ViewRegistration(layout, IMG_VIDEO_MODULE, Common.ImgPosition.GetX(95), Common.ImgPosition.GetY(112));
  111. }
  112. IMG_VOLUME = new WpadImageView(context, TOUCH_KIND.NONE, 40, 40, R.drawable.bar_icon_sound, 0, ID.SCREEN.TALKLOBBY.ELEMENT.IMAGE.VOLUME);
  113. ViewRegistration(layout, IMG_VOLUME, Common.ImgPosition.GetX(454), Common.ImgPosition.GetY(707));
  114. TXT_VOLUME_LEVEL = new WpadTextView(context, false, 40, 40, Gravity.CENTER, Color.WHITE, Common.fontsize._30, false, ID.SCREEN.TALKLOBBY.ELEMENT.TEXT.VOLUME_LEVEL);
  115. ViewRegistration(layout, TXT_VOLUME_LEVEL, Common.ImgPosition.GetX(785), Common.ImgPosition.GetY(705));
  116. if (WpadScale.getWidthPixels() == WpadScale.DEFAULT_WIDTH_PIXELS) {
  117. LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  118. LinearLayout volumeLayout = (LinearLayout) inflater.inflate(R.layout.volume_seekbar_1280, null);
  119. LayoutParams volumeParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  120. int volMarginLeft = WpadScale.getWidth(Common.ImgPosition.GetX(507));
  121. int volMarginTop = WpadScale.getHeight(Common.ImgPosition.GetY(707));
  122. volumeParams.setMargins(volMarginLeft, volMarginTop, 0, 0);
  123. volumeLayout.setLayoutParams(volumeParams);
  124. SEEKBAR_VOLUME = (SeekBar) volumeLayout.findViewById(R.id.volumeSeekBar);
  125. SEEKBAR_VOLUME.setMax(100);
  126. SEEKBAR_VOLUME.setOnSeekBarChangeListener(mOnVolumeChangeListener);
  127. layout.addView(volumeLayout);
  128. }
  129. else {
  130. LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  131. LinearLayout volumeLayout = (LinearLayout) inflater.inflate(R.layout.volume_seekbar, null);
  132. LayoutParams volumeParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  133. int volMarginLeft = WpadScale.getWidth(Common.ImgPosition.GetX(502));
  134. int volMarginTop = WpadScale.getHeight(Common.ImgPosition.GetY(703));
  135. volumeParams.setMargins(volMarginLeft, volMarginTop, 0, 0);
  136. volumeLayout.setLayoutParams(volumeParams);
  137. SEEKBAR_VOLUME = (SeekBar) volumeLayout.findViewById(R.id.volumeSeekBar);
  138. SEEKBAR_VOLUME.setMax(100);
  139. SEEKBAR_VOLUME.setOnSeekBarChangeListener(mOnVolumeChangeListener);
  140. layout.addView(volumeLayout);
  141. }
  142. // 안심통화
  143. if (ConfigValues.bReliefCall) {
  144. BTN_TALK = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 210, R.drawable.btn_call_normal, R.drawable.btn_call_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.TALK);
  145. ViewRegistration(layout, BTN_TALK, Common.ImgPosition.GetX(815), Common.ImgPosition.GetY(110));
  146. BTN_TALK.setButtonEventOffEnable(R.drawable.btn_call_disabled);
  147. BTN_END = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 210, R.drawable.btn_endl_normal, R.drawable.btn_endl_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.END);
  148. ViewRegistration(layout, BTN_END, Common.ImgPosition.GetX(815), Common.ImgPosition.GetY(320));
  149. BTN_END.setButtonEventOffEnable(R.drawable.btn_endl_disabled);
  150. BTN_SAVE_PICTURE = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 210, R.drawable.btn_photo_normal, R.drawable.btn_photo_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.SAVE_PICTURE);
  151. ViewRegistration(layout, BTN_SAVE_PICTURE, Common.ImgPosition.GetX(1001), Common.ImgPosition.GetY(110));
  152. BTN_DOOROPEN = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 210, R.drawable.btn_open_normal, R.drawable.btn_open_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.DOOROPEN);
  153. ViewRegistration(layout, BTN_DOOROPEN, Common.ImgPosition.GetX(1001), Common.ImgPosition.GetY(320));
  154. BTN_DOOROPEN.setButtonEventOffEnable(R.drawable.btn_open_disabled);
  155. /**
  156. * JEFF, 2020.01.02
  157. * 안심통화는 1, 2 단계만 지원한다.
  158. */
  159. int[] filterImg_01 = {R.drawable.btn_big_filter_1_normal, R.drawable.btn_big_filter_1_pressed};
  160. int[] filterSelectedImg_01 = {R.drawable.btn_big_filter_1_selected, R.drawable.btn_big_filter_1_selected};
  161. int[] filterImg_02 = {R.drawable.btn_big_filter_2_normal, R.drawable.btn_big_filter_2_pressed};
  162. int[] filterSelectedImg_02 = {R.drawable.btn_big_filter_2_selected, R.drawable.btn_big_filter_2_selected};
  163. // int[] filterImg_03 = {R.drawable.btn_filter_3_normal, R.drawable.btn_filter_3_pressed};
  164. // int[] filterSelectedImg_03 = {R.drawable.btn_filter_3_selected, R.drawable.btn_filter_3_selected};
  165. // int[] filterImg_04 = {R.drawable.btn_filter_4_normal, R.drawable.btn_filter_4_pressed};
  166. // int[] filterSelectedImg_04 = {R.drawable.btn_filter_4_selected, R.drawable.btn_filter_4_selected};
  167. BTN_RELIEF_FILTER_01 = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 124, filterImg_01, filterSelectedImg_01, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_01);
  168. ViewRegistration(layout, BTN_RELIEF_FILTER_01, Common.ImgPosition.GetX(815), Common.ImgPosition.GetY(530));
  169. BTN_RELIEF_FILTER_02 = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 124, filterImg_02, filterSelectedImg_02, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_02);
  170. ViewRegistration(layout, BTN_RELIEF_FILTER_02, Common.ImgPosition.GetX(1001), Common.ImgPosition.GetY(530));
  171. // BTN_RELIEF_FILTER_03 = new WpadImageView(context, TOUCH_KIND.BUTTON, 93, 124, filterImg_03, filterSelectedImg_03, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_03);
  172. // ViewRegistration(layout, BTN_RELIEF_FILTER_03, Common.ImgPosition.GetX(1001), Common.ImgPosition.GetY(530));
  173. //
  174. // BTN_RELIEF_FILTER_04 = new WpadImageView(context, TOUCH_KIND.BUTTON, 94, 124, filterImg_04, filterSelectedImg_04, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_04);
  175. // ViewRegistration(layout, BTN_RELIEF_FILTER_04, Common.ImgPosition.GetX(1094), Common.ImgPosition.GetY(530));
  176. }
  177. else {
  178. BTN_TALK = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 272, R.drawable.btn_lobby_call_normal, R.drawable.btn_lobby_call_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.TALK);
  179. ViewRegistration(layout, BTN_TALK, Common.ImgPosition.GetX(815), Common.ImgPosition.GetY(110));
  180. BTN_TALK.setButtonEventOffEnable(R.drawable.btn_lobby_call_disabled);
  181. BTN_END = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 272, R.drawable.btn_lobby_end_normal, R.drawable.btn_lobby_end_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.END);
  182. ViewRegistration(layout, BTN_END, Common.ImgPosition.GetX(815), Common.ImgPosition.GetY(382));
  183. BTN_END.setButtonEventOffEnable(R.drawable.btn_lobby_end_disabled);
  184. BTN_SAVE_PICTURE = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 272, R.drawable.btn_lobby_photo_normal, R.drawable.btn_lobby_photo_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.SAVE_PICTURE);
  185. ViewRegistration(layout, BTN_SAVE_PICTURE, Common.ImgPosition.GetX(1001), Common.ImgPosition.GetY(110));
  186. BTN_DOOROPEN = new WpadImageView(context, TOUCH_KIND.BUTTON, 186, 272, R.drawable.btn_lobby_open_normal, R.drawable.btn_lobby_open_pressed, ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.DOOROPEN);
  187. ViewRegistration(layout, BTN_DOOROPEN, Common.ImgPosition.GetX(1001), Common.ImgPosition.GetY(382));
  188. BTN_DOOROPEN.setButtonEventOffEnable(R.drawable.btn_lobby_open_disabled);
  189. BTN_RELIEF_FILTER_01 = null;
  190. BTN_RELIEF_FILTER_02 = null;
  191. // BTN_RELIEF_FILTER_03 = null;
  192. // BTN_RELIEF_FILTER_04 = null;
  193. }
  194. sendReliefFilterSelectBR(nSelectedFilter);
  195. displayScreenValues();
  196. sendHandlerMsg(HANDLERMSG.PROC_ADDCALL, 0, 0, null);
  197. MainActivity.mCallController.mVideoJNI.setComposite(true);
  198. MainActivity.mCallController.mVideoJNI.decoderStartOperation();
  199. MainActivity.mCallController.mCurrentScreenId_update = ID.SCREEN.SCREEN_TALKLOBBY;
  200. } catch (RuntimeException re) {
  201. LogUtil.errorLogInfo("", TAG, re);
  202. } catch (Exception e) {
  203. Log.e(TAG, "[Exception] ScreenTalkLobby(Context context, RelativeLayout layout)");
  204. //e.printStackTrace();
  205. LogUtil.errorLogInfo("", TAG, e);
  206. }
  207. }
  208. protected void Initialize() {
  209. try {
  210. LOG_INFO("[Initialize]");
  211. if (MainActivity.mCallController.mCallInfo.getLOBBY() != CALLSTATUS.IDLE) ((MainActivity) mContext).setMenuBTNEnable(false);
  212. else ((MainActivity) mContext).setMenuBTNEnable(true);
  213. MainActivity.mCallController.setCallEventListener(this);
  214. ((MainActivity) mContext).setMainEventListener(this);
  215. int mMarginLeft = ((MainActivity) mContext).TopBackBtn.getVisibility() == View.VISIBLE ? 893 : 1019;
  216. ((MainActivity) mContext).setManualBtnVisible(((MainActivity) mContext).getManualUse(), mMarginLeft);
  217. ((MainActivity) mContext).setTopHideBtnVisible(true);
  218. super.setFinishTimerCreate(Common.FINISH_TIME_START_SCREEN);
  219. getVolume();
  220. if (MainActivity.bFFMPEGEnable) ((MainActivity)mContext).showRemoteVideo(false, false);
  221. MainActivity.mCallController.mVideoJNI.setDecoderInfo_V40(76, 85, 576, 405); // 영상 좌표 재설정 (세대 통화 멀티콜 이후 상황 대비)
  222. bEnableVisitorPic = true;
  223. nSelectedFilter = 0;
  224. // bEnableVisitorPic = false; // 부재중 방문객 사진 저장은 임시로 삭제한다.
  225. } catch (RuntimeException re) {
  226. LogUtil.errorLogInfo("", TAG, re);
  227. } catch (Exception e) {
  228. Log.e(TAG, "[Exception] Initialize()");
  229. //e.printStackTrace();
  230. LogUtil.errorLogInfo("", TAG, e);
  231. }
  232. }
  233. private void initCallVariables() {
  234. try {
  235. nSelectedFilter = 0;
  236. RemoteIDInfo.InitVariables();
  237. MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
  238. } catch (RuntimeException re) {
  239. LogUtil.errorLogInfo("", TAG, re);
  240. } catch (Exception e) {
  241. Log.e(TAG, "[Exception] initCallVariables()");
  242. //e.printStackTrace();
  243. LogUtil.errorLogInfo("", TAG, e);
  244. }
  245. }
  246. @Override
  247. protected void onClose() {
  248. super.onClose();
  249. try {
  250. LOG_INFO("[onClose]");
  251. MainActivity.m_iReliefCallNum = 0;
  252. ctrlAlphaBlending(false);
  253. //MainActivity.mCallController.mVideoJNI.decoderStopOperation();
  254. if (MainActivity.mIOInterface != null) MainActivity.mIOInterface.ctrlWallPadLED_Call(false);
  255. nSelectedFilter = 0;
  256. sendReliefFilterSelectBR(nSelectedFilter);
  257. if (TalkLobbyHandler != null) {
  258. TalkLobbyHandler.removeMessages(HANDLERMSG.ENABLE_SAVE_VISITORPICTURE);
  259. TalkLobbyHandler.removeMessages(HANDLERMSG.SAVE_VISITORPICTURE);
  260. TalkLobbyHandler.removeMessages(HANDLERMSG.TAKE_VISITORPICTURE);
  261. }
  262. if (mPathCheckHandler != null) {
  263. mPathCheckHandler.removeMessages(0);
  264. mPathCheckHandler.removeMessages(1);
  265. }
  266. bEnableVisitorPic = false;
  267. bReliefCallInit = false;
  268. ((MainActivity) mContext).m_bMissCall_Lobby = false;
  269. //MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.NONE, true);
  270. initCallVariables();
  271. if (ConfigValues.bReliefCall) selectReliefCallFilter(nSelectedFilter);
  272. MainActivity.mCallController.releaseCallEventListener();
  273. ((MainActivity) mContext).releaseMainEventListener();
  274. //((MainActivity)mContext).startVideoEncoding(false, false, false);
  275. //MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
  276. Global.add1stCallHistoryInfoFinal();
  277. } catch (RuntimeException re) {
  278. LogUtil.errorLogInfo("", TAG, re);
  279. } catch (Exception e) {
  280. Log.e(TAG, "[Exception] onClose()");
  281. //e.printStackTrace();
  282. LogUtil.errorLogInfo("", TAG, e);
  283. }
  284. }
  285. @Override
  286. protected void onBrReceive(Intent intent) {
  287. super.onBrReceive(intent);
  288. try {
  289. LOG_INFO("[onBrReceive] intent : " + intent);
  290. } catch (RuntimeException re) {
  291. LogUtil.errorLogInfo("", TAG, re);
  292. } catch (Exception e) {
  293. Log.e(TAG, "[Exception] onBrReceive()");
  294. //e.printStackTrace();
  295. LogUtil.errorLogInfo("", TAG, e);
  296. }
  297. }
  298. @Override
  299. protected void onTouchEvent(View v, MotionEvent event) {
  300. try {
  301. int nEvent = event.getAction();
  302. int nID = v.getId();
  303. if (nEvent == MotionEvent.ACTION_UP) {
  304. LOG("[onTouchEvent] nID [" + nID + "], nEvent [" + nEvent + "]");
  305. if (ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.TALK <= nID && nID <= ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_02) {
  306. // 통화중에 버튼 터치음을 발생시키면, 통화 상대방에게 터치음이 전달되므로 통화중에는 터치음을 출력하지 않는다.(JEFF, 2019.12.24)
  307. if (MainActivity.mCallController.mCallInfo.getLOBBY() != CALLSTATUS.TALKING) MainActivity.mSound.Play(SND.effect.TOUCH_LATCHED);
  308. if (nID == ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.TALK) {enableEndBTN(false);
  309. enableOpenDoorBTN(false);
  310. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_END_BTN, 0, 0, null, 2000);
  311. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_OPENDOOR_BTN, 0, 0, null, 1000);
  312. //enableOpenDoorBTN(false);
  313. doTalk(CALLOWNER.WALLPAD);
  314. // Handler mHandler = new Handler();
  315. // mHandler.postDelayed(new Runnable() {
  316. // public void run() { // 시간 지난 후 실행할 코딩
  317. // enableOpenDoorBTN(true);
  318. // }
  319. // }, 1000);
  320. } else if (nID == ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.END) {
  321. bEnableVisitorPic = false;
  322. doEnd();
  323. } else if (nID == ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.SAVE_PICTURE) {
  324. String strVisitorPicResult = MainActivity.mCallController.saveVisitorPicture(CALLTYPE.LOBBY, MainActivity.mCallController.mCallInfo.getLOBBY(), RemoteIDInfo.strSIPID, true, false, false);
  325. LOG_INFO("[onTouchEvent] strVisitorPicResult [" + strVisitorPicResult + "]");
  326. enableSavePicBTN(false);
  327. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_SAVE_VISITORPICTURE, 0, 0, null, 3000);
  328. } else if (nID == ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.DOOROPEN) {
  329. if (!bSentiMAP) {
  330. sendHandlerMsgDelayed(HANDLERMSG.HIDE_LOBBYVIDEO, 0, 0, null,3000); // 문열림으로 통화 종료시 로비 영상 노이즈가 생기므로 영상을 GUI 아래로 내림
  331. doDoorOpen();
  332. //doEnd();
  333. }
  334. } else if (ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_01 <= nID && nID <= ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_04) {
  335. LOG_INFO("[onTouchEvent] [RELIEF_FILTER] BUTTON");
  336. enableEndBTN(false);
  337. enableOpenDoorBTN(false);
  338. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_END_BTN, 0, 0, null, 2000);
  339. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_OPENDOOR_BTN, 0, 0, null, 1000);
  340. selectReliefCallFilter(nID);
  341. doTalk(CALLOWNER.WALLPAD); // 통화시작 전에 필터버튼 클릭하면 변조되어 통화 시작
  342. }
  343. }
  344. else {
  345. Log.w(TAG, "[onTouchEvent] The touch event is not supported!! nID -> nID");
  346. }
  347. }
  348. else {
  349. Log.w(TAG, "[onTouchEvent] The touch event is not supported!! nEvent -> nEvent");
  350. }
  351. } catch (RuntimeException re) {
  352. LogUtil.errorLogInfo("", TAG, re);
  353. } catch (Exception e) {
  354. Log.e(TAG, "[Exception] onTouchEvent(View v, MotionEvent event)");
  355. //e.printStackTrace();
  356. LogUtil.errorLogInfo("", TAG, e);
  357. }
  358. }
  359. @Override
  360. public void onMainTouchEvent(MAINEVENT eEvent) {
  361. try {
  362. LOG_INFO("[onMainTouchEvent] eEvent [" + eEvent + "]");
  363. if (eEvent == MAINEVENT.BTN_HOME) {
  364. if (MainActivity.mCallController.mCallInfo.getLOBBY() != CALLSTATUS.TALKING) Sound().Play(SND.effect.TOUCH_LATCHED);
  365. finishWallpadCallApp();
  366. } else if (eEvent == MAINEVENT.BTN_HOME_MOBILE) {
  367. finishWallpadCallApp();
  368. }
  369. } catch (RuntimeException re) {
  370. LogUtil.errorLogInfo("", TAG, re);
  371. } catch (Exception e) {
  372. Log.e(TAG, "[Exception] onMainTouchEvent(MAINEVENT eEvent)");
  373. //e.printStackTrace();
  374. LogUtil.errorLogInfo("", TAG, e);
  375. }
  376. }
  377. @Override
  378. protected void onKeyDown(int keyCode, KeyEvent event) {
  379. LOG_INFO("[onKeyDown] keyCode [" + keyCode + "], event.getAction() [" + event.getAction() + "]");
  380. if (keyCode == Declare.BTN.TALK || keyCode == Declare.BTN.TALK_V40) {
  381. doTalkByBTN(CALLOWNER.WALLPAD);
  382. } else if (keyCode == Declare.BTN.DOOR_OPEN || keyCode == Declare.BTN.DOOR_OPEN_V40) {
  383. if (!bSentiMAP) {
  384. sendHandlerMsgDelayed(HANDLERMSG.HIDE_LOBBYVIDEO, 0, 0, null, 3000); // 문열림으로 통화 종료시 로비 영상 노이즈가 생기므로 영상을 GUI 아래로 내림
  385. doDoorOpen();
  386. //doEnd();
  387. }
  388. } else if (keyCode == Declare.BTN.PLAY_DECODED_VIDEO || keyCode == Declare.BTN.PLAY_DECODED_VIDEO_V40) {
  389. //ctrlAlphaBlending(true);
  390. if(((MainActivity) mContext).strCallPopupInfo.equals("yes"))
  391. {
  392. //Toast.makeText(mContext, "상대 로비폰을 업데이트 해주세요.", Toast.LENGTH_LONG).show();
  393. ctrlAlphaBlending(false);
  394. ((MainActivity) mContext).StartPopup(ID.POPUP.POPUP_UPDATEINFO);
  395. ((MainActivity) mContext).strCallPopupInfo = "NONE";
  396. Handler mHandler = new Handler();
  397. mHandler.postDelayed(new Runnable() {
  398. public void run() { // 시간 지난 후 실행할 코딩
  399. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_UPDATEINFO);
  400. ctrlAlphaBlending(true);
  401. }
  402. }, 3000);
  403. }
  404. else {
  405. ctrlAlphaBlending(true);
  406. }
  407. }
  408. super.onKeyDown(keyCode, event);
  409. }
  410. @Override
  411. public void onCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
  412. try {
  413. LOG_INFO("[onCallEvent] eCallOwner [" + eCallOwner + "], eCallStatus [" + eCallStatus + "], eCallType [" + eCallType + "], strRemoteIP [" + strRemoteIP + "], strRemoteSIPID [" + strRemoteSIPID + "], strMessage [" + strMessage + "]");
  414. if (eCallType == CALLTYPE.NONE) return;
  415. if (eCallType == CALLTYPE.LOBBY) {
  416. MainActivity.mCallController.setRemoteInfo(strRemoteSIPID, strRemoteIP);
  417. sendHandlerMsg(HANDLERMSG.SET_BTN_STATUS, 0, 0, null);
  418. if (eCallStatus == CALLSTATUS.CALLED) {
  419. MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.LOBBY, false);
  420. if (Global.getRecordingStatus()) {
  421. // 거동수상자 녹화 중 호출 => 녹화 종료 및 팝업 닫힘 => 호출 지속
  422. LOG_WARN("[onCallEvent] STRANGER RECORDING IS RUNNING!!");
  423. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_VIDEORECORD);
  424. ((MainActivity) (this.getContext())).stopNSaveRecordingFile(true, false);
  425. }
  426. Global.playMelodyRepeat(eCallType);
  427. super.setFinishTimerDestroy();
  428. MainActivity.mCallController.set1stCallTimer(eCallType, MainActivity.mCallController.mCTT.CALLED);
  429. ((MainActivity) mContext).displayRemoteID(RemoteIDInfo.strName);
  430. Global.make1stCallHistoryInfo(strRemoteIP, strRemoteSIPID, CALLDIRECTION.IN, CALLACTION.MISS, CALLRESULT.IN_MISS);
  431. ((MainActivity) mContext).m_bMissCall = false;
  432. ((MainActivity) mContext).m_bMissCall_Lobby = false;
  433. MainActivity.mCallController.acceptMoIPCall(false);
  434. MainActivity.mCallController.mCallInfo.setCallOwner(CALLOWNER.WALLPAD);
  435. if (ConfigValues.bUnoccupiedMode) {
  436. sendHandlerMsgDelayed(HANDLERMSG.SAVE_VISITORPICTURE, 0, 0, null, 5000); // 5초
  437. sendHandlerMsgDelayed(HANDLERMSG.SAVE_VISITORPICTURE, 0, 0, null, 10000); // 10초
  438. sendHandlerMsgDelayed(HANDLERMSG.CALL_FORWARD, 0, 0, null, 15000); // 15초
  439. } else {
  440. // 부재중인 경우를 대비하여 임시저장한다.
  441. sendHandlerMsgDelayed(HANDLERMSG.TAKE_VISITORPICTURE, 0, 0, strRemoteSIPID, 5000); // 5초
  442. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  443. }
  444. }
  445. else if (eCallStatus == CALLSTATUS.TALKING) {
  446. Global.stopMelodyRepeat();
  447. if (eCallOwner == CALLOWNER.MOBILE) {
  448. // 모바일에서 로비 호출 수신!! (방문객 원격통화)
  449. RemoteCallManager.bMobileTalk = true;
  450. ((MainActivity) mContext).showRemoteCallNoticeText(true); // 방문객원격통화 팝업 삭제 -> 상단 문구로 대체
  451. // ((MainActivity) mContext).StartPopup(ID.POPUP.POPUP_NOTICE_REMOTECALL);
  452. MainActivity.mCallController.acceptMoIPCall(true);
  453. send_start_talking_request_mobile(RemoteIDInfo.strIP);
  454. MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
  455. }
  456. else {
  457. if (ConfigValues.bRemoteCall) RemoteCallManager.bMobileTalk = false;
  458. if (eCallOwner != CALLOWNER.WALLPAD) {
  459. ((MainActivity) mContext).StartPopup(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
  460. MainActivity.mCallController.setTalkPath(CALLPATH.SUBPHONE_MOIP);
  461. if (eCallOwner == CALLOWNER.SUB_WALLPAD) MainActivity.mCallController.setSubWallPadAudioPath();
  462. }
  463. else {
  464. ((MainActivity) mContext).sendHandlerMsg(MainActivity.HANDLERMSG.SET_TEMPSYSTEM_VOLUME, 0, 0);// 통화 중 임의 볼륨값 설정 seulki
  465. MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.NONE, false);
  466. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
  467. MainActivity.mCallController.setTalkPath(CALLPATH.MOIP_IHND101_LOBBY);
  468. }
  469. else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
  470. MainActivity.mCallController.setTalkPath(CALLPATH.MOIP_IHN1010_LOBBY);
  471. }
  472. else {
  473. MainActivity.mCallController.setTalkPath(CALLPATH.MOIP);
  474. }
  475. }
  476. mPathCheckHandler.sendEmptyMessage(0);
  477. }
  478. MainActivity.mCallController.set1stCallTimer(eCallType, MainActivity.mCallController.mCTT.RESIDENCEnLOBBY);
  479. Global.change1stCallLogAction(CALLACTION.TALK);
  480. ((MainActivity) mContext).m_bMissCall_Lobby = true;
  481. }
  482. else if (eCallStatus == CALLSTATUS.END) {
  483. bEnableVisitorPic = false;
  484. bReliefCallInit = false;
  485. Global.stopMelodyRepeat();
  486. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  487. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_ALL);
  488. ((MainActivity) mContext).finishManual(ID.MANUAL.MANUAL_ALL);
  489. ((MainActivity) mContext).displayRemoteID(null);
  490. if (eCallOwner == CALLOWNER.MOBILE) {
  491. MainActivity.mCallController.quitMoIPCall();
  492. // ((MainActivity) mContext).showRemoteCallNoticeText(false);
  493. }
  494. MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
  495. MainActivity.mCallController.stop1stCallTimer();
  496. MainActivity.mCallController.stop2ndCallTimer();
  497. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  498. nSelectedFilter = 0;
  499. sendReliefFilterSelectBR(nSelectedFilter);
  500. MainActivity.mCallController.MultiCallScenarioManager();
  501. ctrlAlphaBlending(false);
  502. if(!((MainActivity) mContext).m_bMissCall_Lobby)
  503. ((MainActivity) mContext).m_bMissCall = true;
  504. ((MainActivity) mContext).m_bMissCall_Lobby = false;
  505. if(eCallOwner == CALLOWNER.WALLPAD)
  506. MainActivity.mSubPhoneController.notifyEndCall(eCallOwner, CALLTYPE.LOBBY);
  507. } else if (eCallStatus == CALLSTATUS.REJECT) {
  508. bEnableVisitorPic = false;
  509. bReliefCallInit = false;
  510. Global.stopMelodyRepeat();
  511. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  512. ((MainActivity) mContext).displayRemoteID(null);
  513. MainActivity.mSound.PlayMent(SND.setting.RETRY_ACTION);
  514. MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
  515. MainActivity.mCallController.stop1stCallTimer();
  516. MainActivity.mCallController.stop2ndCallTimer();
  517. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
  518. Global.change1stCallLogAction(CALLACTION.REJECT);
  519. Global.add1stCallHistoryInfoFinal();
  520. nSelectedFilter = 0;
  521. sendReliefFilterSelectBR(nSelectedFilter);
  522. MainActivity.mCallController.MultiCallScenarioManager();
  523. //ctrlAlphaBlending(false);
  524. } else if (eCallStatus == CALLSTATUS.BUSY) {
  525. bEnableVisitorPic = false;
  526. bReliefCallInit = false;
  527. Global.stopMelodyRepeat();
  528. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  529. ((MainActivity) mContext).displayRemoteID(null);
  530. MainActivity.mSound.PlayMent(SND.call.BUSY_TRY_LATER);
  531. MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
  532. MainActivity.mCallController.stop1stCallTimer();
  533. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
  534. Global.change1stCallLogAction(CALLACTION.BUSY);
  535. nSelectedFilter = 0;
  536. sendReliefFilterSelectBR(nSelectedFilter);
  537. MainActivity.mCallController.MultiCallScenarioManager();
  538. } else if (eCallStatus == CALLSTATUS.CANCEL) {
  539. bEnableVisitorPic = false;
  540. bReliefCallInit = false;
  541. Global.stopMelodyRepeat();
  542. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  543. ((MainActivity) mContext).displayRemoteID(null);
  544. MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
  545. MainActivity.mCallController.stop1stCallTimer();
  546. MainActivity.mCallController.stop2ndCallTimer();
  547. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
  548. Global.change1stCallLogAction(CALLACTION.CANCEL);
  549. nSelectedFilter = 0;
  550. sendReliefFilterSelectBR(nSelectedFilter);
  551. MainActivity.mCallController.MultiCallScenarioManager();
  552. //ctrlAlphaBlending(false);
  553. } else if (eCallStatus == CALLSTATUS.TIMEOUT_1STCALL) {
  554. bEnableVisitorPic = false;
  555. bReliefCallInit = false;
  556. Global.stopMelodyRepeat();
  557. ((MainActivity) mContext).m_bMissCall = true;
  558. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  559. if (eCallOwner != CALLOWNER.WALLPAD) {
  560. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
  561. }
  562. MainActivity.mCallController.quitMoIPCall();
  563. MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
  564. MainActivity.mCallController.stop1stCallTimer();
  565. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_ALL);
  566. ((MainActivity) mContext).finishManual(ID.MANUAL.MANUAL_ALL);
  567. initCallVariables();
  568. ((MainActivity) mContext).displayRemoteID(null);
  569. Global.change1stCallLogAction(CALLACTION.CANCEL);
  570. Global.add1stCallHistoryInfoFinal();
  571. nSelectedFilter = 0;
  572. sendReliefFilterSelectBR(nSelectedFilter);
  573. MainActivity.mCallController.MultiCallScenarioManager();
  574. } else if (eCallStatus == CALLSTATUS.DOOR_OPEN) {
  575. if(!((MainActivity) mContext).m_bMissCall_Lobby)
  576. ((MainActivity) mContext).m_bMissCall = true;
  577. ((MainActivity) mContext).m_bMissCall_Lobby = false;
  578. sendHandlerMsg(HANDLERMSG.DOOR_OPEN, 0, 0, null); // 방문객 원격통화 모바일에서 문열림
  579. } else {
  580. Log.w(TAG, "[onCallEvent] Incorrect eCallStatus!!! eCallStatus = " + eCallStatus);
  581. }
  582. } else {
  583. onMultiCallEvent(eCallOwner, eCallStatus, eCallType, strRemoteIP, strRemoteSIPID, strMessage);
  584. }
  585. } catch (RuntimeException re) {
  586. LogUtil.errorLogInfo("", TAG, re);
  587. } catch (Exception e) {
  588. Log.e(TAG, "[Exception] onCallEvent(CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage)");
  589. //e.printStackTrace();
  590. LogUtil.errorLogInfo("", TAG, e);
  591. }
  592. }
  593. public void onMultiCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
  594. try {
  595. LOG_INFO("[onMultiCallEvent] eCallOwner [" + eCallOwner + "], eCallStatus [" + eCallStatus + "], eCallType [" + eCallType + "], strRemoteIP [" + strRemoteIP + "], strRemoteSIPID [" + strRemoteSIPID + "], strMessage [" + strMessage + "]");
  596. MainActivity.mCallController.mCallInfo.printCallStatus();
  597. MainActivity.mCallController.mCallInfo.printMultiCallStatus();
  598. if (eCallStatus == CALLSTATUS.CALLED) {
  599. if (eCallType == CALLTYPE.FRONT) {
  600. playFrontCamBell(true);
  601. if (MainActivity.mCallController.mCallInfo.getMultiCallStatus() == CALLSTATUS.IDLE) {
  602. // 멀티콜 없음
  603. MultiCallInfo MCInfo = new MultiCallInfo();
  604. MCInfo.setMulticallInfo(CALLTYPE.LOBBY, eCallType, eCallStatus, CALLOWNER.NONE, strRemoteSIPID, "", "", "세대현관", strRemoteIP);
  605. MainActivity.mCallController.mCallInfo.setMultiCallInfo(MCInfo);
  606. Global.make2ndCallHistoryInfo(eCallType.toString(), "NONE", CALLDIRECTION.IN, CALLACTION.MISS, CALLRESULT.IN_MISS);
  607. CALLSTATUS eLobbyCallStatus = MainActivity.mCallController.mCallInfo.getLOBBY();
  608. /**
  609. * JEFF, 2020.01.02
  610. * 모든통화에서 멀티콜 발생시 알림 팝업만 띄우고 busy처리 하도록 시나리오 수정
  611. */
  612. if (eLobbyCallStatus == CALLSTATUS.CALLING || eLobbyCallStatus == CALLSTATUS.CALLED || eLobbyCallStatus == CALLSTATUS.TALKING) {
  613. if (eCallOwner == CALLOWNER.WALLPAD || eCallOwner == CALLOWNER.NONE) {
  614. ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL_NOTICE);
  615. }
  616. else {
  617. if (MainActivity.mPSTNController != null) MainActivity.mPSTNController.stopPSTNRingCntThread(); // PSTN 멀티콜 거절시 ring cnt 초기화
  618. MainActivity.mCallController.stop2ndCallTimer();
  619. MainActivity.mCallController.mCallInfo.setCallStatus(MainActivity.mCallController.mCallInfo.getMultiCallType(), CALLSTATUS.IDLE);
  620. doMultiCallReject();
  621. sendHandlerMsgDelayed(HANDLERMSG.REFRESH_BTNLED_STATUS, 0, 0, null, 1000);
  622. }
  623. }
  624. else {
  625. LOG_WARN("[onMultiCallEvent] Invalid eLobbyCallStatus [" + eLobbyCallStatus + "]");
  626. }
  627. // if (eLobbyCallStatus == CALLSTATUS.CALLING || eLobbyCallStatus == CALLSTATUS.CALLED) {
  628. // ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL_NOTICE);
  629. // } else if (eLobbyCallStatus == CALLSTATUS.TALKING) {
  630. // if (eCallOwner == CALLOWNER.MOBILE) {
  631. // // 방문객원격통화 멀티콜
  632. // MainActivity.mRemoteCallController.sendCmdToRemoteCall(CMD_MULTICALL, strRemoteSIPID, strRemoteIP, eCallType);
  633. // doMultiCallReject();
  634. // } else {
  635. // MainActivity.mCallController.set2ndCallTimer(eCallType, MainActivity.mCallController.mCTT.CALLED);
  636. // ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL);
  637. // }
  638. // }
  639. // else {
  640. // LOG_WARN("[onMultiCallEvent] Invalid eLobbyCallStatus [" + eLobbyCallStatus + "]");
  641. // }
  642. } else {
  643. // 멀티콜 있음
  644. sendHandlerMsgDelayed(HANDLERMSG.OFF_FRONT, 0, 0, null, 2000);
  645. MainActivity.mCallController.mCallInfo.setCallStatus(eCallType, CALLSTATUS.IDLE);
  646. return;
  647. }
  648. } else if (eCallType == CALLTYPE.LOBBY || eCallType == CALLTYPE.GUARD || eCallType == CALLTYPE.RESIDENCE) {
  649. if (MainActivity.mCallController.mCallInfo.getMultiCallStatus() == CALLSTATUS.IDLE) {
  650. // 멀티콜 없음
  651. MultiCallInfo MCInfo = new MultiCallInfo();
  652. MCInfo.setMulticallInfo(CALLTYPE.LOBBY, eCallType, eCallStatus, CALLOWNER.NONE, strRemoteSIPID, Integer.toString(MainActivity.mCallController.getRemoteDong(strRemoteSIPID)),
  653. Integer.toString(MainActivity.mCallController.getRemoteID(strRemoteSIPID)), MainActivity.mCallController.getRemoteName(strRemoteSIPID, strRemoteIP), strRemoteIP);
  654. MainActivity.mCallController.mCallInfo.setMultiCallInfo(MCInfo);
  655. Global.make2ndCallHistoryInfo(strRemoteIP, strRemoteSIPID, CALLDIRECTION.IN, CALLACTION.MISS, CALLRESULT.IN_MISS);
  656. CALLSTATUS eLobbyCallStatus = MainActivity.mCallController.mCallInfo.getLOBBY();
  657. /**
  658. * JEFF, 2020.01.02
  659. * 모든통화에서 멀티콜 발생시 알림 팝업만 띄우고 busy처리 하도록 시나리오 수정
  660. */
  661. if (eLobbyCallStatus == CALLSTATUS.CALLING || eLobbyCallStatus == CALLSTATUS.CALLED || eLobbyCallStatus == CALLSTATUS.TALKING) {
  662. if (eCallOwner == CALLOWNER.WALLPAD || eCallOwner == CALLOWNER.NONE) {
  663. ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL_NOTICE);
  664. }
  665. else {
  666. if (MainActivity.mPSTNController != null) MainActivity.mPSTNController.stopPSTNRingCntThread(); // PSTN 멀티콜 거절시 ring cnt 초기화
  667. MainActivity.mCallController.stop2ndCallTimer();
  668. MainActivity.mCallController.mCallInfo.setCallStatus(MainActivity.mCallController.mCallInfo.getMultiCallType(), CALLSTATUS.IDLE);
  669. doMultiCallReject();
  670. sendHandlerMsgDelayed(HANDLERMSG.REFRESH_BTNLED_STATUS, 0, 0, null, 1000);
  671. }
  672. }
  673. else {
  674. LOG_WARN("[onMultiCallEvent] Invalid eLobbyCallStatus [" + eLobbyCallStatus + "]");
  675. }
  676. // if (eLobbyCallStatus == CALLSTATUS.CALLING || eLobbyCallStatus == CALLSTATUS.CALLED) {
  677. // ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL_NOTICE);
  678. // } else if (eLobbyCallStatus == CALLSTATUS.TALKING) {
  679. // if (eCallOwner == CALLOWNER.MOBILE) {
  680. // // 방문객원격통화 멀티콜
  681. // MainActivity.mRemoteCallController.sendCmdToRemoteCall(CMD_MULTICALL, strRemoteSIPID, strRemoteIP, eCallType);
  682. // doMultiCallReject();
  683. // } else {
  684. // MainActivity.mCallController.set2ndCallTimer(eCallType, MainActivity.mCallController.mCTT.CALLED);
  685. // ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL);
  686. // }
  687. // } else {
  688. // LOG_WARN("[onMultiCallEvent] Invalid eLobbyCallStatus [" + eLobbyCallStatus + "]");
  689. // }
  690. } else {
  691. // 멀티콜 있음
  692. MainActivity.mCallController.rejectMoIPMultiCall();
  693. MainActivity.mCallController.mCallInfo.setCallStatus(eCallType, CALLSTATUS.IDLE);
  694. }
  695. } else if (eCallType == CALLTYPE.PSTN) {
  696. TalkPSTN.bPSTNCalled = true;
  697. if (MainActivity.mCallController.mCallInfo.getMultiCallStatus() == CALLSTATUS.IDLE) {
  698. // 멀티콜 없음
  699. if (eCallOwner == CALLOWNER.MOBILE) {
  700. // 방문객원격통화 멀티콜
  701. MainActivity.mRemoteCallController.sendCmdToRemoteCall(CMD_MULTICALL, strRemoteSIPID, strRemoteIP, eCallType);
  702. doMultiCallReject();
  703. } else {
  704. MultiCallInfo MCInfo = new MultiCallInfo();
  705. MCInfo.setMulticallInfo(CALLTYPE.FRONT, eCallType, eCallStatus, CALLOWNER.NONE, strRemoteSIPID, "", "", "NONE", strRemoteIP);
  706. MainActivity.mCallController.mCallInfo.setMultiCallInfo(MCInfo);
  707. Global.make2ndCallHistoryInfo(eCallType.toString(), "NONE", CALLDIRECTION.IN, CALLACTION.MISS, CALLRESULT.IN_MISS);
  708. ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL);
  709. }
  710. } else {
  711. // 멀티콜 있음
  712. // 기존 멀티콜을 거절하고, 국선을 멀티콜로 설정한다.
  713. CALLTYPE eMulticallType = MainActivity.mCallController.mCallInfo.getMultiCallType();
  714. if (eMulticallType == CALLTYPE.FRONT) playFrontCamBell(false);
  715. else if (eMulticallType == CALLTYPE.LOBBY || eMulticallType == CALLTYPE.GUARD || eMulticallType == CALLTYPE.RESIDENCE) MainActivity.mCallController.rejectMoIPMultiCall();
  716. else LOG_WARN("[onMultiCallEvent] Invalid eMultiCallType [" + eMulticallType + "]");
  717. MainActivity.mCallController.mCallInfo.setCallStatus(eMulticallType, CALLSTATUS.IDLE);
  718. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  719. MainActivity.mCallController.stop2ndCallTimer();
  720. Global.add2ndCallHistoryInfo(CALLRESULT.IN_MISS);
  721. LOG_WARN("[onMultiCallEvent] Another multicall is processing. Change multicall to PSTN multicall!!");
  722. MultiCallInfo MCInfo = new MultiCallInfo();
  723. MCInfo.setMulticallInfo(CALLTYPE.LOBBY, eCallType, eCallStatus, CALLOWNER.NONE, strRemoteSIPID, "", "", "NONE", strRemoteIP);
  724. MainActivity.mCallController.mCallInfo.setMultiCallInfo(MCInfo);
  725. Global.make2ndCallHistoryInfo(eCallType.toString(), "NONE", CALLDIRECTION.IN, CALLACTION.MISS, CALLRESULT.IN_MISS);
  726. MainActivity.mCallController.mPopupEventListener.onMulticallChange(eCallType, eCallStatus, "");
  727. }
  728. } else {
  729. LOG_WARN("[onMultiCallEvent] Invalid CallType [" + eCallType + "]");
  730. }
  731. } else if (eCallStatus == CALLSTATUS.CALLERID) {
  732. MainActivity.mCallController.mCallInfo.updateMultiCallName(strRemoteSIPID);
  733. Global.change2ndCallLogSIPID(CALLTYPE.PSTN.toString() + ":" + strRemoteSIPID);
  734. } else if (eCallStatus == CALLSTATUS.END) {
  735. MainActivity.mCallController.mCallInfo.setCallStatus(eCallType, CALLSTATUS.IDLE);
  736. if (MainActivity.mCallController.mCallInfo.getMultiCallType() == eCallType) {
  737. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  738. MainActivity.mCallController.stop2ndCallTimer();
  739. Global.add2ndCallHistoryInfo(CALLRESULT.IN_MISS);
  740. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_MULTICALL);
  741. } else LOG_WARN("[onMultiCallEvent] Invalid CallType [" + eCallType + "]");
  742. } else if (eCallStatus == CALLSTATUS.CANCEL) {
  743. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  744. MainActivity.mCallController.mCallInfo.setCallStatus(eCallType, CALLSTATUS.IDLE);
  745. MainActivity.mCallController.stop2ndCallTimer();
  746. Global.add2ndCallHistoryInfo(CALLRESULT.IN_REJECT);
  747. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_MULTICALL);
  748. } else if (eCallStatus == CALLSTATUS.TIMEOUT_2NDCALL) {
  749. // 거동수상자 녹화기능 수정중 (추후 동작상태보고 수정)
  750. // if (eCallType == CALLTYPE.FRONT_RECORD) {
  751. // // [스마트현관카메라] 거동수상자 녹화 팝업 미선택시 녹화 시작
  752. // ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_MULTICALL_RECORD);
  753. // MainActivity.mCallController.stop2ndCallTimer();
  754. // MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
  755. // doMultiCallAccept();
  756. // }
  757. // else {
  758. // doMultiCallReject();
  759. // Global.add2ndCallHistoryInfo(CALLRESULT.IN_MISS);
  760. // MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  761. // MainActivity.mCallController.mCallInfo.setCallStatus(eCallType, CALLSTATUS.IDLE);
  762. // ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_MULTICALL);
  763. // }
  764. doMultiCallReject();
  765. Global.add2ndCallHistoryInfo(CALLRESULT.IN_MISS);
  766. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  767. MainActivity.mCallController.mCallInfo.setCallStatus(eCallType, CALLSTATUS.IDLE);
  768. ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_MULTICALL);
  769. } else if (eCallStatus == CALLSTATUS.RECORDING) {
  770. // [스마트현관카메라] 로비 통화상태중(호출수신 또는 통화중) 거동수상자 감지 이벤트 발생하는 경우
  771. LOG("[onMultiCallEvent] MainActivity.mCallController.mCallInfo.getMultiCallStatus() = " + MainActivity.mCallController.mCallInfo.getMultiCallStatus());
  772. if (MainActivity.mCallController.mCallInfo.getMultiCallStatus() == CALLSTATUS.IDLE) {
  773. MultiCallInfo MCInfo = new MultiCallInfo();
  774. MCInfo.setMulticallInfo(CALLTYPE.LOBBY, eCallType, eCallStatus, CALLOWNER.NONE, strRemoteSIPID, "", "", "세대현관", strRemoteIP);
  775. MainActivity.mCallController.mCallInfo.setMultiCallInfo(MCInfo);
  776. CALLSTATUS eLobbyCallStatus = MainActivity.mCallController.mCallInfo.getLOBBY();
  777. LOG("[onMultiCallEvent] eLobbyCallStatus [" + eLobbyCallStatus + "]");
  778. if (eLobbyCallStatus == CALLSTATUS.CALLED || eLobbyCallStatus == CALLSTATUS.TALKING) {
  779. MainActivity.mCallController.set2ndCallTimer(eCallType, MainActivity.mCallController.mCTT.WAIT_RECORD);
  780. // ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL_RECORD);
  781. ((MainActivity) (getContext())).startMultiCallPopup(ID.POPUP.POPUP_MULTICALL_NOTICE); // 멀티콜 시나리오가 변경됨에 따라 팝업 수정
  782. } else {
  783. LOG_WARN("[onMultiCallEvent] Invalid eLobbyCallStatus [" + eLobbyCallStatus + "]");
  784. }
  785. } else {
  786. // 멀티콜 있음
  787. }
  788. } else {
  789. LOG_WARN("[onMultiCallEvent] Invalid CallStatus [" + eCallStatus + "]");
  790. }
  791. } catch (RuntimeException re) {
  792. LogUtil.errorLogInfo("", TAG, re);
  793. } catch (Exception e) {
  794. Log.e(TAG, "[Exception] onMultiCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage)");
  795. //e.printStackTrace();
  796. LogUtil.errorLogInfo("", TAG, e);
  797. }
  798. }
  799. @Override
  800. public void onSubPhoneEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strTargetID, String strMessage) {
  801. try {
  802. LOG_INFO("[onSubPhoneEvent] eCallOwner [" + eCallOwner + "], eCallStatus [" + eCallStatus + "], eCallType [" + eCallType + "], strTargetID [" + strTargetID + "], strMessage [" + strMessage + "]");
  803. if (eCallOwner == CALLOWNER.UNIVERSAL_DEVICE && eCallStatus == CALLSTATUS.DOOR_OPEN) {
  804. if (doSubPhoneDoorOpen(eCallOwner, CALLTYPE.LOBBY))
  805. MainActivity.mSubPhoneController.sendACKDoorOpen(eCallOwner, CALLTYPE.LOBBY);
  806. }
  807. if (eCallType == CALLTYPE.NONE) return;
  808. if (eCallType == CALLTYPE.LOBBY) {
  809. if (eCallStatus == CALLSTATUS.TALKING) {
  810. if (eCallOwner != CALLOWNER.WALLPAD) {
  811. doTalk(eCallOwner);
  812. } else {
  813. MainActivity.mCallController.setTalkPath(CALLPATH.SUBPHONE_MOIP);
  814. }
  815. } else if (eCallStatus == CALLSTATUS.END) {
  816. if (eCallOwner != CALLOWNER.WALLPAD) {
  817. doEnd();
  818. }
  819. } else if (eCallStatus == CALLSTATUS.DOOR_OPEN) {
  820. if (!bSentiMAP) {
  821. if (doSubPhoneDoorOpen(eCallOwner, eCallType)) {
  822. MainActivity.mSubPhoneController.sendACKDoorOpen(eCallOwner, eCallType);
  823. Thread.sleep(2000);
  824. doEnd();
  825. }
  826. }
  827. } else {
  828. Log.w(TAG, "[onSubPhoneEvent] Incorrect eCallStatus!!! eCallStatus = " + eCallStatus);
  829. }
  830. } else {
  831. Log.w(TAG, "[onSubPhoneEvent] Incorrect eCallType!!! eCallType = " + eCallType);
  832. }
  833. } catch (RuntimeException re) {
  834. LogUtil.errorLogInfo("", TAG, re);
  835. } catch (Exception e) {
  836. Log.e(TAG, "[Exception] onSubPhoneEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strMessage)");
  837. //e.printStackTrace();
  838. LogUtil.errorLogInfo("", TAG, e);
  839. }
  840. }
  841. @Override
  842. public void onVideoSet(boolean bSet, String strRemoteSIPID) {
  843. try {
  844. LOG_INFO("[onVideoSet] bSet [" + bSet + "], strRemoteSIPID [" + strRemoteSIPID + "]");
  845. if (bSet) {
  846. if (!strRemoteSIPID.contains(DEVICENAME.strType_Lobby)) {
  847. Log.e(TAG, "[onVideoSet] Device name is not matched!!!");
  848. return;
  849. }
  850. }
  851. if (!bSet) ctrlAlphaBlending(bSet);
  852. MainActivity.mCallController.mSIPInterface.videoSet(bSet, false, bSet);
  853. //((MainActivity)mContext).startVideoEncoding(bSet, false, bSet);
  854. } catch (RuntimeException re) {
  855. LogUtil.errorLogInfo("", TAG, re);
  856. } catch (Exception e) {
  857. Log.e(TAG, "[Exception] onVideoSet(boolean bSet, String strRemoteSIPID)");
  858. //e.printStackTrace();
  859. LogUtil.errorLogInfo("", TAG, e);
  860. }
  861. }
  862. @Override
  863. public void onShowRemoteVideo(boolean bShow) {
  864. try {
  865. LOG_INFO("[onShowRemoteVideo] bShow [" + bShow + "]");
  866. if (MainActivity.bFFMPEGEnable) ((MainActivity)mContext).showRemoteVideo(bShow, false);
  867. if (bShow) {
  868. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_SAVE_VISITORPICTURE, 0, 0, null, 3000);
  869. }
  870. else {
  871. enableSavePicBTN(false);
  872. }
  873. } catch (RuntimeException re) {
  874. LogUtil.errorLogInfo("", TAG, re);
  875. } catch (Exception e) {
  876. Log.e(TAG, "[Exception] onShowRemoteVideo(boolean bShow)");
  877. //e.printStackTrace();
  878. LogUtil.errorLogInfo("", TAG, e);
  879. }
  880. }
  881. @Override
  882. protected void onPopupResult(Intent data) {
  883. try {
  884. int nScreen = data.getIntExtra("SCREEN", -1);
  885. int nID = data.getIntExtra("POPUP_BTN", -1);
  886. boolean bFinish = data.getBooleanExtra("FINISH_FLAG", false);
  887. Log.d(TAG, "[onPopupResult] nScreen: " + nScreen + ", nID: " + nID + ", bFinish: " + bFinish);
  888. if (nScreen == ID.POPUP.POPUP_MULTICALL) {
  889. if (nID == ID.POPUP.MUTICALL.ELEMENT.BUTTON.ACCEPT) {
  890. LOG_INFO("[onPopupResult] ID.POPUP.MUTICALL.ELEMENT.BUTTON.ACCEPT");
  891. MainActivity.mCallController.stop2ndCallTimer();
  892. //MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
  893. MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
  894. ctrlAlphaBlending(false);
  895. doMultiCallAccept();
  896. } else if (nID == ID.POPUP.MUTICALL.ELEMENT.BUTTON.REJECT) {
  897. LOG_INFO("[onPopupResult] ID.POPUP.MUTICALL.ELEMENT.BUTTON.REJECT");
  898. if (MainActivity.mPSTNController != null) MainActivity.mPSTNController.stopPSTNRingCntThread(); // PSTN 멀티콜 거절시 ring cnt 초기화
  899. MainActivity.mCallController.stop2ndCallTimer();
  900. MainActivity.mCallController.mCallInfo.setCallStatus(MainActivity.mCallController.mCallInfo.getMultiCallType(), CALLSTATUS.IDLE);
  901. doMultiCallReject();
  902. MainActivity.mIOInterface.ctrlPopupGUI(false); // 현재 통화패스가 로비통화일 경우 멀티콜 거절시 GUI 화면이 아래로(영상이 위로)
  903. sendHandlerMsgDelayed(HANDLERMSG.REFRESH_BTNLED_STATUS, 0, 0, null, 1000);
  904. }
  905. if (bFinish) MainActivity.mIOInterface.ctrlPopupGUI(false); // 현재 통화패스가 로비통화일 경우 멀티콜 팝업 닫히면 GUI 화면이 아래로(영상이 위로)
  906. } else if (nScreen == ID.POPUP.POPUP_NOTICE_SUBPHONETALK) {
  907. if (nID == ID.POPUP.NOTICE_SUBPHONETALK.ELEMENT.BUTTON.END) {
  908. LOG_INFO("[onPopupResult] ID.POPUP.NOTICE_SUBPHONETALK.ELEMENT.BUTTON.END");
  909. MainActivity.mCallController.stop2ndCallTimer();
  910. doEnd();
  911. }
  912. }
  913. else if (nScreen == ID.POPUP.POPUP_MULTICALL_NOTICE) {
  914. if (nID == ID.POPUP.MUTICALL_NOTICE.ELEMENT.BUTTON.CONFIRM) {
  915. LOG_INFO("[onPopupResult] ID.POPUP.POPUP_MULTICALL_NOTICE.ELEMENT.BUTTON.CONFIRM");
  916. MainActivity.mIOInterface.ctrlPopupGUI(false); // 현재 화면이 로비통화일 경우 멀티콜 알림 팝업 닫힐시 GUI 화면이 아래로(영상이 위로)
  917. /**
  918. * JEFF, 2020.01.01
  919. * 모든 통화에서 멀티콜을 막음
  920. */
  921. if (MainActivity.mPSTNController != null) MainActivity.mPSTNController.stopPSTNRingCntThread(); // PSTN 멀티콜 거절시 ring cnt 초기화
  922. MainActivity.mCallController.stop2ndCallTimer();
  923. MainActivity.mCallController.mCallInfo.setCallStatus(MainActivity.mCallController.mCallInfo.getMultiCallType(), CALLSTATUS.IDLE);
  924. doMultiCallReject();
  925. sendHandlerMsgDelayed(HANDLERMSG.REFRESH_BTNLED_STATUS, 0, 0, null, 1000);
  926. }
  927. }
  928. else if (nScreen == ID.POPUP.POPUP_MULTICALL_RECORD) {
  929. if (nID == ID.POPUP.MULTICALL_RECORD.ELEMENT.BUTTON.OK) {
  930. LOG_INFO("[onPopupResult] ID.POPUP.MULTICALL_RECORD.ELEMENT.BUTTON.OK");
  931. // [스마트현관카메라] 현재통화 종료 및 영상 녹화 시작
  932. MainActivity.mCallController.stop2ndCallTimer();
  933. //MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
  934. MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
  935. ctrlAlphaBlending(false);
  936. doMultiCallAccept();
  937. } else if (nID == ID.POPUP.MULTICALL_RECORD.ELEMENT.BUTTON.CANCEL) {
  938. LOG_INFO("[onPopupResult] ID.POPUP.MULTICALL_RECORD.ELEMENT.BUTTON.CANCEL");
  939. // [스마트현관카메라] 거동수상자 녹화 취소 및 현재 통화상태 유지
  940. MainActivity.mCallController.stop2ndCallTimer();
  941. doMultiCallReject();
  942. MainActivity.mIOInterface.ctrlPopupGUI(false); // 현재 통화패스가 로비통화일 경우 멀티콜 거절시 GUI 화면이 아래로(영상이 위로)
  943. sendHandlerMsgDelayed(HANDLERMSG.REFRESH_BTNLED_STATUS, 0, 0, null, 1000);
  944. ((MainActivity) mContext).ctrlSmartIOTCamLEDMode(SmartRFCamLEDMode.LED_OFF); // LED OFF
  945. ((MainActivity) mContext).ctrlSmartIOTCamStatusMode(SmartRFCamStatusMode.STATUS_OFF); // MODE OFF
  946. }
  947. } else if (nScreen == ID.POPUP.POPUP_NOTICE_REMOTECALL) {
  948. if (nID == ID.POPUP.NOTICE_REMOTECALL.ELEMENT.BUTTON.END) {
  949. LOG_INFO("[onPopupResult] ID.POPUP.NOTICE_REMOTECALL.ELEMENT.BUTTON.END");
  950. MainActivity.mRemoteCallController.sendCloseRemoteCall();
  951. MainActivity.mCallController.quitMoIPCall();
  952. }
  953. }
  954. } catch (RuntimeException re) {
  955. LogUtil.errorLogInfo("", TAG, re);
  956. } catch (Exception e) {
  957. Log.e(TAG, "[Exception] onPopupResult(Intent data)");
  958. //e.printStackTrace();
  959. LogUtil.errorLogInfo("", TAG, e);
  960. }
  961. }
  962. private void doTalk(CALLOWNER eCallOwner) {
  963. try {
  964. LOG_INFO("[doTalk] eCallOwner [" + eCallOwner + "], nSelectedFilter [" + nSelectedFilter + "]");
  965. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  966. //MainActivity.mCallController.acceptMoIPCall(false);
  967. MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
  968. send_start_talking_request(RemoteIDInfo.strIP);
  969. enableSavePicBTN(true);
  970. }
  971. else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  972. //MainActivity.mCallController.acceptMoIPCall(false);
  973. MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
  974. send_start_talking_request(RemoteIDInfo.strIP);
  975. enableSavePicBTN(true);
  976. }
  977. else {
  978. LOG_INFO("[doTalk] Invalid CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  979. }
  980. } catch (RuntimeException re) {
  981. LogUtil.errorLogInfo("", TAG, re);
  982. } catch (Exception e) {
  983. Log.e(TAG, "[Exception] doTalk(CALLOWNER eCallOwner)");
  984. //e.printStackTrace();
  985. LogUtil.errorLogInfo("", TAG, e);
  986. }
  987. }
  988. private void doEnd() {
  989. try {
  990. if (MainActivity.mCallController.mCallInfo.getIDLECnt() != MainActivity.mCallController.mCallInfo.IDLECNT_MAX) {
  991. LOG_INFO("[doEnd] CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  992. ctrlAlphaBlending(false);
  993. //MainActivity.mCallController.mVideoJNI.setPreviewInfo_V40(0, 0, 0, 0);
  994. //MainActivity.mIOInterface.ctrlPopupGUI_Resi(false, false);
  995. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  996. Global.change1stCallLogAction(CALLACTION.REJECT);
  997. Global.stopMelodyRepeat();
  998. MainActivity.mCallController.quitMoIPCall();
  999. }
  1000. else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1001. if (MainActivity.mCallController.mCallInfo.getCallOwner() == CALLOWNER.MOBILE)
  1002. MainActivity.mRemoteCallController.sendCloseRemoteCall();
  1003. MainActivity.mCallController.quitMoIPCall();
  1004. }
  1005. else {
  1006. LOG_INFO("[doEnd] Invalid CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1007. MainActivity.mCallController.quitMoIPCall();
  1008. }
  1009. } else {
  1010. LOG_INFO("[doEnd] IDLE Cnt is not MAX [" + MainActivity.mCallController.mCallInfo.IDLECNT_MAX + "]");
  1011. MainActivity.mCallController.mCallInfo.printCallStatus();
  1012. MainActivity.mCallController.MultiCallScenarioManager();
  1013. }
  1014. } catch (RuntimeException re) {
  1015. LogUtil.errorLogInfo("", TAG, re);
  1016. } catch (Exception e) {
  1017. Log.e(TAG, "[Exception] doEnd()");
  1018. //e.printStackTrace();
  1019. LogUtil.errorLogInfo("", TAG, e);
  1020. }
  1021. }
  1022. private void doTalkByBTN(CALLOWNER eCallOwner) {
  1023. try {
  1024. LOG_INFO("[doTalkByBTN] CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1025. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  1026. MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
  1027. send_start_talking_request(RemoteIDInfo.strIP);
  1028. //MainActivity.mCallController.acceptMoIPCall(false);
  1029. //MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
  1030. } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1031. MainActivity.mCallController.quitMoIPCall();
  1032. } else {
  1033. LOG_INFO("[doTalkByBTN] Invalid CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1034. }
  1035. } catch (RuntimeException re) {
  1036. LogUtil.errorLogInfo("", TAG, re);
  1037. } catch (Exception e) {
  1038. Log.e(TAG, "[Exception] doTalkByBTN(CALLOWNER eCallOwner)");
  1039. //e.printStackTrace();
  1040. LogUtil.errorLogInfo("", TAG, e);
  1041. }
  1042. }
  1043. private void doDoorOpen() {
  1044. try {
  1045. if(!((MainActivity) mContext).m_bMissCall_Lobby)
  1046. ((MainActivity) mContext).m_bMissCall = true;
  1047. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  1048. Global.stopMelodyRepeat();
  1049. // Global.changeVolumeMoIPMode(CALLTYPE.NONE);
  1050. if (!send_lobby_open_request(RemoteIDInfo.strIP)) {
  1051. MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
  1052. }
  1053. Global.change1stCallLogAction(CALLACTION.DOOR);
  1054. } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1055. // Global.changeVolumeMoIPMode(CALLTYPE.NONE);
  1056. if (!send_lobby_open_request(RemoteIDInfo.strIP)) {
  1057. MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
  1058. }
  1059. Global.change1stCallLogAction(CALLACTION.TALK_DOOR);
  1060. } else {
  1061. LOG_INFO("[doDoorOpen] Invalid CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1062. }
  1063. } catch (RuntimeException re) {
  1064. LogUtil.errorLogInfo("", TAG, re);
  1065. } catch (Exception e) {
  1066. Log.e(TAG, "[Exception] doDoorOpen() : " + e);
  1067. //e.printStackTrace();
  1068. LogUtil.errorLogInfo("", TAG, e);
  1069. }
  1070. }
  1071. private boolean doSubPhoneDoorOpen(CALLOWNER eCallOwner, CALLTYPE eCallType) {
  1072. try {
  1073. LOG_WARN("[doSubPhoneDoorOpen] eCallOwner [" + eCallOwner + "], eCallType [" + eCallType + "]");
  1074. if (eCallType != CALLTYPE.LOBBY) {
  1075. LOG_WARN("[doSubPhoneDoorOpen] eCallType is wrong eCallType [" + eCallType + "]");
  1076. return false;
  1077. }
  1078. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  1079. if (Global.getKitchenTVIdx(eCallOwner) >= 0 || Global.getBathTVIdx(eCallOwner) >= 0 || Global.getBathPhoneIdx(eCallOwner) >= 0 || eCallOwner == CALLOWNER.SUB_WALLPAD || eCallOwner == CALLOWNER.UNIVERSAL_DEVICE) {
  1080. Global.stopMelodyRepeat();
  1081. if (!send_lobby_open_request(RemoteIDInfo.strIP)) {
  1082. MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
  1083. return false;
  1084. }
  1085. return true;
  1086. }
  1087. return false;
  1088. } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1089. if (Global.getKitchenTVIdx(eCallOwner) >= 0 || Global.getBathTVIdx(eCallOwner) >= 0 || Global.getBathPhoneIdx(eCallOwner) >= 0 || eCallOwner == CALLOWNER.SUB_WALLPAD || eCallOwner == CALLOWNER.UNIVERSAL_DEVICE) {
  1090. if (!send_lobby_open_request(RemoteIDInfo.strIP)) {
  1091. MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
  1092. return false;
  1093. }
  1094. return true;
  1095. }
  1096. return false;
  1097. } else {
  1098. LOG_INFO("[doDoorOpen] Invalid CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1099. return false;
  1100. }
  1101. } catch (RuntimeException re) {
  1102. LogUtil.errorLogInfo("", TAG, re);
  1103. return false;
  1104. } catch (Exception e) {
  1105. Log.e(TAG, "[Exception] doSubPhoneDoorOpen(CALLOWNER eCallOwner, CALLTYPE eCallType)");
  1106. //e.printStackTrace();
  1107. LogUtil.errorLogInfo("", TAG, e);
  1108. return false;
  1109. }
  1110. }
  1111. private void doMultiCallAccept() {
  1112. try {
  1113. LOG("[doMultiCallAccept]");
  1114. MainActivity.mCallController.mCallInfo.setMultiCallAcceptFlag(true);
  1115. doEnd();
  1116. } catch (RuntimeException re) {
  1117. LogUtil.errorLogInfo("", TAG, re);
  1118. } catch (Exception e) {
  1119. Log.e(TAG, "[Exception] doMultiCallAccept()");
  1120. //e.printStackTrace();
  1121. LogUtil.errorLogInfo("", TAG, e);
  1122. }
  1123. }
  1124. private void doMultiCallReject() {
  1125. try {
  1126. CALLTYPE eMultiCallType = MainActivity.mCallController.mCallInfo.getMultiCallType();
  1127. Log.d(TAG, "[doMultiCallReject] eMultiCallType [" + eMultiCallType + "]");
  1128. if (eMultiCallType == CALLTYPE.FRONT) {
  1129. playFrontCamBell(false);
  1130. MainActivity.mCallController.mCallInfo.setCallStatus(eMultiCallType, CALLSTATUS.IDLE);
  1131. } else if (eMultiCallType == CALLTYPE.LOBBY || eMultiCallType == CALLTYPE.GUARD || eMultiCallType == CALLTYPE.RESIDENCE) {
  1132. MainActivity.mCallController.rejectMoIPMultiCall();
  1133. MainActivity.mCallController.mCallInfo.setCallStatus(eMultiCallType, CALLSTATUS.IDLE);
  1134. } else if (eMultiCallType == CALLTYPE.PSTN) {
  1135. if(MainActivity.mPSTNController!=null)
  1136. MainActivity.mPSTNController.sendReject();
  1137. MainActivity.mCallController.onPSTNEvent(CALLEVENTTYPE.CANCEL_CALL, null, null);
  1138. MainActivity.mCallController.mCallInfo.setCallStatus(eMultiCallType, CALLSTATUS.IDLE);
  1139. } else {
  1140. LOG_WARN("[doMultiCallReject] Invalid eMultiCallType [" + eMultiCallType + "]");
  1141. }
  1142. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  1143. } catch (RuntimeException re) {
  1144. LogUtil.errorLogInfo("", TAG, re);
  1145. } catch (Exception e) {
  1146. Log.e(TAG, "[Exception] doMultiCallReject()");
  1147. //e.printStackTrace();
  1148. LogUtil.errorLogInfo("", TAG, e);
  1149. }
  1150. }
  1151. boolean bMultiCallAccept = false; // 통화 버튼 활성화 여부를 판단하기 위한 플래그 (멀티콜 수락시 통화버튼 활성화 하면 안됨)
  1152. private void procAddCall() {
  1153. try {
  1154. LOG("[procAddCall]");
  1155. CALLTYPE eMType = MainActivity.mCallController.mCallInfo.getMultiCallType();
  1156. CALLSTATUS eMStatus = MainActivity.mCallController.mCallInfo.getMultiCallStatus();
  1157. CALLOWNER eCallOwner = MainActivity.mCallController.mCallInfo.getMultiCallOwner();
  1158. LOG("[procAddCall] eMType [" + eMType + "], eMStatus [" + eMStatus + "], CallOwner [" + eCallOwner + "]");
  1159. if (eMType == CALLTYPE.LOBBY && eMStatus == CALLSTATUS.CALLED) {
  1160. RemoteIDInfo.strIP = MainActivity.mCallController.mCallInfo.getMultiCall_IP();
  1161. Global.replace1stBy2ndCallHistory();
  1162. doTalk(eCallOwner);
  1163. if (MainActivity.mCallController.mCallInfo.getMultiCallAccept()) {
  1164. // 멀티콜 수락 (통화시작)
  1165. bMultiCallAccept = true;
  1166. LOG("[procAddCall] bMultiCallAccept [" + bMultiCallAccept + "]");
  1167. if (MainActivity.mCallController.mCallInfo.getCallOwner() != CALLOWNER.WALLPAD) {
  1168. MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.LOBBY, false);
  1169. }
  1170. super.setFinishTimerDestroy();
  1171. MainActivity.mCallController.set1stCallTimer(eMType, MainActivity.mCallController.mCTT.RESIDENCEnLOBBY);
  1172. doTalk(eCallOwner);
  1173. } else {
  1174. // 멀티콜 수신중 (호출수신중)
  1175. if (MainActivity.mCallController.mCallInfo.getCallOwner() != CALLOWNER.WALLPAD) {
  1176. MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.LOBBY, false);
  1177. }
  1178. //MainActivity.mCallController.mSIPInterface.videoSet(true, false, true);
  1179. MainActivity.mCallController.mSIPInterface.videoSet(false, false, true);
  1180. if (eCallOwner == CALLOWNER.WALLPAD) ctrlAlphaBlending(true); // seulki
  1181. Global.playMelodyRepeat(eMType);
  1182. super.setFinishTimerDestroy();
  1183. MainActivity.mCallController.set1stCallTimer(eMType, MainActivity.mCallController.mCTT.CALLED);
  1184. }
  1185. sendHandlerMsg(HANDLERMSG.SET_BTN_STATUS, 0, 0, null);
  1186. ((MainActivity) mContext).displayRemoteID(MainActivity.mCallController.mCallInfo.getMultiCall_Name());
  1187. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  1188. } else {
  1189. LOG("[procAddCall] No MultiCall!!");
  1190. // 멀티콜 없음
  1191. MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
  1192. }
  1193. } catch (RuntimeException re) {
  1194. LogUtil.errorLogInfo("", TAG, re);
  1195. } catch (Exception e) {
  1196. Log.e(TAG, "[Exception] procAddCall()");
  1197. //e.printStackTrace();
  1198. LogUtil.errorLogInfo("", TAG, e);
  1199. }
  1200. }
  1201. private void playFrontCamBell(boolean bBell) {
  1202. try {
  1203. MainActivity.mIOInterface.ctrlFrontCamPower(bBell);
  1204. MainActivity.mIOInterface.ctrlFrontCamBell(bBell);
  1205. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
  1206. if (bBell) {
  1207. ((MainActivity) mContext).ctrlSmartIOTCamStatusMode(SmartRFCamStatusMode.STATUS_ON);
  1208. ((MainActivity) mContext).ctrlSmartIOTCamLEDMode(SmartRFCamLEDMode.LED_ON);
  1209. } else {
  1210. ((MainActivity) mContext).ctrlSmartIOTCamStatusMode(SmartRFCamStatusMode.STATUS_OFF);
  1211. ((MainActivity) mContext).ctrlSmartIOTCamLEDMode(SmartRFCamLEDMode.LED_OFF);
  1212. }
  1213. }
  1214. } catch (RuntimeException re) {
  1215. LogUtil.errorLogInfo("", TAG, re);
  1216. } catch (Exception e) {
  1217. Log.e(TAG, "[Exception] playFrontCamBell(boolean bBell)");
  1218. //e.printStackTrace();
  1219. LogUtil.errorLogInfo("", TAG, e);
  1220. }
  1221. }
  1222. private void ctrlAlphaBlending(boolean bON) {
  1223. try {
  1224. LOG_INFO("[ctrlAlphaBlending] bON [" + bON + "]");
  1225. int BOARDTYPE = ConfigValues.DEVICE_BOARDTYPE;
  1226. if (BOARDTYPE == BOARD_TYPE.V40_IGW300 || BOARDTYPE == BOARD_TYPE.V40 || BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT || BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
  1227. if (bON) {
  1228. // IMG_VIDEO_MODULE.setImageResource(R.drawable.video_black_back_test_4);
  1229. // 다담 Alphablending 적용을 위한 컬러키 수정 편의를 위하여
  1230. IMG_VIDEO_MODULE.setImageResource(0);
  1231. IMG_VIDEO_MODULE.setBackgroundColor(Color.argb(0, 0, 0, 0));
  1232. }
  1233. else {
  1234. IMG_VIDEO_MODULE.setImageResource(R.drawable.image_lobby);
  1235. }
  1236. MainActivity.mIOInterface.ctrlPopupGUI(!bON);
  1237. }
  1238. else {
  1239. Log.w(TAG, "[ctrlAlphaBlending] Not supported BOARDTYPE!! [" + BOARDTYPE + "]");
  1240. }
  1241. } catch (RuntimeException re) {
  1242. LogUtil.errorLogInfo("", TAG, re);
  1243. } catch (Exception e) {
  1244. Log.e(TAG, "[Exception] ctrlAlphaBlending(boolean bON)");
  1245. //e.printStackTrace();
  1246. LogUtil.errorLogInfo("", TAG, e);
  1247. }
  1248. }
  1249. private void displayScreenValues() {
  1250. try {
  1251. getVolume();
  1252. drawVolume();
  1253. if (ConfigValues.bReliefCall) {
  1254. selectReliefCallFilter(nSelectedFilter);
  1255. }
  1256. enableSavePicBTN(false);
  1257. } catch (RuntimeException re) {
  1258. LogUtil.errorLogInfo("", TAG, re);
  1259. } catch (Exception e) {
  1260. Log.e(TAG, "[Exception] displayScreenValues()");
  1261. //e.printStackTrace();
  1262. LogUtil.errorLogInfo("", TAG, e);
  1263. }
  1264. }
  1265. private void setBTNStatus() {
  1266. try {
  1267. // LOG("[setBTNStatus] MainActivity.mCallController.mCallInfo.getLOBBY [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1268. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  1269. ((MainActivity) mContext).setMenuBTNEnable(false);
  1270. // 로비 통화 호출 수신 3초 후 통화시작/통화종료/문열림 가능하도록 버튼 처리
  1271. enableTalkBTN(false);
  1272. enableEndBTN(false);
  1273. enableOpenDoorBTN(false);
  1274. LOG("[setBTNStatus] bMultiCallAccept [" + bMultiCallAccept + "]");
  1275. if (!bMultiCallAccept) {
  1276. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_TALK_BTN, 0, 0, null, 2000); // 멀티콜 수락시 통화버튼 활성화 안함
  1277. }
  1278. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_END_BTN, 0, 0, null, 2000);
  1279. sendHandlerMsgDelayed(HANDLERMSG.ENABLE_OPENDOOR_BTN, 0, 0, null, 2000);
  1280. if (ConfigValues.bReliefCall) {
  1281. BTN_RELIEF_FILTER_01.setButtonEventOffDisable();
  1282. BTN_RELIEF_FILTER_02.setButtonEventOffDisable();
  1283. // BTN_RELIEF_FILTER_03.setButtonEventOffDisable();
  1284. // BTN_RELIEF_FILTER_04.setButtonEventOffDisable();
  1285. }
  1286. bSentiMAP = false;
  1287. runFlickerCallLED();
  1288. } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1289. ((MainActivity) mContext).setMenuBTNEnable(false);
  1290. enableTalkBTN(false);
  1291. if (MainActivity.mCallController.mCallInfo.getCallOwner() == CALLOWNER.MOBILE) {
  1292. enableSavePicBTN(false);
  1293. enableOpenDoorBTN(false);
  1294. }
  1295. setOnCallLED();
  1296. } else {
  1297. ((MainActivity) mContext).setMenuBTNEnable(true);
  1298. enableTalkBTN(false);
  1299. enableEndBTN(false);
  1300. enableOpenDoorBTN(false);
  1301. enableSavePicBTN(false);
  1302. if (ConfigValues.bReliefCall) {
  1303. BTN_RELIEF_FILTER_01.setButtonEventOffEnable(R.drawable.btn_big_filter_1_normal);
  1304. BTN_RELIEF_FILTER_02.setButtonEventOffEnable(R.drawable.btn_big_filter_2_normal);
  1305. // BTN_RELIEF_FILTER_03.setButtonEventOffEnable(R.drawable.btn_filter_3_normal);
  1306. // BTN_RELIEF_FILTER_04.setButtonEventOffEnable(R.drawable.btn_filter_4_normal);
  1307. }
  1308. setOffCallLED();
  1309. }
  1310. } catch (RuntimeException re) {
  1311. LogUtil.errorLogInfo("", TAG, re);
  1312. } catch (Exception e) {
  1313. Log.e(TAG, "[Exception] setBTNStatus()");
  1314. //e.printStackTrace();
  1315. LogUtil.errorLogInfo("", TAG, e);
  1316. }
  1317. }
  1318. private void setBTNLEDStatus() {
  1319. try {
  1320. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
  1321. runFlickerCallLED();
  1322. } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1323. setOnCallLED();
  1324. } else {
  1325. setOffCallLED();
  1326. }
  1327. } catch (RuntimeException re) {
  1328. LogUtil.errorLogInfo("", TAG, re);
  1329. } catch (Exception e) {
  1330. Log.e(TAG, "[Exception] setBTNLEDStatus()");
  1331. //e.printStackTrace();
  1332. LogUtil.errorLogInfo("", TAG, e);
  1333. }
  1334. }
  1335. private void enableTalkBTN(boolean bEnable) {
  1336. try {
  1337. LOG("[enableTalkBTN] bEnable [" + bEnable + "]");
  1338. if (bEnable) {
  1339. // 이벤트 on
  1340. if (ConfigValues.bReliefCall)
  1341. BTN_TALK.setImageResource(R.drawable.btn_call_normal);
  1342. else BTN_TALK.setImageResource(R.drawable.btn_lobby_call_normal);
  1343. BTN_TALK.setButtonEventOffDisable();
  1344. } else {
  1345. // 이벤트 off
  1346. if (ConfigValues.bReliefCall)
  1347. BTN_TALK.setButtonEventOffEnable(R.drawable.btn_call_disabled);
  1348. else BTN_TALK.setButtonEventOffEnable(R.drawable.btn_lobby_call_disabled);
  1349. }
  1350. } catch (RuntimeException re) {
  1351. LogUtil.errorLogInfo("", TAG, re);
  1352. } catch (Exception e) {
  1353. Log.e(TAG, "[Exception] enableTalkBTN(boolean bEnable)");
  1354. //e.printStackTrace();
  1355. LogUtil.errorLogInfo("", TAG, e);
  1356. }
  1357. }
  1358. private void enableEndBTN(boolean bEnable) {
  1359. try {
  1360. LOG("[enableEndBTN] bEnable [" + bEnable + "]");
  1361. if (bEnable) {
  1362. // 이벤트 on
  1363. if (ConfigValues.bReliefCall)
  1364. BTN_END.setImageResource(R.drawable.btn_endl_normal);
  1365. else BTN_END.setImageResource(R.drawable.btn_lobby_end_normal);
  1366. BTN_END.setButtonEventOffDisable();
  1367. ((MainActivity) mContext).TopHomeBtn.setButtonEventOffDisable();
  1368. } else {
  1369. // 이벤트 off
  1370. if (ConfigValues.bReliefCall)
  1371. BTN_END.setButtonEventOffEnable(R.drawable.btn_endl_disabled);
  1372. else BTN_END.setButtonEventOffEnable(R.drawable.btn_lobby_end_disabled);
  1373. ((MainActivity) mContext).TopHomeBtn.setButtonEventOffEnable();
  1374. }
  1375. } catch (RuntimeException re) {
  1376. LogUtil.errorLogInfo("", TAG, re);
  1377. } catch (Exception e) {
  1378. Log.e(TAG, "[Exception] setEndBtnStatus(boolean bEnable)");
  1379. //e.printStackTrace();
  1380. LogUtil.errorLogInfo("", TAG, e);
  1381. }
  1382. }
  1383. private void enableOpenDoorBTN(boolean bEnable) {
  1384. try {
  1385. LOG("[enableOpenDoorBTN] bEnable [" + bEnable + "]");
  1386. if (bEnable) {
  1387. // 이벤트 on
  1388. if (ConfigValues.bReliefCall)
  1389. BTN_DOOROPEN.setImageResource(R.drawable.btn_open_normal);
  1390. else BTN_DOOROPEN.setImageResource(R.drawable.btn_lobby_open_normal);
  1391. BTN_DOOROPEN.setButtonEventOffDisable();
  1392. } else {
  1393. // 이벤트 off
  1394. if (ConfigValues.bReliefCall)
  1395. BTN_DOOROPEN.setButtonEventOffEnable(R.drawable.btn_open_disabled);
  1396. else BTN_DOOROPEN.setButtonEventOffEnable(R.drawable.btn_lobby_open_disabled);
  1397. }
  1398. } catch (RuntimeException re) {
  1399. LogUtil.errorLogInfo("", TAG, re);
  1400. } catch (Exception e) {
  1401. Log.e(TAG, "[Exception] enableOpenDoorBTN(boolean bEnable)");
  1402. //e.printStackTrace();
  1403. LogUtil.errorLogInfo("", TAG, e);
  1404. }
  1405. }
  1406. private void enableSavePicBTN(boolean bEnable) {
  1407. try {
  1408. if (bEnable) {
  1409. if (ConfigValues.bReliefCall)
  1410. BTN_SAVE_PICTURE.setImageResource(R.drawable.btn_photo_normal);
  1411. else BTN_SAVE_PICTURE.setImageResource(R.drawable.btn_lobby_photo_normal);
  1412. BTN_SAVE_PICTURE.setButtonEventOffDisable();
  1413. } else {
  1414. if (ConfigValues.bReliefCall)
  1415. BTN_SAVE_PICTURE.setButtonEventOffEnable(R.drawable.btn_photo_disabled);
  1416. else BTN_SAVE_PICTURE.setButtonEventOffEnable(R.drawable.btn_lobby_photo_disabled);
  1417. }
  1418. } catch (RuntimeException re) {
  1419. LogUtil.errorLogInfo("", TAG, re);
  1420. } catch (Exception e) {
  1421. Log.e(TAG, "[Exception] enableSavePicBTN(boolean bEnable)");
  1422. //e.printStackTrace();
  1423. LogUtil.errorLogInfo("", TAG, e);
  1424. }
  1425. }
  1426. boolean bSentiMAP = false;
  1427. int nCurrentMicGain = 0;
  1428. private boolean send_lobby_open_request(String strTargetIP) {
  1429. LOG_INFO("[send_lobby_open_request] strTargetIP [" + strTargetIP + "]");
  1430. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  1431. nCurrentMicGain = MainActivity.mIOInterface.getMICGain();
  1432. try {
  1433. bSentiMAP = true;
  1434. Request_lobby_open lobby_open = new Request_lobby_open(mContext);
  1435. if (lobby_open.send_lobby_open(strTargetIP, null)) {
  1436. lobby_open.setResultCtrl(new RetProci() {
  1437. @Override
  1438. public void ProcSuccess() {
  1439. LOG_INFO("[send_lobby_open_request] ProcSuccess()");
  1440. // hideLobbyVideo();
  1441. // if (MainActivity.mCallController.getTalkPath() == CALLPATH.NORMAL) {
  1442. // MainActivity.mIOInterface.setMICGain(0); // 월패드에 출력되는 문열림 멘트가 월패드 마이크를 통해 로비폰에 전달되므로, 멘트 출력전에 Micgain을 0으로 설정한다.
  1443. // }
  1444. MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
  1445. // MainActivity.mSound.Play(SND.mode.OPENDOOR);
  1446. mPathCheckHandler.sendEmptyMessage(2); // 통화패스 Normal로 변경 확인 후 멘트 출력 seulki
  1447. // 출입 데이터 기록(로비 문열림)
  1448. // WallpadAccessData WpadAccessData = new WallpadAccessData(getContext());
  1449. // WpadAccessData.Insert(WallpadAccessData.KIND.WPAD_CALL, null);
  1450. // WpadAccessData.closeDB();
  1451. enableTalkBTN(false);
  1452. enableEndBTN(false);
  1453. enableOpenDoorBTN(false);
  1454. enableSavePicBTN(false);
  1455. if (ConfigValues.bReliefCall) {
  1456. BTN_RELIEF_FILTER_01.setButtonEventOffEnable(R.drawable.btn_big_filter_1_normal);
  1457. BTN_RELIEF_FILTER_02.setButtonEventOffEnable(R.drawable.btn_big_filter_2_normal);
  1458. // BTN_RELIEF_FILTER_03.setButtonEventOffEnable(R.drawable.btn_filter_3_normal);
  1459. // BTN_RELIEF_FILTER_04.setButtonEventOffEnable(R.drawable.btn_filter_4_normal);
  1460. }
  1461. }
  1462. @Override
  1463. public void ProcError() {
  1464. LOG_INFO("[send_check_sip_activation_request] ProcError()");
  1465. bSentiMAP = false;
  1466. MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
  1467. // mPathCheckHandler.sendEmptyMessage(2); // 통화패스 Normal로 변경 확인 후 멘트 출력 seulki
  1468. }
  1469. @Override
  1470. public void ProcDoing() {
  1471. LOG_INFO("[send_check_sip_activation_request] ProcDoing()");
  1472. bSentiMAP = false;
  1473. }
  1474. });
  1475. return true;
  1476. }
  1477. } catch (RuntimeException re) {
  1478. LogUtil.errorLogInfo("", TAG, re);
  1479. } catch (Exception e) {
  1480. Log.e(TAG, "[Exception] send_check_sip_activation_request(String strTargetIP, String strMessage)");
  1481. //e.printStackTrace();
  1482. LogUtil.errorLogInfo("", TAG, e);
  1483. }
  1484. return false;
  1485. }
  1486. // 방문자 사진 자동 저장
  1487. boolean bEnableVisitorPic = false;
  1488. private void startSaveVisitorPicture(CALLTYPE eCallType, CALLSTATUS eCallStatus) {
  1489. try {
  1490. Log.d(TAG, "[startSaveVisitorPicture] eCallType: " + eCallType);
  1491. AutoPictureInfo mAutoPictureInfo = new AutoPictureInfo();
  1492. mAutoPictureInfo.setData(ConfigValues.strDong, ConfigValues.strHo, eCallType,eCallStatus, RemoteIDInfo.strSIPID, "null");
  1493. startAutoSaveVisitorPicture mstartAutoSaveVisitorPicture = new startAutoSaveVisitorPicture(mContext, mAutoPictureInfo, false);
  1494. mstartAutoSaveVisitorPicture.start();
  1495. } catch (RuntimeException re) {
  1496. LogUtil.errorLogInfo("", TAG, re);
  1497. } catch (Exception e) {
  1498. Log.e(TAG, "[Exception] startSaveVisitorPicture()");
  1499. //e.printStackTrace();
  1500. LogUtil.errorLogInfo("", TAG, e);
  1501. }
  1502. }
  1503. private void startTakeVisitorPicture(String strSIPID) {
  1504. try {
  1505. AutoPictureInfo mAutoPictureInfo = new AutoPictureInfo();
  1506. mAutoPictureInfo.setData(ConfigValues.strDong, ConfigValues.strHo, CALLTYPE.LOBBY, MainActivity.mCallController.mCallInfo.getLOBBY(), strSIPID, "null");
  1507. startMissedCallVisitorPicture mstartMIssedCallVisitorPicture = new startMissedCallVisitorPicture(mContext, mAutoPictureInfo, false);
  1508. mstartMIssedCallVisitorPicture.start();
  1509. } catch (RuntimeException re) {
  1510. LogUtil.errorLogInfo("", TAG, re);
  1511. } catch (Exception e) {
  1512. Log.e(TAG, "[Exception] startTakeVisitorPicture()");
  1513. //e.printStackTrace();
  1514. LogUtil.errorLogInfo("", TAG, e);
  1515. }
  1516. }
  1517. String strForwardingIP = "ERROR";
  1518. private void runCallForward() {
  1519. try {
  1520. LOG("[checkCallForward] ConfigValues.bOccupiedMode [" + ConfigValues.bUnoccupiedMode + "]");
  1521. if (ConfigValues.bUnoccupiedMode) {
  1522. for (int i = 0; i < ConfigValues.mGuardListTable.getCnt(); i++) {
  1523. if (ConfigValues.mGuardListTable.getGuardInfo(i).NAME().equals(("경비실"))) {
  1524. strForwardingIP = ConfigValues.mGuardListTable.getGuardInfo(i).IP();
  1525. if (!strForwardingIP.equals("ERROR")) {
  1526. if (!send_check_sip_activation_request(strForwardingIP))
  1527. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1528. else return;
  1529. } else {
  1530. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1531. }
  1532. } else {
  1533. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1534. }
  1535. }
  1536. } else {
  1537. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1538. }
  1539. } catch (RuntimeException re) {
  1540. LogUtil.errorLogInfo("", TAG, re);
  1541. } catch (Exception e) {
  1542. Log.e(TAG, "[Exception] runCallForward()");
  1543. //e.printStackTrace();
  1544. LogUtil.errorLogInfo("", TAG, e);
  1545. }
  1546. }
  1547. private boolean send_check_sip_activation_request(final String strTargetIP) {
  1548. try {
  1549. Request_check_sip_activation check_sip_activation = new Request_check_sip_activation(mContext);
  1550. if (check_sip_activation.send_check_sip_activation(strTargetIP, null)) {
  1551. check_sip_activation.setResultCtrl(new RetProci() {
  1552. @Override
  1553. public void ProcSuccess() {
  1554. LOG_INFO("[send_check_sip_activation_request] ProcSuccess()");
  1555. MainActivity.mCallController.mSIPInterface.requestCallForwardToStun(MainActivity.mCallController.makeCallForwarInfo(strTargetIP));
  1556. }
  1557. @Override
  1558. public void ProcError() {
  1559. LOG_INFO("[send_check_sip_activation_request] ProcError()");
  1560. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1561. }
  1562. @Override
  1563. public void ProcDoing() {
  1564. LOG_INFO("[send_check_sip_activation_request] ProcDoing()");
  1565. }
  1566. });
  1567. return true;
  1568. }
  1569. } catch (RuntimeException re) {
  1570. LogUtil.errorLogInfo("", TAG, re);
  1571. } catch (Exception e) {
  1572. Log.e(TAG, "[Exception] send_check_sip_activation_request(String strTargetIP, String strMessage)");
  1573. //e.printStackTrace();
  1574. LogUtil.errorLogInfo("", TAG, e);
  1575. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1576. }
  1577. return false;
  1578. }
  1579. private boolean send_start_talking_request_mobile(String strTargetIP) {
  1580. try {
  1581. LOG_INFO("[send_start_talking_request_mobile] strTargetIP() "+ strTargetIP);
  1582. Request_start_talking request_start_talking = new Request_start_talking(mContext);
  1583. if (request_start_talking.send_start_talking(strTargetIP, null)) {
  1584. request_start_talking.setResultCtrl(new RetProci() {
  1585. @Override
  1586. public void ProcSuccess() {
  1587. LOG_INFO("[send_start_talking_request_mobile] ProcSuccess()");
  1588. //((MainActivity) mContext).startLobbyCall();
  1589. //MainActivity.mCallController.mSIPInterface.requestCallForwardToStun(MainActivity.mCallController.makeCallForwarInfo(strTargetIP));
  1590. }
  1591. @Override
  1592. public void ProcError() {
  1593. LOG_INFO("[send_start_talking_request_mobile] ProcError()");
  1594. //MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1595. }
  1596. @Override
  1597. public void ProcDoing() {
  1598. LOG_INFO("[send_start_talking_request_mobile] ProcDoing()");
  1599. }
  1600. });
  1601. return true;
  1602. }
  1603. } catch (Exception e) {
  1604. Log.e(TAG, "[Exception] send_check_sip_activation_request(String strTargetIP, String strMessage)");
  1605. e.printStackTrace();
  1606. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1607. }
  1608. return false;
  1609. }
  1610. private boolean send_start_talking_request(String strTargetIP) {
  1611. try {
  1612. LOG_INFO("[send_start_talking_request] strTargetIP() "+ strTargetIP);
  1613. Request_start_talking request_start_talking = new Request_start_talking(mContext);
  1614. if (request_start_talking.send_start_talking(strTargetIP, null)) {
  1615. request_start_talking.setResultCtrl(new RetProci() {
  1616. @Override
  1617. public void ProcSuccess() {
  1618. LOG_INFO("[send_start_talking_request] ProcSuccess()");
  1619. ((MainActivity) mContext).startLobbyCall();
  1620. //MainActivity.mCallController.mSIPInterface.requestCallForwardToStun(MainActivity.mCallController.makeCallForwarInfo(strTargetIP));
  1621. }
  1622. @Override
  1623. public void ProcError() {
  1624. LOG_INFO("[send_start_talking_request] ProcError()");
  1625. ((MainActivity) mContext).startLobbyCall();
  1626. //MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1627. }
  1628. @Override
  1629. public void ProcDoing() {
  1630. LOG_INFO("[send_start_talking_request] ProcDoing()");
  1631. }
  1632. });
  1633. return true;
  1634. }
  1635. } catch (Exception e) {
  1636. Log.e(TAG, "[Exception] send_check_sip_activation_request(String strTargetIP, String strMessage)");
  1637. e.printStackTrace();
  1638. MainActivity.mCallController.mSIPInterface.cancelCallForwardToStun();
  1639. }
  1640. return false;
  1641. }
  1642. // 안심통화 관련
  1643. int nSelectedFilter = 0; // 0: 변조안함 / 1~4: 필터 No
  1644. boolean bReliefCallInit = false;
  1645. private void selectReliefCallFilter(int nID) {
  1646. try {
  1647. int nFilter = nID - ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.RELIEF_FILTER_01 + 1; // 현재 선택한 필터
  1648. if (nFilter < 0) nFilter = 0;
  1649. Log.d(TAG, "[selectReliefCallFilter] nID [" + nID + "], nFilter [" + nFilter + "], nSelectedFilter [" + nSelectedFilter + "]");
  1650. if (nFilter == nSelectedFilter) {
  1651. nSelectedFilter = 0;
  1652. MainActivity.m_iReliefCallNum = nSelectedFilter;
  1653. } else {
  1654. nSelectedFilter = nFilter; // 기존 선택했던 필터
  1655. MainActivity.m_iReliefCallNum = nSelectedFilter;
  1656. LOG("[selectReliefCallFilter] nSelectedFilter [" + nSelectedFilter + "], bReliefCallInit [" + bReliefCallInit + "]");
  1657. // 안심통화 초기화
  1658. if (nSelectedFilter > 0) {
  1659. if (!bReliefCallInit) {
  1660. if (MainActivity.mReliefCallIF != null) {
  1661. Log.d(TAG, "[selectReliefCallFilter] VRSoftInit = " + MainActivity.mReliefCallIF.VRSoftInit(Declare.RELIEFCALL.RELIEFCALL_CERTIFYNAME, Declare.RELIEFCALL.RELIEFCALL_BUFFERSIZE_LOBBY));
  1662. bReliefCallInit = true;
  1663. }
  1664. }
  1665. }
  1666. }
  1667. sendHandlerMsg(HANDLERMSG.SEND_BROADCAST_FILTER, 0, 0, null); // BR
  1668. } catch (RuntimeException re) {
  1669. LogUtil.errorLogInfo("", TAG, re);
  1670. } catch (Exception e) {
  1671. Log.e(TAG, "[Exception] selectReliefCallFilter(int nID)");
  1672. //e.printStackTrace();
  1673. LogUtil.errorLogInfo("", TAG, e);
  1674. }
  1675. }
  1676. private void setFilterBTNStatus(int nFilter) {
  1677. try {
  1678. Log.d(TAG, "[setFilterBTNStatus] nFilter [" + nFilter + "]");
  1679. switch (nFilter) {
  1680. case 1:
  1681. BTN_RELIEF_FILTER_01.setButtonRearImage();
  1682. BTN_RELIEF_FILTER_02.setButtonFrontImage();
  1683. // BTN_RELIEF_FILTER_03.setButtonFrontImage();
  1684. // BTN_RELIEF_FILTER_04.setButtonFrontImage();
  1685. break;
  1686. case 2:
  1687. BTN_RELIEF_FILTER_01.setButtonFrontImage();
  1688. BTN_RELIEF_FILTER_02.setButtonRearImage();
  1689. // BTN_RELIEF_FILTER_03.setButtonFrontImage();
  1690. // BTN_RELIEF_FILTER_04.setButtonFrontImage();
  1691. break;
  1692. case 3:
  1693. BTN_RELIEF_FILTER_01.setButtonFrontImage();
  1694. BTN_RELIEF_FILTER_02.setButtonFrontImage();
  1695. // BTN_RELIEF_FILTER_03.setButtonRearImage();
  1696. // BTN_RELIEF_FILTER_04.setButtonFrontImage();
  1697. break;
  1698. case 4:
  1699. BTN_RELIEF_FILTER_01.setButtonFrontImage();
  1700. BTN_RELIEF_FILTER_02.setButtonFrontImage();
  1701. // BTN_RELIEF_FILTER_03.setButtonFrontImage();
  1702. // BTN_RELIEF_FILTER_04.setButtonRearImage();
  1703. break;
  1704. default:
  1705. BTN_RELIEF_FILTER_01.setButtonFrontImage();
  1706. BTN_RELIEF_FILTER_02.setButtonFrontImage();
  1707. // BTN_RELIEF_FILTER_03.setButtonFrontImage();
  1708. // BTN_RELIEF_FILTER_04.setButtonFrontImage();
  1709. break;
  1710. }
  1711. } catch (RuntimeException re) {
  1712. LogUtil.errorLogInfo("", TAG, re);
  1713. } catch (Exception e) {
  1714. Log.e(TAG, "[Exception] setFilterBTNStatus()");
  1715. //e.printStackTrace();
  1716. LogUtil.errorLogInfo("", TAG, e);
  1717. }
  1718. }
  1719. // 음량
  1720. SeekBar.OnSeekBarChangeListener mOnVolumeChangeListener = new SeekBar.OnSeekBarChangeListener() {
  1721. @Override
  1722. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  1723. int nCtrlLevel = getCtrlLevel(progress);
  1724. if (nCurrentVolume != nCtrlLevel) {
  1725. nCurrentVolume = nCtrlLevel;
  1726. showVolume(nCurrentVolume);
  1727. // ctrlVolume(false);
  1728. }
  1729. }
  1730. @Override
  1731. public void onStartTrackingTouch(SeekBar seekBar) {
  1732. }
  1733. @Override
  1734. public void onStopTrackingTouch(SeekBar seekBar) {
  1735. // Log.d(TAG, "[onStopTrackingTouch] nCurrentVolume:" + nCurrentVolume);
  1736. nCurrentVolume = getCtrlLevel(seekBar.getProgress());
  1737. ctrlVolume(true);
  1738. }
  1739. };
  1740. private void getVolume() {
  1741. try {
  1742. nCurrentVolume = Global.getLobbyVolume();
  1743. } catch (RuntimeException re) {
  1744. LogUtil.errorLogInfo("", TAG, re);
  1745. } catch (Exception e) {
  1746. Log.e(TAG, "[Exception] getVolume()");
  1747. //e.printStackTrace();
  1748. LogUtil.errorLogInfo("", TAG, e);
  1749. }
  1750. }
  1751. private void setVolume(int nValue) {
  1752. try {
  1753. if (!Global.setLobbyVolume(nValue)) {
  1754. LOG_WARN("[setVolume] Fail to set volume!! nValue [" + nValue + "]");
  1755. }
  1756. } catch (RuntimeException re) {
  1757. LogUtil.errorLogInfo("", TAG, re);
  1758. } catch (Exception e) {
  1759. Log.e(TAG, "[Exception] setVolume()");
  1760. //e.printStackTrace();
  1761. LogUtil.errorLogInfo("", TAG, e);
  1762. }
  1763. }
  1764. private void ctrlVolume(boolean bSave) {
  1765. try {
  1766. if (bSave) setVolume(nCurrentVolume);
  1767. CALLSTATUS eCallStatus = MainActivity.mCallController.mCallInfo.getLOBBY();
  1768. LOG("[ctrlVolume] eCallStatus [" + eCallStatus + "]");
  1769. if (eCallStatus == CALLSTATUS.TALKING) {
  1770. Global.setV40WallPadVolume_LOBBY(nCurrentVolume);
  1771. }
  1772. } catch (RuntimeException re) {
  1773. LogUtil.errorLogInfo("", TAG, re);
  1774. } catch (Exception e) {
  1775. Log.e(TAG, "[Exception] ctrlVolume()");
  1776. //e.printStackTrace();
  1777. LogUtil.errorLogInfo("", TAG, e);
  1778. }
  1779. }
  1780. private void showVolume(int nValue) {
  1781. try {
  1782. // Log.d(TAG, "[showVolume] nValue [" + nValue + "]");
  1783. if (TXT_VOLUME_LEVEL != null) TXT_VOLUME_LEVEL.setText(Integer.toString(nValue));
  1784. else Log.w(TAG, "[showVolume] TXT_VOLUME_LEVEL is null!!");
  1785. } catch (RuntimeException re) {
  1786. LogUtil.errorLogInfo("", TAG, re);
  1787. } catch (Exception e) {
  1788. Log.e(TAG, "[Exception] showVolume(nValue)");
  1789. }
  1790. }
  1791. private void drawVolume() {
  1792. try {
  1793. if (SEEKBAR_VOLUME != null) {
  1794. SEEKBAR_VOLUME.setProgress(ctrlSeekBarThumb(nCurrentVolume));
  1795. showVolume(nCurrentVolume);
  1796. }
  1797. else Log.w(TAG, "[drawVolume] SEEKBAR_VOLUME is null!!");
  1798. } catch (RuntimeException re) {
  1799. LogUtil.errorLogInfo("", TAG, re);
  1800. } catch (Exception e) {
  1801. Log.e(TAG, "[Exception] drawVolume()");
  1802. //e.printStackTrace();
  1803. LogUtil.errorLogInfo("", TAG, e);
  1804. }
  1805. }
  1806. private int getCtrlLevel(int nValue) {
  1807. try {
  1808. // Log.d(TAG, "[getCtrlLevel] nValue: " + nValue);
  1809. if (nValue == 0) return 1;
  1810. int result = nValue / 10;
  1811. if ((nValue % 10) != 0) result++;
  1812. // Log.d(TAG, "[getCtrlLevel] result: " + result);
  1813. return result;
  1814. } catch (RuntimeException re) {
  1815. LogUtil.errorLogInfo("", TAG, re);
  1816. return 1;
  1817. } catch (Exception e) {
  1818. Log.e(TAG, "[Exception] getCtrlLevel(nValue)");
  1819. //e.printStackTrace();
  1820. LogUtil.errorLogInfo("", TAG, e);
  1821. return 1;
  1822. }
  1823. }
  1824. private int ctrlSeekBarThumb(int nValue) {
  1825. try {
  1826. int progress;
  1827. if (nValue == 1) progress = 1;
  1828. else if (nValue == 10) progress = 100;
  1829. else progress = (nValue - 1) * 11;
  1830. return progress;
  1831. } catch (RuntimeException re) {
  1832. LogUtil.errorLogInfo("", TAG, re);
  1833. return 1;
  1834. } catch (Exception e) {
  1835. Log.e(TAG, "[Exception] ctrlSeekBarThumb()");
  1836. //e.printStackTrace();
  1837. LogUtil.errorLogInfo("", TAG, e);
  1838. return 1;
  1839. }
  1840. }
  1841. // LED
  1842. boolean bFlickeringCallLED = false;
  1843. boolean bStatusFlickeringCallLED = false;
  1844. private void runFlickerCallLED() {
  1845. try {
  1846. LOG("[runFlickerCallLED] bFlickeringCallLED [" + bFlickeringCallLED + "]");
  1847. if (!bFlickeringCallLED) {
  1848. bFlickeringCallLED = true;
  1849. sendHandlerMsg(HANDLERMSG.FLICKER_LED_CALL, 0, 0, null);
  1850. }
  1851. } catch (RuntimeException re) {
  1852. LogUtil.errorLogInfo("", TAG, re);
  1853. } catch (Exception e) {
  1854. Log.e(TAG, "[Exception] runFlickerCallLED()");
  1855. //e.printStackTrace();
  1856. LogUtil.errorLogInfo("", TAG, e);
  1857. }
  1858. }
  1859. private void setOnCallLED() {
  1860. try {
  1861. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
  1862. bFlickeringCallLED = false;
  1863. bStatusFlickeringCallLED = true;
  1864. MainActivity.mIOInterface.ctrlWallPadLED_Call(bStatusFlickeringCallLED);
  1865. }
  1866. } catch (RuntimeException re) {
  1867. LogUtil.errorLogInfo("", TAG, re);
  1868. } catch (Exception e) {
  1869. Log.e(TAG, "[Exception] setOnCallLED()");
  1870. //e.printStackTrace();
  1871. LogUtil.errorLogInfo("", TAG, e);
  1872. }
  1873. }
  1874. private void setOffCallLED() {
  1875. try {
  1876. LOG("[setOffCallLED] bStatusFlickeringCallLED [" + bStatusFlickeringCallLED + "]");
  1877. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
  1878. bFlickeringCallLED = false;
  1879. if (bStatusFlickeringCallLED) {
  1880. bStatusFlickeringCallLED = false;
  1881. MainActivity.mIOInterface.ctrlWallPadLED_Call(bStatusFlickeringCallLED);
  1882. }
  1883. }
  1884. } catch (RuntimeException re) {
  1885. LogUtil.errorLogInfo("", TAG, re);
  1886. } catch (Exception e) {
  1887. Log.e(TAG, "[Exception] setOffCallLED()");
  1888. //e.printStackTrace();
  1889. LogUtil.errorLogInfo("", TAG, e);
  1890. }
  1891. }
  1892. private void ctrlCallLED() {
  1893. try {
  1894. LOG_INFO("[ctrlCallLED] bFlickeringCallLED [" + bFlickeringCallLED + "], bStatusFlickeringCallLED [" + bStatusFlickeringCallLED + "]");
  1895. LOG_INFO("[ctrlCallLED] MainActivity.mCallController.mCallInfo.getLOBBY() [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
  1896. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
  1897. if ((MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLING) || (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED)) {
  1898. if (bFlickeringCallLED) {
  1899. MainActivity.mIOInterface.ctrlWallPadLED_Call(bStatusFlickeringCallLED);
  1900. bStatusFlickeringCallLED = !bStatusFlickeringCallLED;
  1901. sendHandlerMsgDelayed(HANDLERMSG.FLICKER_LED_CALL, 0, 0, null, 1000);
  1902. }
  1903. }
  1904. else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1905. bStatusFlickeringCallLED = true;
  1906. MainActivity.mIOInterface.ctrlWallPadLED_Call(bStatusFlickeringCallLED);
  1907. }
  1908. else {
  1909. bStatusFlickeringCallLED = false;
  1910. MainActivity.mIOInterface.ctrlWallPadLED_Call(bStatusFlickeringCallLED);
  1911. LOG_INFO("[ctrlCallLED] bFlickeringCallLED [" + bFlickeringCallLED + "], bStatusFlickeringCallLED [" + bStatusFlickeringCallLED + "]");
  1912. }
  1913. }
  1914. } catch (RuntimeException re) {
  1915. LogUtil.errorLogInfo("", TAG, re);
  1916. } catch (Exception e) {
  1917. Log.e(TAG, "[Exception] ctrlCallLED()");
  1918. //e.printStackTrace();
  1919. LogUtil.errorLogInfo("", TAG, e);
  1920. }
  1921. }
  1922. // Handlersend
  1923. public final class HANDLERMSG {
  1924. public final static int PROC_ADDCALL = 100;
  1925. public final static int DOOR_OPEN = 110;
  1926. public final static int SAVE_VISITORPICTURE = 120;
  1927. public final static int TAKE_VISITORPICTURE = 125;
  1928. public final static int CALL_FORWARD = 130;
  1929. public final static int ENABLE_SAVE_VISITORPICTURE = 140;
  1930. public final static int FLICKER_LED_CALL = 160;
  1931. public final static int REFRESH_BTNLED_STATUS = 170;
  1932. public final static int SET_BTN_STATUS = 175;
  1933. public final static int ENABLE_TALK_BTN = 176;
  1934. public final static int ENABLE_END_BTN = 177;
  1935. public final static int ENABLE_OPENDOOR_BTN = 178;
  1936. public final static int DO_TALK = 180;
  1937. public final static int OFF_FRONT = 200;
  1938. public final static int SET_VOLUME_TABLE = 300;
  1939. public final static int SEND_BROADCAST_FILTER = 400;
  1940. public final static int HIDE_LOBBYVIDEO = 500;
  1941. }
  1942. public Handler TalkLobbyHandler = new Handler(Looper.getMainLooper()) {
  1943. public void handleMessage(Message msg) {
  1944. LOG("[TalkLobbyHandler] TalkLobbyHandler : what [" + msg.what + "], arg1 [" + msg.arg1 + "], arg2 [" + msg.arg2 + "], obj [" + msg.obj + "]");
  1945. switch (msg.what) {
  1946. case HANDLERMSG.PROC_ADDCALL:
  1947. procAddCall();
  1948. break;
  1949. case HANDLERMSG.DOOR_OPEN:
  1950. doDoorOpen();
  1951. break;
  1952. case HANDLERMSG.SAVE_VISITORPICTURE:
  1953. if (bEnableVisitorPic) startSaveVisitorPicture(CALLTYPE.LOBBY, MainActivity.mCallController.mCallInfo.getLOBBY());
  1954. break;
  1955. case HANDLERMSG.CALL_FORWARD:
  1956. if (bEnableVisitorPic) runCallForward();
  1957. break;
  1958. case HANDLERMSG.ENABLE_SAVE_VISITORPICTURE:
  1959. if (MainActivity.mCallController == null) return;
  1960. if (MainActivity.mCallController.mCallInfo == null) return;
  1961. if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED || MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
  1962. BTN_SAVE_PICTURE.setButtonEventOffDisable();
  1963. }
  1964. break;
  1965. case HANDLERMSG.TAKE_VISITORPICTURE:
  1966. if (bEnableVisitorPic) startTakeVisitorPicture((String) msg.obj);
  1967. break;
  1968. case HANDLERMSG.FLICKER_LED_CALL:
  1969. ctrlCallLED();
  1970. break;
  1971. case HANDLERMSG.DO_TALK:
  1972. doTalk((CALLOWNER) msg.obj);
  1973. break;
  1974. case HANDLERMSG.REFRESH_BTNLED_STATUS:
  1975. setBTNLEDStatus();
  1976. break;
  1977. case HANDLERMSG.SET_BTN_STATUS:
  1978. setBTNStatus();
  1979. break;
  1980. case HANDLERMSG.ENABLE_TALK_BTN:
  1981. enableTalkBTN(true);
  1982. break;
  1983. case HANDLERMSG.ENABLE_END_BTN:
  1984. enableEndBTN(true);
  1985. break;
  1986. case HANDLERMSG.ENABLE_OPENDOOR_BTN:
  1987. enableOpenDoorBTN(true);
  1988. break;
  1989. case HANDLERMSG.OFF_FRONT:
  1990. playFrontCamBell(false);
  1991. break;
  1992. case HANDLERMSG.SET_VOLUME_TABLE:
  1993. Global.setV40WallPadVolume_LOBBY(nCurrentVolume);
  1994. break;
  1995. case HANDLERMSG.SEND_BROADCAST_FILTER:
  1996. // 필터선택하면 BR 전송
  1997. Log.d(TAG, "[TalkLobbyHandler] SEND_BROADCAST_FILTER -> nSelectedFilter [" + nSelectedFilter + "]");
  1998. setFilterBTNStatus(nSelectedFilter);
  1999. sendReliefFilterSelectBR(nSelectedFilter);
  2000. break;
  2001. case HANDLERMSG.HIDE_LOBBYVIDEO:
  2002. if (IMG_VIDEO_MODULE != null) IMG_VIDEO_MODULE.setImageResource(R.drawable.image_lobby);
  2003. if (MainActivity.mIOInterface != null) MainActivity.mIOInterface.ctrlPopupGUI(true);
  2004. doEnd();
  2005. break;
  2006. default:
  2007. break;
  2008. }
  2009. }
  2010. };
  2011. public void sendHandlerMsg(int what, int arg1, int arg2, Object obj) {
  2012. try {
  2013. LOG("[sendHandlerMsg] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], obj [" + obj + "]");
  2014. if(TalkLobbyHandler!=null)
  2015. {
  2016. Message HandleMsg = TalkLobbyHandler.obtainMessage();
  2017. HandleMsg.what = what;
  2018. HandleMsg.arg1 = arg1;
  2019. HandleMsg.arg2 = arg2;
  2020. HandleMsg.obj = obj;
  2021. TalkLobbyHandler.sendMessage(HandleMsg);
  2022. }
  2023. }
  2024. catch (RuntimeException e)
  2025. {
  2026. Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
  2027. //e.printStackTrace();
  2028. LogUtil.errorLogInfo("", TAG, e);
  2029. }
  2030. catch (Exception e) {
  2031. Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
  2032. //e.printStackTrace();
  2033. LogUtil.errorLogInfo("", TAG, e);
  2034. }
  2035. }
  2036. public void sendHandlerMsgDelayed(int what, int arg1, int arg2, Object obj, long delay) {
  2037. try {
  2038. LOG("[sendHandlerMsgDelayed] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], obj [" + obj + "], delay [" + delay + "]");
  2039. if(TalkLobbyHandler!=null)
  2040. {
  2041. Message HandleMsg = TalkLobbyHandler.obtainMessage();
  2042. HandleMsg.what = what;
  2043. HandleMsg.arg1 = arg1;
  2044. HandleMsg.arg2 = arg2;
  2045. HandleMsg.obj = obj;
  2046. TalkLobbyHandler.sendMessageDelayed(HandleMsg, delay);
  2047. }
  2048. }
  2049. catch (RuntimeException r)
  2050. {
  2051. Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
  2052. //e.printStackTrace();
  2053. LogUtil.errorLogInfo("", TAG, r);
  2054. }
  2055. catch (Exception e) {
  2056. Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
  2057. //e.printStackTrace();
  2058. LogUtil.errorLogInfo("", TAG, e);
  2059. }
  2060. }
  2061. private void sendReliefFilterSelectBR(int nSelectedFilter) {
  2062. try {
  2063. Log.i(TAG, "[sendReliefFilterSelectBR] nSelectedFilter = " + nSelectedFilter);
  2064. Intent intent = new Intent();
  2065. intent.setAction(Declare.BR.NOTIFY_CHANGE_LOBBY_FILTER);
  2066. intent.putExtra(Declare.BR.RELIEFCALL_FILTER, nSelectedFilter);
  2067. getContext().sendBroadcast(intent);
  2068. } catch (RuntimeException re) {
  2069. LogUtil.errorLogInfo("", TAG, re);
  2070. } catch (Exception e) {
  2071. Log.e(TAG, "[Exception] sendReliefFilterSelectBR(int nSelectedFilter)");
  2072. //e.printStackTrace();
  2073. LogUtil.errorLogInfo("", TAG, e);
  2074. }
  2075. }
  2076. int nCheckCnt1 = 0, nCheckCnt2 = 0;
  2077. protected Handler mPathCheckHandler = new Handler() {
  2078. @Override
  2079. public void handleMessage(Message msg) {
  2080. // Log.d(TAG, "[mPathCheckHandler.handleMessage]");
  2081. if (msg.what == 0) {
  2082. nCheckCnt1++;
  2083. if (nCheckCnt1 > 200) {
  2084. mPathCheckHandler.removeMessages(0);
  2085. mPathCheckHandler.removeMessages(1);
  2086. } else {
  2087. if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
  2088. if (MainActivity.mCallController.getTalkPath() == CALLPATH.MOIP_IHND101_LOBBY)
  2089. mPathCheckHandler.sendEmptyMessageDelayed(1, 50);
  2090. else mPathCheckHandler.sendEmptyMessageDelayed(0, 50);
  2091. } else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
  2092. if (MainActivity.mCallController.getTalkPath() == CALLPATH.MOIP_IHN1010_LOBBY)
  2093. mPathCheckHandler.sendEmptyMessageDelayed(1, 50);
  2094. else mPathCheckHandler.sendEmptyMessageDelayed(0, 50);
  2095. }
  2096. }
  2097. } else if (msg.what == 1) {
  2098. Log.d(TAG, "[mPathCheckHandler.handleMessage] Handler finish!!");
  2099. sendHandlerMsg(HANDLERMSG.SET_VOLUME_TABLE, 0, 0, null);
  2100. } else if (msg.what == 2) {
  2101. nCheckCnt2++;
  2102. if (nCheckCnt2 > 200) {
  2103. mPathCheckHandler.removeMessages(2);
  2104. mPathCheckHandler.removeMessages(3);
  2105. }
  2106. else {
  2107. if (MainActivity.mCallController.getTalkPath() == CALLPATH.NORMAL) mPathCheckHandler.sendEmptyMessageDelayed(3, 100);
  2108. else mPathCheckHandler.sendEmptyMessageDelayed(2, 50);
  2109. }
  2110. }
  2111. else if (msg.what == 3) {
  2112. //Global.stopMelodyRepeat();
  2113. Log.d(TAG, "[mPathCheckHandler.handleMessage] Handler finish!! PATH [NORMAL] -> play dooropen ment!");
  2114. int nMentDuration = MainActivity.mSound.PlayMent(SND.mode.OPENDOOR);
  2115. try {
  2116. Log.d(TAG, "[mPathCheckHandler.handleMessage] nMentDuration -> " + nMentDuration);
  2117. Thread.sleep(nMentDuration + 1500);
  2118. } catch (InterruptedException e) {
  2119. //e.printStackTrace();
  2120. LogUtil.errorLogInfo("", TAG, e);
  2121. }
  2122. MainActivity.mIOInterface.setMICGain(nCurrentMicGain);
  2123. }
  2124. }
  2125. };
  2126. private void finishWallpadCallApp() {
  2127. try {
  2128. doEnd();
  2129. if (MainActivity.mCallController.mCallInfo.getPSTNCallHold()) return;
  2130. ((MainActivity) mContext).finishWallPadCall();
  2131. } catch (RuntimeException re) {
  2132. LogUtil.errorLogInfo("", TAG, re);
  2133. } catch (Exception e) {
  2134. Log.e(TAG, "[Exception] finishWallpadCallApp()");
  2135. //e.printStackTrace();
  2136. LogUtil.errorLogInfo("", TAG, e);
  2137. }
  2138. }
  2139. private void hideLobbyVideo() {
  2140. try {
  2141. Log.i(TAG, "[hideLobbyVideo]");
  2142. class hideLobbyVideo extends Thread {
  2143. @Override
  2144. public void run() {
  2145. super.run();
  2146. try {
  2147. Thread.sleep(2000);
  2148. } catch (InterruptedException e) {
  2149. //e.printStackTrace();
  2150. LogUtil.errorLogInfo("", TAG, e);
  2151. }
  2152. sendHandlerMsg(HANDLERMSG.HIDE_LOBBYVIDEO, 0, 0, null);
  2153. }
  2154. }
  2155. hideLobbyVideo th_hideLobbyVideo = new hideLobbyVideo();
  2156. th_hideLobbyVideo.start();
  2157. } catch (RuntimeException re) {
  2158. LogUtil.errorLogInfo("", TAG, re);
  2159. } catch (Exception e) {
  2160. Log.e(TAG, "[Exception] hideLobbyVideo");
  2161. //e.printStackTrace();
  2162. LogUtil.errorLogInfo("", TAG, e);
  2163. }
  2164. }
  2165. }