logo

ISH QIDIRISH ILOVASI.

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

665.763671875 KB
ISH QIDIRI SH ILOVA SI.
MUNDARIJA
I. KIRISH……………………...…………………………………………….…...3
II. NAZARIY QISM...…………………………………………………………...4
1 .”Mobil   ilovalar   yaratish   texnologiyasi”   fanining   maqsadi   va   umumiy
ma'lumotlar……………………………………………………………………… 4
2 . Ish qidirish ilovasining ahamiyati va maqsadi………………….……………... 5
III. ASOSIY QISM………………………………………………………………6
1 .“Ish   qidirish   ilovasi”   mobil   ilovasining   mantiqiy   strukturasi   va   uni
shakllantirish……………………………………………………………………... 6
2 .“Ish   qidirish   ilovasi”   mobil   ilovasining   ko’rinishi,   ekran   sur’atlari   va   tegishli
dastur kodlari ……………………………………………………………………..7
IV. XULOSA……………………………………………………………………24
V. FOYDALANILGAN ADABIYOTLAR VA MANBALAR………………..25 KIRISH
Bugungi   kunda   yurtimizda   ham   mobil   sanoat   jadallik   bilan   rivojlanmoqda.
Internetdan  foydalanuvchilar   soni  12  milliondan  oshdi,  mobil  qurilmalar,  ayniqsa
smartfon   va   planshetlar   keng   ommalashmoqda.   Tabiiyki,   O‘zbekistonda   ishlab
chiqilgan,   o‘zbek   tilidagi   foydali,   qiziqarli   mobil   ilovalarga   bo‘lgan   talab   ham
ortmoqda.   Mobil   ilova   (inglizcha:   Mobile   app)   —   ma lum   bir   platforma   (iOS,ʼ
Android,   Windows   Phone   va   boshqalar)   uchun   ishlab   chiqilgan   smartfonlar,
planshetlar va boshqa mobil qurilmalarda ishlashga mo ljallangan dastur. Ko pgina	
ʻ ʻ
mobil   ilovalar   qurilmaning   o zida   oldindan   o rnatiladi   yoki   ularni   App   Store,	
ʻ ʻ
Google   Play   va   boshqalar   kabi   onlayn   dastur   do konlaridan   bepul   yoki   pullik	
ʻ
yuklab olish mumkin.
Dastlab, mobil ilovalar elektron pochtani tezda tekshirish uchun ishlatilgan,
ammo   ularning   yuqori   talablari   boshqa   sohalarda   ham   kengayishiga   olib   keldi,
masalan,   mobil   telefon   va   GPS   o yinlari,   suhbatlashish,   video   tomosha   qilish   va	
ʻ
Internetdan foydalanish. Ushbu atama 2007-yildan beri juda mashhur bo lib, 2010-	
ʻ
yilda   Amerika   Dialektik   Jamiyati   tomonidan   „Yil   so zlari“   ro yxatiga   kiritilgan.	
ʻ ʻ
Mobil ilovalar bozori bugungi kunda juda rivojlangan va barqaror o sib bormoqda.	
ʻ
Statista   prognozlariga   ko ra,   2020-yilda   mobil   ilovalar   sanoatining   yillik   yalpi	
ʻ
daromadi   $189   milliarddan   oshadi.   Ish   qidirish   ilovasi   butun   dunyoda   keng
tarqalgan   va  O`zbekistonda  ham  ilovaga   bo`lgan  talab  ortib  bormoqda.   Ilovaning
foydali tomonlari shundan iboratki ish beruvchi odam ham ish izlovchi odam ham
ovoragarchilikka hojat qolmaydi birgina telefon orqali ish joylashi va o`ziga kerak
bo`lgan ishni izlab topishi mumkin bu esa anchagina qulayliklar yaratib bermoqda.
Hozirda   O`zbekistonda   mobil   dasturchilarga   bo`lgan   talab   oshib   bormoqda.
O`zbekistonda hozirda mashxur ish qidiruv ilovalari mavjud.  II. NAZARIY QISM
1. ”Mobil   ilovalar   yaratish   texnologiyasi”   fanining   maqsadi   va   umumiy
ma'lumotlar.
Mobil   ilova   (inglizcha:   Mobile   app)   —   ma lum   bir   platforma   (iOS,   Android,ʼ
Windows Phone va  boshqalar)  uchun ishlab chiqilgan smartfonlar, planshetlar  va
boshqa   mobil   qurilmalarda   ishlashga   mo ljallangan   dastur.   Ko pgina   mobil	
ʻ ʻ
ilovalar   qurilmaning   o zida   oldindan   o rnatiladi   yoki   ularni   App   Store,   Google	
ʻ ʻ
Play va boshqalar kabi onlayn dastur do konlaridan bepul yoki pullik bilan yuklab	
ʻ
olish   mumkin.   Dastlab,   mobil   ilovalar   elektron   pochtani   tezda   tekshirish   uchun
ishlatilgan,   ammo   ularning   yuqori   talablari   boshqa   sohalarda   ham   kengayishiga
olib keldi, masalan, mobil telefon va GPS o yinlari, suhbatlashish, video tomosha	
ʻ
qilish va Internetdan foydalanish. 
Ilova turlari
Mobil saytlar
Veb-ilovalar
Gibrid dasturlar
Mahalliy dasturlar
Mobil   ilovalar   (mobil   ilovalar   sifatida   ham   tanilgan)   -   smartfon   va
planshetlar   kabi   mobil   qurilmalar   uchun   ishlab   chiqilgan   dasturiy   ta'minot.   Ular
mobil qurilmalarni funktsiyali va qiziqarli miniatyura kuchlariga aylantiradi. Ba'zi
qurilmalar   ishlab   chiqaruvchilarining   ayrim   uyali   ilovalari   yoki   ular   bilan
bog'langan   uyali   aloqa   provayderlari   (masalan,   Verizon,   AT   &   T,   T-Mobile   va
boshqalar) bilan oldindan o'rnatilgan bo'ladi, lekin ko'plab ilovalar  qurilmaga xos
ilova   orqali   mavjud   do'konlar.   Mobil   ilovalar   vazifalari:   Ushbu   ilovalarning
maqsadlari   o'yin-kulgidan,   mahsuldorlikdan   va   o'yin-kulgidan   o'yin-kulgi,   sport,
fitnes   va   boshqa   har   qanday   odamni   tasavvur   qilish   uchun   gamutni   boshqaradi.
Ijtimoiy media  -  mobil  ilovalarni   ishlab  chiqish  va qabul   qilishning eng  mashhur
yo'nalishlaridan biri. Aslida, Facebook barcha platformalarda 2017-yilda eng keng
tarqalgan dastur hisoblanadi. Ko'pgina onlayn ob'ektlar mobil veb-saytlar va mobil
ilovalarga ega. Umuman olganda, farq bir maqsadga qaratilgan: App odatda mobil veb-saytga qaraganda kichikroq bo'ladi, ko'proq interaktivlik taklif qiladi va mobil
qurilmada ishlatish oson va intuitiv ravishda yanada aniqroq ma'lumotlarni taqdim
etadi.   Operatsion   tizim   mosligi:   Mobil   ilovalarni   ishlab   chiquvchi   ishlaydigan
operatsion tizim uchun maxsus dastur yaratadi. Masalan, iPad uchun mobil ilovalar
Apple   iOS-da   ishlaydi,   ammo   Google   Android   emas.   Apple   ilovasi   Android
telefonida   ishlamaydi   va   aksincha.   Ko'pincha,   ishlab   chiquvchilar   har   birining
versiyasini yaratadilar; Masalan, Apple do'konidagi mobil ilova Google Play-ning
hamkasbiga   ega   bo'lishi   mumkin.   Mobil   ilovalar   "Android"   dan   qanday   farq
qiladi?   Muntazam   Ilovalar   Ko'pgina   mobil   ilovalar   ish   stoli   kompyuterlarda
ishlashga   mo'ljallangan   tegishli   dasturlarga   ega.   Mobil   ilovalar   har   qanday
cheklovlar   bilan   ishlashga   moslashgan   bo'lsa-da,   ularning   ish   stollari   uchun
mosligi   bor.   Mobil   qurilmalarda   ekranning   kattaligi,   xotira   hajmi,   protsessor
imkoniyatlari,   grafik   interfeyslar,   tugmalar   va   sensorli   funksiyalar   mavjud   va
ishlab   chiquvchilar   ularni   barchasini   joylashtirishlari   kerak.   Masalan,   mobil
ilovalar   foydalanuvchilari   (veb-saytga   tashrif   buyuruvchilar   kabi)   matnni,
tasvirlarni   yoki   interaktiv   aloqa   nuqtalarini   ko'rish   uchun   yon   tomonga   o'tishni
xohlamaydi   va   ular   kichik   matnni   o'qishga   qarshi   kurashishni   xohlamaydilar.
Mobil   ilovalarni   ishlab   chiquvchilar   uchun   qo'shimcha   e'tibor   mobil   qurilmalar
uchun umumiy bo'lgan sensorli interfeysdir.
Mobil   qurilmalar   keng   tarqalgan   holda   qabul   qilinishidan   avval   dasturiy
ta'minot birinchi navbatda ish stoli va noutbuklarda ishlash uchun ishlab chiqilgan,
mobil   versiyadan   so'ng   keladi.   Planshet   va   smartfonlardan   foydalanish   endilikda
dastur   sotish   tendensiyalarida   aks   ettirilgan   stol   kompyuterlari   va   noutbuklarning
ishi   oshib   bormoqda.   Aslida,   2017-yilda   197   milliardlik   ilovani   yuklab   olish
rejalashtirilgan.   Natijada,   ko'plab   ishlab   chiquvchilar   veb-dizaynda   shu   kabi
tendentsiyani   aks   ettiruvchi   "mobil-birinchi"   yondashuvga   aylandilar.   Ushbu
ilovalar uchun ularning mobil versiyalari standart sozlamalar bo'lib, stol versiyalari
ularning   katta   ekranlari   va   kengroq   xususiyatlari   uchun   moslashtiriladi.   Mobil
ilovalar   yaratish   fanining   asosiy   maqsadi   bu   android   telefonlar   uchun   ilovalar
yaratish fanning asosiy maqsadi hisoblanadi. 2. Ish qidirish ilovasining ahamiyati va maqsadi.
Ish   qidirish   ilovasining   asosiy   ahamiyati   shundaki   u   foydalanuvchilarga
anchagina qulayliklar yaratib berish maqsadida ishlab chiqilgan ilova hisoblanadi.
Foydalanuvchilar   u   yerdan   o`zlariga   kerak   bo`lgan   ishlarni   qidirgan   vaqtlarida
bo`sh   ish   o`rinlarini   chiqarib   berish   kerak   va   ish   izlovchi   odam   hohishiga   qarab
o`ziga maqul ishni topib olish juda ham oson. Ish beruvchilar uchun ham bu ilova
juda qulay hisoblanadi yani ish beruvchi ilovaga ish turi va oylik narxi tel nomerini
qoldirib   joylab   qo`yadi.   Ilovaning   asosiy   maqsadlaridan   biri   bu   insonlarning
vaqtini tejash mushkulini  oson qilish uchun juda qulay ilova hisoblanadi. U ilova
gogglega   ham   ulangan   bo`ladi   kompaniyalar,   zavodlar   hammasi   ilovadan
foydalanib   bo`sh   ish   o`rinlarini   joylab   boradi   bo`sh   ish   o`rni   to`lgan   ish   joyi
aftomatiskiy o`chirilib boriladi. III. ASOSIY QISM
1. “ Ish qidirish ilovasi ” mobil ilovasining mantiqiy st rukturasi va uni
shakllantirish.
1.   Bosh   sahifa:   Bosh   sahifa,   ilova   haqida   umumiy   ma'lumotlarni   va   asosiy
bo'limlarni o'z ichiga oladi.
Ma'lumotlar   va   maqsad:   Ish   qidirish   ilovasi,   bo`sh   ish   o`rinlarini   chiqarib   berish
mavjud bo`sh ish o`rinlarini ilovaga joylash uchun yo'naltirilgan mobil ilova.
Dasturda mavjud bo'limlar: Ro`yxatdan o`tish va bo`sh ish o`rnini aniqlash kabilar
mavjud. 
1-namuna
package com.epicodus.jobhunt;
public class Constants {
    public static final String MUSE_TOKEN = BuildConfig.MUSE_TOKEN;
        public   static   final   String   MUSE_BASE_URL   =
"https://www.themuse.com/api/public/";
    public static final String JOBS_QUERY_PARAMETER = "jobs";
}
2-namuna
package com.epicodus.jobhunt;
import javax.security.auth.callback.Callback;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
public class MuseService {
    public static void findJobs(String jobs, Callback callback){
        OkHttpClient client = new OkHttpClient.Builder()
                .build();
                HttpUrl.Builder   urlBuilder   =
HttpUrl.parse(Constants.MUSE_BASE_URL).newBuilder();
                urlBuilder.addQueryParameter(Constants.JOBS_QUERY_PARAMETER,
jobs);
        String url = urlBuilder.build().toString();
    }
} 2. “ Ish qidirish ilovasi ” mobil ilovasining ko’rinishi, ekran sur’at lari va
tegishli dastur kodlari.
Quyida   Dasturning   Bosh   sahifasi   tasviri   berilgan.   Quyidagi   kod   bo’lagida
Intent   tarkibida   bo’limlardan   biri   Resources   kodi   berilgan.   Bo’lim
AppCompatActivity da tasvirlangan. 
1-rasm. Bosh sahifa
package com.epicodus.jobhunt;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import butterknife.BindView;
import butterknife.ButterKnife;
public   class   MainActivity   extends   AppCompatActivity   implements
View.OnClickListener {
    @BindView(R.id.button) Button msignupButton;
    @BindView(R.id.button2) Button mloginButton;     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        msignupButton.setOnClickListener(this);
        mloginButton.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if (v == msignupButton) {
            Intent intent = new Intent(MainActivity.this, signUp.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if(v == mloginButton){
            Intent intent = new Intent(MainActivity.this,LoginActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
    }
}
2-rasm.  Ro`yxatdan o`tish oynasi. package com.epicodus.jobhunt;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.TargetApi;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import static android.Manifest.permission.READ_CONTACTS;
/**
 * A login screen that offers login via email/password.
 */
public   class   LoginActivity   extends   AppCompatActivity   implements
LoaderCallbacks<Cursor> {
    /**
     * Id to identity READ_CONTACTS permission request.
     */
    private static final int REQUEST_READ_CONTACTS = 0;
    /**
     * A dummy authentication store containing known user names and passwords.
     * TODO: remove after connecting to a real authentication system.
     */
    private static final String[] DUMMY_CREDENTIALS = new String[]{
            "foo@example.com:hello", "bar@example.com:world"     };
    /**
     * Keep track of the login task to ensure we can cancel it if requested.
     */
    private UserLoginTask mAuthTask = null;
    // UI references.
    private AutoCompleteTextView mEmailView;
    private EditText mPasswordView;
    private View mProgressView;
    private View mLoginFormView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        // Set up the login form.
        mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
        populateAutoComplete();
        mPasswordView = (EditText) findViewById(R.id.password);
                mPasswordView.setOnEditorActionListener(new
TextView.OnEditorActionListener() {
            @Override
                        public   boolean   onEditorAction(TextView   textView,   int   id,   KeyEvent
keyEvent) {
                                if   (id   ==   EditorInfo.IME_ACTION_DONE   ||   id   ==
EditorInfo.IME_NULL) {
                    attemptLogin();
                    return true;
                }
                return false;
            }
        });
                Button   mEmailSignInButton   =   (Button)
findViewById(R.id.email_sign_in_button);
        mEmailSignInButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                attemptLogin();
            }
        });
        mLoginFormView = findViewById(R.id.login_form);
        mProgressView = findViewById(R.id.login_progress);
    }
    private void populateAutoComplete() {
        if (!mayRequestContacts()) {
            return;         }
        getLoaderManager().initLoader(0, null, this);
    }
    private boolean mayRequestContacts() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return true;
        }
                if   (checkSelfPermission(READ_CONTACTS)   ==
PackageManager.PERMISSION_GRANTED) {
            return true;
        }
        if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
                        Snackbar.make(mEmailView,   R.string.permission_rationale,
Snackbar.LENGTH_INDEFINITE)
                    .setAction(android.R.string.ok, new View.OnClickListener() {
                        @Override
                        @TargetApi(Build.VERSION_CODES.M)
                        public void onClick(View v) {
                                                        requestPermissions(new   String[]{READ_CONTACTS},
REQUEST_READ_CONTACTS);
                        }
                    });
        } else {
                        requestPermissions(new   String[]{READ_CONTACTS},
REQUEST_READ_CONTACTS);
        }
        return false;
    }
    /**
     * Callback received when a permissions request has been completed.
     */
    @Override
        public   void   onRequestPermissionsResult(int   requestCode,   @NonNull   String[]
permissions,
                                           @NonNull int[] grantResults) {
        if (requestCode == REQUEST_READ_CONTACTS) {
                        if   (grantResults.length   ==   1   &&   grantResults[0]   ==
PackageManager.PERMISSION_GRANTED) {
                populateAutoComplete();
            }
        }
    }
    /**      * Attempts to sign in or register the account specified by the login form.
     * If there are form errors (invalid email, missing fields, etc.), the
     * errors are presented and no actual login attempt is made.
     */
    private void attemptLogin() {
        if (mAuthTask != null) {
            return;
        }
        // Reset errors.
        mEmailView.setError(null);
        mPasswordView.setError(null);
        // Store values at the time of the login attempt.
        String email = mEmailView.getText().toString();
        String password = mPasswordView.getText().toString();
        boolean cancel = false;
        View focusView = null;
        // Check for a valid password, if the user entered one.
        if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
            mPasswordView.setError(getString(R.string.error_invalid_password));
            focusView = mPasswordView;
            cancel = true;
        }
        // Check for a valid email address.
        if (TextUtils.isEmpty(email)) {
            mEmailView.setError(getString(R.string.error_field_required));
            focusView = mEmailView;
            cancel = true;
        } else if (!isEmailValid(email)) {
            mEmailView.setError(getString(R.string.error_invalid_email));
            focusView = mEmailView;
            cancel = true;
        }
        if (cancel) {
            // There was an error; don't attempt login and focus the first
            // form field with an error.
            focusView.requestFocus();
        } else {
            // Show a progress spinner, and kick off a background task to
            // perform the user login attempt.
            showProgress(true);
            mAuthTask = new UserLoginTask(email, password);
            mAuthTask.execute((Void) null);
        }
    }     private boolean isEmailValid(String email) {
        //TODO: Replace this with your own logic
        return email.contains("@");
    }
    private boolean isPasswordValid(String password) {
        //TODO: Replace this with your own logic
        return password.length() > 4;
    }
    /**
     * Shows the progress UI and hides the login form.
     */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
    private void showProgress(final boolean show) {
                //   On   Honeycomb   MR2   we   have   the   ViewPropertyAnimator   APIs,   which
allow
        // for very easy animations. If available, use these APIs to fade-in
        // the progress spinner.
                if   (Build.VERSION.SDK_INT   >=
Build.VERSION_CODES.HONEYCOMB_MR2) {
                        int   shortAnimTime   =
getResources().getInteger(android.R.integer.config_shortAnimTime);
            mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
            mLoginFormView.animate().setDuration(shortAnimTime).alpha(
                    show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                                        mLoginFormView.setVisibility(show   ?   View.GONE   :
View.VISIBLE);
                }
            });
            mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
            mProgressView.animate().setDuration(shortAnimTime).alpha(
                    show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
                }
            });
        } else {
            // The ViewPropertyAnimator APIs are not available, so simply show
            // and hide the relevant UI components.
            mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
            mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
        }
    }     @Override
    public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
        return new CursorLoader(this,
                // Retrieve data rows for the device user's 'profile' contact.
                Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
                                                ContactsContract.Contacts.Data.CONTENT_DIRECTORY),
ProfileQuery.PROJECTION,
                // Select only email addresses.
                ContactsContract.Contacts.Data.MIMETYPE +
                        " = ?", new String[]{ContactsContract.CommonDataKinds.Email
                .CONTENT_ITEM_TYPE},
                // Show primary email addresses first. Note that there won't be
                // a primary email address if the user hasn't specified one.
                ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
    }
    @Override
    public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
        List<String> emails = new ArrayList<>();
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            emails.add(cursor.getString(ProfileQuery.ADDRESS));
            cursor.moveToNext();
        }
        addEmailsToAutoComplete(emails);
    }
    @Override
    public void onLoaderReset(Loader<Cursor> cursorLoader) {
    }
       private void addEmailsToAutoComplete(List<String> emailAddressCollection)
{
                //Create   adapter   to   tell   the   AutoCompleteTextView   what   to   show   in   its
dropdown list.
        ArrayAdapter<String> adapter =
                new ArrayAdapter<>(LoginActivity.this,
                                                android.R.layout.simple_dropdown_item_1line,
emailAddressCollection);
        mEmailView.setAdapter(adapter);
    }
    private interface ProfileQuery {
        String[] PROJECTION = {
                ContactsContract.CommonDataKinds.Email.ADDRESS,
                ContactsContract.CommonDataKinds.Email.IS_PRIMARY,
        };
        int ADDRESS = 0;
        int IS_PRIMARY = 1;     }
    /**
     * Represents an asynchronous login/registration task used to authenticate
     * the user.
     */
    public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
        private final String mEmail;
        private final String mPassword;
        UserLoginTask(String email, String password) {
            mEmail = email;
            mPassword = password;
        }
        @Override
        protected Boolean doInBackground(Void... params) {
            // TODO: attempt authentication against a network service.
            try {
                // Simulate network access.
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                return false;
            }
            for (String credential : DUMMY_CREDENTIALS) {
                String[] pieces = credential.split(":");
                if (pieces[0].equals(mEmail)) {
                    // Account exists, return true if the password matches.
                    return pieces[1].equals(mPassword);
                }
            }
            // TODO: register the new account here.
            return true;
        }
        @Override
        protected void onPostExecute(final Boolean success) {
            mAuthTask = null;
            showProgress(false);
            if (success) {
                finish();
            } else {
                mPasswordView.setError(getString(R.string.error_incorrect_password));
                mPasswordView.requestFocus();
            }
        }
        @Override
        protected void onCancelled() {
            mAuthTask = null;             showProgress(false);
        }
    }
}
3-rasm. Ish qidirish bo`limini tanlash.
package com.epicodus.jobhunt;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import butterknife.BindView;
import butterknife.ButterKnife;
public   class   searchByCompany   extends   AppCompatActivity   implements
View.OnClickListener {
@BindView(R.id.home) ImageView mHome;
@BindView(R.id.jobs) ImageView mJobs;
@BindView(R.id.chat) ImageView mChat;
    @Override
    protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_by_company);
        ButterKnife.bind(this);
        mHome.setOnClickListener(this);
        mJobs.setOnClickListener(this);
        mChat.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v == mHome){
            Intent intent = new Intent(searchByCompany.this,jobSearch.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if(v == mJobs){
            Intent intent = new Intent(searchByCompany.this,displayAllJobs.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if (v == mChat){
            Intent intent = new Intent(searchByCompany.this,chatActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
    }
}
package com.epicodus.jobhunt;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import butterknife.BindView;
import butterknife.ButterKnife;
public   class   searchByJob   extends   AppCompatActivity   implements
View.OnClickListener {
@BindView(R.id.home) ImageView mHome;
@BindView(R.id.jobs) ImageView mJobs;
@BindView(R.id.chat) ImageView mChat;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);         setContentView(R.layout.activity_search_by_job);
        ButterKnife.bind(this);
        mHome.setOnClickListener(this);
        mJobs.setOnClickListener(this);
        mChat.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v == mHome){
            Intent intent = new Intent(searchByJob.this,jobSearch.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if(v == mJobs){
            Intent intent = new Intent(searchByJob.this,displayAllJobs.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if (v == mChat){
            Intent intent = new Intent(searchByJob.this,chatActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
    }
} 4-rasm. Muloqot qismi.
package com.epicodus.jobhunt;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class customArrayAdapter extends BaseAdapter {
    private Context mContext;
    private String[] mcompanies;
    private String[] mvacancies;
        public  customArrayAdapter(Context   mContext,  String[]   mcompanies,   String[]
mvacancies) {
        this.mContext = mContext;
        this.mcompanies = mcompanies;
        this.mvacancies = mvacancies;
    }
    @Override
    public int getCount() {
        return mcompanies.length;
    }
    @Override
    public Object getItem(int position) {
        return null;
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View gridView;
        if (convertView == null) {
            // get layout from xml file
            gridView = inflater.inflate(R.layout.customlayout, null);
            // pull views
            TextView letterView = (TextView) gridView
                    .findViewById(R.id.grid_item_letter);
            TextView numberTv = gridView.findViewById(R.id.grid_item_number);
            // set values into views
                        letterView.setText("Company   :"+"   "+mcompanies[position]);     //   using
dummy data for now             numberTv.setText("position" + " "+ mvacancies[position]);
        } else {
            gridView = (View) convertView;
        }
        return gridView;
    }
}
5-rasm. Qidiruv bo`limi.
package com.epicodus.jobhunt;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import butterknife.BindView;
import butterknife.ButterKnife;
public   class   searchByCompany   extends   AppCompatActivity   implements
View.OnClickListener {
@BindView(R.id.home) ImageView mHome;
@BindView(R.id.jobs) ImageView mJobs;
@BindView(R.id.chat) ImageView mChat;
    @Override     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_by_company);
        ButterKnife.bind(this);
        mHome.setOnClickListener(this);
        mJobs.setOnClickListener(this);
        mChat.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v == mHome){
            Intent intent = new Intent(searchByCompany.this,jobSearch.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if(v == mJobs){
            Intent intent = new Intent(searchByCompany.this,displayAllJobs.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
        else if (v == mChat){
            Intent intent = new Intent(searchByCompany.this,chatActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
    }
}
Registratsiya qismi.
package com.epicodus.jobhunt;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
public   class   signUp   extends   AppCompatActivity   implements
View.OnClickListener{
@BindView(R.id.button3) Button mLandScreen;
@BindView(R.id.editText) EditText mUsername;
    @Override
    protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);
        ButterKnife.bind(this);
        mLandScreen.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v == mLandScreen){
            String username = mUsername.getText().toString();
                        Toast.makeText(signUp.this,   "Sign   up   successful",
Toast.LENGTH_LONG).show();
            Intent intent = new Intent(signUp.this,HomeActivity.class);
            intent.putExtra("username",username);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 0);
        }
    }
} XULOSA
Ushbu   material   mobil   ilovalar   yaratish   texnologiyasi   sohasida   mustaqil   ish
uchun   nazariy   materialni   taqdim   etadi.   Mobil   ilovalar,   bugungi   kunda   aholining
hayotida   katta   ahamiyatga   ega   bo'lgan   sohalardan   biridir.   Mobil   ilovalar   yaratish
sohasi,   o'ziga   xosliklari   va   imkoniyatlari   bilan   mustaqil   ish   uchun   eng   qiziqarli
sohalardan biri hisoblanadi.
Dasturda   JSON   formati   yordamida   ma'lumotlar   va   funksiyalar   saqlanadi.
JSON formati ma'lumotlar va funksiyalar qatorlaridan iborat bo'lib, ularga qulaylik
bilan murojaat qilish imkonini beradi.
Dasturning   ko'rinishi   esa   Intent   va   AppCompatActivity dan   foydalanilgan.
Bosh   sahifada   Intent   tarkibida   bo'limlar   joylashgan.   Har   bir   bo'lim
AppCompatActivity ga   o'girilgan,   bu   AppCompatActivity ning   shaklini   tahrirlash
va   ma'lumotlarni   ko'rsatish   imkonini   beradi.   Bu   mobil   ilova   bo`sh   ish   o`rinlari
ro`yxatini   chiqarib   berishga   mo`ljallangan   hisoblanib   ish   qidirish   uchun   qulaylik
yaratib beradi. FOYDALANILGAN ADABIYOTLAR RO`YXATI
1. Leonid Bugaev.  Mobil  marketing. Mobil  dunyoda biznesingizni  qanday to'lash
kerak. Alpina nashriyoti. 2012. 214 b.
2. Pol Deytel, Xarvi Deytel, Aleksandr Vald. Ishlab chiquvchilar uchun Android.3-
nashr. Sankt-Peterburg: Piter, 2016. 512 p.
3.   Mario   Zechner.   Android   o'yin   dasturlash.   Sankt-Peterburg:   Piter,   2013.   688-
yillar.
4. Bryus Ekkel. Java falsafasi. Sankt-Peterburg: Piter, 2014. 640 b.
5. Bill Fillips, Brayan Xardi. Android dasturlash: Big Nerd Ranch Big. Nerd Ranch
Guides, 2013 yil.
6.   Varakin   M.V.   Android   uchun   mobil   ilovalarni   ishlab   chiqish.   MSTU   im.
"Mutaxassis" UTs. N. E. Bauman, 2012 yil.
7. Jon Uayli va o'g'illari. Reto Meier Professional Android 4 ilovalarini ishlab
chiqish. Wrox, 2012 yil.
8. Android™ ilovalarini ishlab chiqish kitobi: Yutuqli ilovalarni yaratish uchun 93
ta retsept Mualliflik huquqi © 2013 John Wiley & Sons, Inc., Indianapolis, Indiana
bir vaqtning o'zida Kanadada nashr etilgan ISBN: 978-1-118-17767-9 ISBN: 978-
1-118-22729-9 (ebk)
9.   Professional   Android™   4   ilovalarini   ishlab   chiqish   John   Wiley   &   Sons,   Inc.
tomonidan nashr etilgan. 10475 Crosspoint Boulevard Indianapolis, IN 46256
10.   Karl   I.   Vigers,   Joy   Bitti.   Dasturiy   ta'minot   talablarini   ishlab   chiqish.   BHV-
Peterburg, rus nashri, 2016. 736 p.
Foydalanilgan elektron manzillar:
1. https://developer.android.com/studio/
2.https://aws.amazon.com/ru/mobile/mobile-application evelopment/?nc1=h_ls/
3. https://www.orientsoftware.com/technologies/mobile-technologies/
4. http://dasturim.uz/
5. https://www.ziyouz.com/
6. http://library.ziyonet.uz/uz/book/80356/
7. https://storage.googleapis.com/flutter_infra/ releases/stable/windows/flutter_windows_v1.2.1-stable.zip./

ISH QIDIRI SH ILOVA SI. MUNDARIJA I. KIRISH……………………...…………………………………………….…...3 II. NAZARIY QISM...…………………………………………………………...4 1 .”Mobil ilovalar yaratish texnologiyasi” fanining maqsadi va umumiy ma'lumotlar……………………………………………………………………… 4 2 . Ish qidirish ilovasining ahamiyati va maqsadi………………….……………... 5 III. ASOSIY QISM………………………………………………………………6 1 .“Ish qidirish ilovasi” mobil ilovasining mantiqiy strukturasi va uni shakllantirish……………………………………………………………………... 6 2 .“Ish qidirish ilovasi” mobil ilovasining ko’rinishi, ekran sur’atlari va tegishli dastur kodlari ……………………………………………………………………..7 IV. XULOSA……………………………………………………………………24 V. FOYDALANILGAN ADABIYOTLAR VA MANBALAR………………..25

KIRISH Bugungi kunda yurtimizda ham mobil sanoat jadallik bilan rivojlanmoqda. Internetdan foydalanuvchilar soni 12 milliondan oshdi, mobil qurilmalar, ayniqsa smartfon va planshetlar keng ommalashmoqda. Tabiiyki, O‘zbekistonda ishlab chiqilgan, o‘zbek tilidagi foydali, qiziqarli mobil ilovalarga bo‘lgan talab ham ortmoqda. Mobil ilova (inglizcha: Mobile app) — ma lum bir platforma (iOS,ʼ Android, Windows Phone va boshqalar) uchun ishlab chiqilgan smartfonlar, planshetlar va boshqa mobil qurilmalarda ishlashga mo ljallangan dastur. Ko pgina ʻ ʻ mobil ilovalar qurilmaning o zida oldindan o rnatiladi yoki ularni App Store, ʻ ʻ Google Play va boshqalar kabi onlayn dastur do konlaridan bepul yoki pullik ʻ yuklab olish mumkin. Dastlab, mobil ilovalar elektron pochtani tezda tekshirish uchun ishlatilgan, ammo ularning yuqori talablari boshqa sohalarda ham kengayishiga olib keldi, masalan, mobil telefon va GPS o yinlari, suhbatlashish, video tomosha qilish va ʻ Internetdan foydalanish. Ushbu atama 2007-yildan beri juda mashhur bo lib, 2010- ʻ yilda Amerika Dialektik Jamiyati tomonidan „Yil so zlari“ ro yxatiga kiritilgan. ʻ ʻ Mobil ilovalar bozori bugungi kunda juda rivojlangan va barqaror o sib bormoqda. ʻ Statista prognozlariga ko ra, 2020-yilda mobil ilovalar sanoatining yillik yalpi ʻ daromadi $189 milliarddan oshadi. Ish qidirish ilovasi butun dunyoda keng tarqalgan va O`zbekistonda ham ilovaga bo`lgan talab ortib bormoqda. Ilovaning foydali tomonlari shundan iboratki ish beruvchi odam ham ish izlovchi odam ham ovoragarchilikka hojat qolmaydi birgina telefon orqali ish joylashi va o`ziga kerak bo`lgan ishni izlab topishi mumkin bu esa anchagina qulayliklar yaratib bermoqda. Hozirda O`zbekistonda mobil dasturchilarga bo`lgan talab oshib bormoqda. O`zbekistonda hozirda mashxur ish qidiruv ilovalari mavjud.

II. NAZARIY QISM 1. ”Mobil ilovalar yaratish texnologiyasi” fanining maqsadi va umumiy ma'lumotlar. Mobil ilova (inglizcha: Mobile app) — ma lum bir platforma (iOS, Android,ʼ Windows Phone va boshqalar) uchun ishlab chiqilgan smartfonlar, planshetlar va boshqa mobil qurilmalarda ishlashga mo ljallangan dastur. Ko pgina mobil ʻ ʻ ilovalar qurilmaning o zida oldindan o rnatiladi yoki ularni App Store, Google ʻ ʻ Play va boshqalar kabi onlayn dastur do konlaridan bepul yoki pullik bilan yuklab ʻ olish mumkin. Dastlab, mobil ilovalar elektron pochtani tezda tekshirish uchun ishlatilgan, ammo ularning yuqori talablari boshqa sohalarda ham kengayishiga olib keldi, masalan, mobil telefon va GPS o yinlari, suhbatlashish, video tomosha ʻ qilish va Internetdan foydalanish. Ilova turlari Mobil saytlar Veb-ilovalar Gibrid dasturlar Mahalliy dasturlar Mobil ilovalar (mobil ilovalar sifatida ham tanilgan) - smartfon va planshetlar kabi mobil qurilmalar uchun ishlab chiqilgan dasturiy ta'minot. Ular mobil qurilmalarni funktsiyali va qiziqarli miniatyura kuchlariga aylantiradi. Ba'zi qurilmalar ishlab chiqaruvchilarining ayrim uyali ilovalari yoki ular bilan bog'langan uyali aloqa provayderlari (masalan, Verizon, AT & T, T-Mobile va boshqalar) bilan oldindan o'rnatilgan bo'ladi, lekin ko'plab ilovalar qurilmaga xos ilova orqali mavjud do'konlar. Mobil ilovalar vazifalari: Ushbu ilovalarning maqsadlari o'yin-kulgidan, mahsuldorlikdan va o'yin-kulgidan o'yin-kulgi, sport, fitnes va boshqa har qanday odamni tasavvur qilish uchun gamutni boshqaradi. Ijtimoiy media - mobil ilovalarni ishlab chiqish va qabul qilishning eng mashhur yo'nalishlaridan biri. Aslida, Facebook barcha platformalarda 2017-yilda eng keng tarqalgan dastur hisoblanadi. Ko'pgina onlayn ob'ektlar mobil veb-saytlar va mobil ilovalarga ega. Umuman olganda, farq bir maqsadga qaratilgan: App odatda mobil

veb-saytga qaraganda kichikroq bo'ladi, ko'proq interaktivlik taklif qiladi va mobil qurilmada ishlatish oson va intuitiv ravishda yanada aniqroq ma'lumotlarni taqdim etadi. Operatsion tizim mosligi: Mobil ilovalarni ishlab chiquvchi ishlaydigan operatsion tizim uchun maxsus dastur yaratadi. Masalan, iPad uchun mobil ilovalar Apple iOS-da ishlaydi, ammo Google Android emas. Apple ilovasi Android telefonida ishlamaydi va aksincha. Ko'pincha, ishlab chiquvchilar har birining versiyasini yaratadilar; Masalan, Apple do'konidagi mobil ilova Google Play-ning hamkasbiga ega bo'lishi mumkin. Mobil ilovalar "Android" dan qanday farq qiladi? Muntazam Ilovalar Ko'pgina mobil ilovalar ish stoli kompyuterlarda ishlashga mo'ljallangan tegishli dasturlarga ega. Mobil ilovalar har qanday cheklovlar bilan ishlashga moslashgan bo'lsa-da, ularning ish stollari uchun mosligi bor. Mobil qurilmalarda ekranning kattaligi, xotira hajmi, protsessor imkoniyatlari, grafik interfeyslar, tugmalar va sensorli funksiyalar mavjud va ishlab chiquvchilar ularni barchasini joylashtirishlari kerak. Masalan, mobil ilovalar foydalanuvchilari (veb-saytga tashrif buyuruvchilar kabi) matnni, tasvirlarni yoki interaktiv aloqa nuqtalarini ko'rish uchun yon tomonga o'tishni xohlamaydi va ular kichik matnni o'qishga qarshi kurashishni xohlamaydilar. Mobil ilovalarni ishlab chiquvchilar uchun qo'shimcha e'tibor mobil qurilmalar uchun umumiy bo'lgan sensorli interfeysdir. Mobil qurilmalar keng tarqalgan holda qabul qilinishidan avval dasturiy ta'minot birinchi navbatda ish stoli va noutbuklarda ishlash uchun ishlab chiqilgan, mobil versiyadan so'ng keladi. Planshet va smartfonlardan foydalanish endilikda dastur sotish tendensiyalarida aks ettirilgan stol kompyuterlari va noutbuklarning ishi oshib bormoqda. Aslida, 2017-yilda 197 milliardlik ilovani yuklab olish rejalashtirilgan. Natijada, ko'plab ishlab chiquvchilar veb-dizaynda shu kabi tendentsiyani aks ettiruvchi "mobil-birinchi" yondashuvga aylandilar. Ushbu ilovalar uchun ularning mobil versiyalari standart sozlamalar bo'lib, stol versiyalari ularning katta ekranlari va kengroq xususiyatlari uchun moslashtiriladi. Mobil ilovalar yaratish fanining asosiy maqsadi bu android telefonlar uchun ilovalar yaratish fanning asosiy maqsadi hisoblanadi.

2. Ish qidirish ilovasining ahamiyati va maqsadi. Ish qidirish ilovasining asosiy ahamiyati shundaki u foydalanuvchilarga anchagina qulayliklar yaratib berish maqsadida ishlab chiqilgan ilova hisoblanadi. Foydalanuvchilar u yerdan o`zlariga kerak bo`lgan ishlarni qidirgan vaqtlarida bo`sh ish o`rinlarini chiqarib berish kerak va ish izlovchi odam hohishiga qarab o`ziga maqul ishni topib olish juda ham oson. Ish beruvchilar uchun ham bu ilova juda qulay hisoblanadi yani ish beruvchi ilovaga ish turi va oylik narxi tel nomerini qoldirib joylab qo`yadi. Ilovaning asosiy maqsadlaridan biri bu insonlarning vaqtini tejash mushkulini oson qilish uchun juda qulay ilova hisoblanadi. U ilova gogglega ham ulangan bo`ladi kompaniyalar, zavodlar hammasi ilovadan foydalanib bo`sh ish o`rinlarini joylab boradi bo`sh ish o`rni to`lgan ish joyi aftomatiskiy o`chirilib boriladi.