ISH QIDIRISH ILOVASI.
![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](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_1.png)
![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.](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_2.png)
![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](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_3.png)
![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.](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_4.png)
![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.](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_5.png)
![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();
}
}](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_6.png)
![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;](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_7.png)
![@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.](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_8.png)
![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)
![};
/**
* 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;](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_10.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)
![* 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);
}
}](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_12.png)
![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);
}
}](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_13.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)
![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) {](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_16.png)
![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);](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_17.png)
![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);
}
}
}](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_18.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)
![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) {](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_21.png)
![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);
}
}
}](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_22.png)
![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.](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_23.png)
![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/](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_24.png)
![releases/stable/windows/flutter_windows_v1.2.1-stable.zip./](/data/documents/987523e2-2e10-4e6d-a8da-9051f28d786e/page_25.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.