public void handleMessage(Message msg) {
   switch (msg.what) {
     case 1:
       if (timer != null) {
         updateUI(false);
       }
       break;
   }
   super.handleMessage(msg);
 }
        @Override
        public void handleMessage(Message msg) {
          super.handleMessage(msg);

          ERequestState reason = ERequestState.Failed;
          // 获取通话ID
          if (msg.obj instanceof ERequestState) {
            reason = (ERequestState) msg.obj;
          }

          switch (msg.what) {
              // receive a new voice mail messages...
            case VoiceHelper.WHAT_ON_VERIFY_CODE:
              if (reason == ERequestState.Success) {
                Toast.makeText(
                        VoiceVerificationCodeActivity.this, "获取验证码成功,请等待系统来电", Toast.LENGTH_SHORT)
                    .show();
                mCodeBtn.setEnabled(false);
                new CountDownTimer(30000, 1000) {

                  @Override
                  public void onTick(long millisUntilFinished) {
                    mCodeBtn.setText(
                        getString(R.string.str_verify_code_timer, millisUntilFinished / 1000));
                  }

                  @Override
                  public void onFinish() {
                    mCodeBtn.setText(getString(R.string.str_get_verify_code));
                    mCodeBtn.setEnabled(true);
                  }
                }.start();
              } else {
                Toast.makeText(
                        VoiceVerificationCodeActivity.this, "获取验证码失败,请重试", Toast.LENGTH_SHORT)
                    .show();
              }
              break;

            default:
              break;
          }
        }
        @Override
        public void handleMessage(Message msg) {
          super.handleMessage(msg);
          String callid = null;
          Reason reason;
          Bundle b = null;
          // 获取通话ID
          if (msg.obj instanceof String) {
            callid = (String) msg.obj;
          } else if (msg.obj instanceof Bundle) {
            b = (Bundle) msg.obj;
            callid = b.getString(Device.CALLID);
          }
          switch (msg.what) {
            case VoiceHelper.WHAT_ON_CALL_ALERTING:
              // 连接到对端用户,播放铃音
              Log4Util.d(VoiceHelper.DEMO_TAG, "[VideoActivity] handleMessage: voip alerting!!");
              if (callid != null && mCurrentCallId.equals(callid)) { // 等待对方接受邀请...
                mVideoCallTips.setText(getString(R.string.str_tips_wait_invited));
              }
              break;
            case VoiceHelper.WHAT_ON_CALL_PROCEEDING:
              // 连接到服务器
              Log4Util.d(
                  VoiceHelper.DEMO_TAG, "[VideoActivity] handleMessage: voip on call proceeding!!");
              if (callid != null && mCurrentCallId.equals(callid)) {
                mVideoCallTips.setText(getString(R.string.voip_call_connect));
              }
              break;
            case VoiceHelper.WHAT_ON_CALL_ANSWERED:
              // 对端应答
              Log4Util.d(
                  VoiceHelper.DEMO_TAG, "[VideoActivity] handleMessage: voip on call answered!!");
              if (callid != null && mCurrentCallId.equals(callid) && !isConnect) {
                initResVideoSuccess();
                if (mHandler != null) {
                  //
                  // mHandler.sendMessage(mHandler.obtainMessage(WHAT_ON_CODE_CALL_STATUS));
                }
              }
              break;

            case VoiceHelper.WHAT_ON_CALL_RELEASED:
              // 远端挂断,本地挂断在onClick中处理
              Log4Util.d(
                  VoiceHelper.DEMO_TAG, "[VideoActivity] handleMessage: voip on call released!!");
              if (callid != null && mCurrentCallId.equals(callid) && !isSelfReject) {
                finishCalling();
              }
              break;
            case VoiceHelper.WHAT_ON_CALL_MAKECALL_FAILED:
              // 发起通话失败
              Log4Util.d(
                  VoiceHelper.DEMO_TAG,
                  "[VideoActivity] handleMessage: voip on call makecall failed!!");
              if (b != null && b.get(Device.REASON) != null) {
                reason = (Reason) b.get(Device.REASON);
                if (callid != null && mCurrentCallId.equals(callid) && !isSelfReject) {
                  finishCalling(reason);
                }
              }
              break;
            case WHAT_ON_CODE_CALL_STATUS:
              CallStatisticsInfo callStatistics =
                  VoiceHelper.getInstance().getDevice().getCallStatistics(Device.CallType.VIDEO);
              if (callStatistics != null) {
                int fractionLost = callStatistics.getFractionLost();
                int rttMs = callStatistics.getRttMs();
                mCallStatus.setText(getString(R.string.str_call_status, fractionLost, rttMs));
              }
              if (isConnect && mHandler != null) {
                Message callMessage = mHandler.obtainMessage(WHAT_ON_CODE_CALL_STATUS);
                mHandler.sendMessageDelayed(callMessage, 4000);
              }
              break;
            default:
              break;
          }
        }