public static boolean canECT(CallManager cm) {
    boolean retval = false;

    final boolean hasActiveFgCall = cm.hasActiveFgCall();
    final boolean hasActiveBgCall = cm.hasActiveBgCall();
    final boolean hasActiveRingingCall = cm.hasActiveRingingCall();

    Call fgCall = null;
    Call bgCall = null;

    DualTalkUtils dt = DualTalkUtils.getInstance();
    if (DualTalkUtils.isSupportDualTalk() && dt != null && dt.isDualTalkMultipleHoldCase()) {
      fgCall = dt.getActiveFgCall();
      bgCall = dt.getFirstActiveBgCall();
    } else {
      fgCall = cm.getActiveFgCall();
      bgCall = cm.getFirstActiveBgCall();
    }

    if (hasActiveRingingCall) {
      retval = false;
      return retval;
    }

    if (hasActiveFgCall && hasActiveBgCall) {
      final boolean isFgSipPhone =
          fgCall.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_SIP;
      final boolean isBgSipPhone =
          bgCall.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_SIP;
      if (!isFgSipPhone && !isBgSipPhone && (fgCall.getPhone() == bgCall.getPhone())) {
        retval = true;
      }
    }

    return retval;
  }