ISH QIDIRISH ILOVASI.








![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"](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_9.png)

![}
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();
}
}
}
/**](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_11.png)


![@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;](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_14.png)
![}
/**
* 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;](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_15.png)



![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](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_19.png)
![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](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_20.png)





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.