コード例 #1
0
ファイル: SipService.java プロジェクト: BvbKoala/SourceCode
    public void setListener(ISipSessionListener listener) {
      synchronized (SipService.this) {
        mProxy.setListener(listener);

        try {
          int state = (mSession == null) ? SipSession.State.READY_TO_CALL : mSession.getState();
          if ((state == SipSession.State.REGISTERING)
              || (state == SipSession.State.DEREGISTERING)) {
            mProxy.onRegistering(mSession);
          } else if (mRegistered) {
            int duration = (int) (mExpiryTime - SystemClock.elapsedRealtime());
            mProxy.onRegistrationDone(mSession, duration);
          } else if (mErrorCode != SipErrorCode.NO_ERROR) {
            if (mErrorCode == SipErrorCode.TIME_OUT) {
              mProxy.onRegistrationTimeout(mSession);
            } else {
              mProxy.onRegistrationFailed(mSession, mErrorCode, mErrorMessage);
            }
          } else if (!mConnected) {
            mProxy.onRegistrationFailed(
                mSession, SipErrorCode.DATA_CONNECTION_LOST, "no data connection");
          } else if (!mRunning) {
            mProxy.onRegistrationFailed(
                mSession, SipErrorCode.CLIENT_ERROR, "registration not running");
          } else {
            mProxy.onRegistrationFailed(mSession, SipErrorCode.IN_PROGRESS, String.valueOf(state));
          }
        } catch (Throwable t) {
          Log.w(TAG, "setListener(): " + t);
        }
      }
    }