コード例 #1
0
        @SuppressWarnings("unchecked")
        @Override
        public void handleMessage(Message msg) {
          super.handleMessage(msg);
          Bundle b = null;
          int reason = 0;
          ChatroomMsg crmsg = null;
          ArrayList<ChatroomMember> members = null;
          if (msg.obj instanceof Bundle) {
            b = (Bundle) msg.obj;
            reason = b.getInt(Device.REASON);
            if (b.getString(Device.CONFNO) != null) mCurrentRoomNum = b.getString(Device.CONFNO);

            if (b.getSerializable(Device.CHATROOM_MSG) != null)
              crmsg = (ChatroomMsg) b.getSerializable(Device.CHATROOM_MSG);

            if (b.getSerializable(Device.CHATROOM_MEMBERS) != null)
              members = (ArrayList<ChatroomMember>) b.getSerializable(Device.CHATROOM_MEMBERS);
          }

          switch (msg.what) {
            case VoiceHelper.WHAT_ON_CHATROOM:
              if (reason == 0) {
                synchronized (mChatRoomHandler) {
                  this.notifyAll();
                }
                // join chatroom success ..
                VoiceHelper.getInstance().getDevice().enableLoudsSpeaker(true);
                VoiceHelper.getInstance().getDevice().queryMembersWithChatroom(mCurrentRoomNum);
                mNoticeTips.setText(
                    CCPConfig.VoIP_ID + getString(R.string.str_join_chatroom_success));

                isJion = true;
                new Thread(CenterAnimRunnable).start();

                if (modeType == ChatRoomActivity.MODE_CHATROOM_INITIATED_INTERCOM) {
                  Chatroom chatRoomInfo = new Chatroom();
                  chatRoomInfo.setCreator(CCPConfig.VoIP_ID);
                  chatRoomInfo.setJoined("1");
                  chatRoomInfo.setRoomNo(mCurrentRoomNum);
                  chatRoomInfo.setRoomName(getActivityTitle());
                  chatRoomInfo.setSquare("8");
                  chatRoomInfo.setValidate("0");
                  Intent intent = new Intent(VoiceHelper.INTENT_CHAT_ROOM_RECIVE);
                  intent.putExtra("ChatRoomInfo", chatRoomInfo);
                  sendBroadcast(intent);
                }
              } else {
                //  failed ..
                isJion = false;
                Log4Util.d(
                    VoiceHelper.DEMO_TAG,
                    "[InterPhoneRoomActivity] handleMessage: Sorry ,invite member inter phone failed ...");
                VoiceHelper.getInstance().getDevice().exitChatroom();
                VoiceApplication.getInstance()
                    .showToast(getString(R.string.str_join_chatroom_failed, reason));
                finish();
              }
              break;
            case VoiceHelper.WHAT_ON_CHATROOM_INVITE:
              if (reason == 0) {
                // invite chatroom success ..
                Toast.makeText(
                        ChatRoomActivity.this,
                        R.string.toast_invite_join_room_success,
                        Toast.LENGTH_SHORT)
                    .show();
              } else {
                //  failed ..
                Toast.makeText(
                        ChatRoomActivity.this,
                        getString(R.string.toast_invite_join_room_failed, reason),
                        Toast.LENGTH_SHORT)
                    .show();
              }

              Message obtainMessage =
                  mChatRoomHandler.obtainMessage(VoiceHelper.WHAT_ON_CHATROOMING);
              mChatRoomHandler.sendMessageDelayed(obtainMessage, 2000);

              break;
            case VoiceHelper.WHAT_ON_CHATROOM_MEMBERS:
              if (members != null) {
                if (mCRoomMembers == null) {
                  mCRoomMembers = new ArrayList<ChatroomMember>();
                }
                mCRoomMembers.clear();
                for (ChatroomMember i : members) {
                  if (i.getNumber().equals(CCPConfig.VoIP_ID)) {
                    mCRoomMembers.add(0, i);
                  } else {
                    mCRoomMembers.add(i);
                  }
                }
                mPersonCount.setText(members.size() + "");
                initChatRoomListView(mCRoomMembers);
              }
              break;
            case VoiceHelper.WHAT_ON_CHATROOM_SIP_MESSAGE:
              try {
                if (crmsg != null) {
                  if (crmsg instanceof ChatroomJoinMsg) {
                    ChatroomJoinMsg crj = (ChatroomJoinMsg) crmsg;
                    if (mCRoomMembers != null) {
                      StringBuilder builder = new StringBuilder();
                      String[] whos = crj.getWhos();
                      for (int i = 0; i < whos.length; i++) {
                        builder.append(whos[i]).append(",");

                        //
                        boolean isHas = false;
                        for (ChatroomMember cm : mCRoomMembers) {
                          if (cm.getNumber().equals(whos[i])) {
                            isHas = true;
                            break;
                          }
                        }
                        if (!isHas) {
                          mCRoomMembers.add(new ChatroomMember(whos[i], "0"));
                        }
                      }

                      String joinV = builder.toString();
                      if (joinV != null && joinV.length() > 0) {
                        joinV = joinV.substring(0, joinV.length() - 1);
                      }
                      mNoticeTips.setText(getString(R.string.str_chatroom_join, joinV));
                      initChatRoomListView(mCRoomMembers);
                    }
                  } else if (crmsg instanceof ChatroomExitMsg) {
                    ChatroomExitMsg cre = (ChatroomExitMsg) crmsg;
                    if (mCRoomMembers != null) {
                      StringBuilder builder = new StringBuilder();
                      ArrayList<ChatroomMember> mExitMember = new ArrayList<ChatroomMember>();
                      String[] whos = cre.getWhos();
                      for (int i = 0; i < whos.length; i++) {
                        builder.append(whos[i]).append(",");
                        for (ChatroomMember eMember : mCRoomMembers) {
                          if (eMember.getNumber().equals(whos[i])) {
                            mExitMember.add(eMember);
                            break;
                          }
                        }
                      }

                      mCRoomMembers.removeAll(mExitMember);
                      initChatRoomListView(mCRoomMembers);
                      String joinV = builder.toString();
                      if (joinV != null && joinV.length() > 0) {
                        joinV = joinV.substring(0, joinV.length() - 1);
                      }
                      mNoticeTips.setText(getString(R.string.str_chatroom_exit, joinV));
                    }
                  } else if (crmsg instanceof ChatroomDismissMsg) {
                    ChatroomDismissMsg dismissMsg = (ChatroomDismissMsg) crmsg;
                    if (dismissMsg.getRoomNo().equals(mCurrentRoomNum)) {
                      showAlertTipsDialog(
                          DIALOG_SHOW_KEY_DISSMISS_CHATROOM,
                          getString(R.string.dialog_title_be_dissmiss_chatroom),
                          getString(R.string.dialog_message_be_dissmiss_chatroom),
                          getString(R.string.dialog_btn),
                          null);
                    }
                  } else if (crmsg instanceof ChatroomRemoveMemberMsg) {
                    ChatroomRemoveMemberMsg crRemoveMemberMsg = (ChatroomRemoveMemberMsg) crmsg;
                    if (CCPConfig.VoIP_ID.equals(crRemoveMemberMsg.getWho())
                        && mCurrentRoomNum.equals(crRemoveMemberMsg.getRoomNo())) {
                      // if sel..
                      showAlertTipsDialog(
                          DIALOG_SHOW_KEY_REMOVE_CHATROOM,
                          getString(R.string.dialog_title_be_kick_chatroom),
                          getString(R.string.dialog_message_be_kick_chatroom),
                          getString(R.string.dialog_btn),
                          null);
                    } else {
                      mNoticeTips.setText(
                          getString(R.string.str_chatroom_kick, crRemoveMemberMsg.getWho()));
                      VoiceHelper.getInstance()
                          .getDevice()
                          .queryMembersWithChatroom(mCurrentRoomNum);
                    }
                  }
                }
              } catch (Exception e) {
                e.printStackTrace();
              }
              break;

            case VoiceHelper.WHAT_ON_MIKE_ANIM:
              int abs = randomNum(6);
              initBottomStatus(abs);
              break;

            case VoiceHelper.WHAT_ON_CNETER_ANIM:
              initCenterStatus(15);
              break;
            case VoiceHelper.WHAT_ON_CHATROOMING:
              mNoticeTips.setText(R.string.top_tips_chatroom_ing);
              break;
            default:
              break;
          }
        }