Restoran izlash ilovasi
![Restoran izlash ilovasi
Reja:
1. Kirish
2. Nazariy qism:
2.1. Mobil ilovalar yaratish va uning asosiy tushunchalari
2.2. Restoran izlash ilovasi haqida ma`lumotlar
3. Asosiy qism:
3.1. Restoran izlash ilovasi dastur kodlari va izohlar
3.2. Resoran izlash ilovasi rasmlari
4. Xulosa
5. Foydalanilgan adabiyotlar](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_1.png)
![Kirish
Mobil ilovalar yaratish texnologiyasi, mobil qurilmalardagi dasturlarni yaratish
uchun ishlatiladigan texnologik usullar va vositalardir. Bu texnologiya, mobil
ilovalarni, masalan, telefon ilovasini, o'yin ilovalarini, ijtimoiy tarmoq ilovalarini
va boshqalarini yaratish uchun qo'llaniladi.
Mobil ilovalar yaratish texnologiyasi quyidagi asosiy qismlardan iborat bo'lishi
mumkin:
Platformalar: Mobil ilovalarni yaratish uchun har bir platforma o'z o'ziga xos
bo'lgan imkoniyatlarga ega bo'ladi. Eng mashhur mobil platformalar iOS (Apple
tizimi) va Android (Google tizimi) hisoblanadi. Platformalar o'rtasidagi farq va
qodirliklar, dasturchilar uchun bog'liq bo'lib, ularga ilovaning yo'nalishi va
iste'molchilarining talablariga qarab belgilanadi.
Dasturlash til va vositalari: Mobil ilovalarni yaratish uchun qo'llaniladigan turli
dasturlash tillari va vositalar mavjud. Misol uchun, Java, Swift, Kotlin, C#,
JavaScript va boshqalar. Bu tillar, dasturchilarga mobil ilovalar yaratishda
muvaffaqiyatli bo'lishlari uchun kerakli imkoniyatlarni taqdim etadi. Bundan
tashqari, dasturlash vositalari, qulaylik va soddalikni oshirish uchun yordam
beradi.
Gartnerbozor tadqiqot firmasi 2013-yilda 102 milliard dastur yuklab olinishini
bashorat qildi (ularning 91 foizi bepul), bu esa AQShda 26 milliard dollar daromad
keltiradi, bu 2012 yildagi 18 milliard dollarga nisbatan 44,4 foizga ko‘p. 2015
yilning 2-choragiga kelib faqatgina Google Play va Apple do konlari 5 milliard ʻ
dollar ishlab topdi. Tahlilchilar hisobotiga ko'ra, ilovalar iqtisodiyoti Yevropa
Ittifoqida yiliga 10 milliard yevrodan ortiq pul keltiradi , ilovalar bozorining o'sishi
tufayli Yevropa Ittifoqining 28 davlatida 529 mingdan ortiq ish o'rni yaratilgan.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_2.png)
![NAZARIY QISM
Mobil ilovalar yaratish va uning asosiy tushunchalari
Mobil ilovalar yaratish (mobil dasturlash) o'sishga va o'zgarishlarga qarab, mobil
qurilmalar uchun ilovalar yaratish jarayoni. Bu ilovalar odatda iOS (Apple) va
Android (Google) operatsion tizimlari uchun yaratiladi, shuningdek, boshqa mobil
platformalar uchun ham mavjud bo'lishi mumkin.
Mobil ilovalar yaratishning asosiy tushunchalari quyidagilardir:
Ilova Konsepti : Ilovaning asosiy maqsadi, qo'llanuvchi muhitida hal qilishi kerak
bo'lgan muammolarni yechish, o'z muayyan maqsadlarga erishish va
foydalanuvchilar uchun qulayliklar yaratishni o'z ichiga oladi.
Platforma Tanlash : Mobil ilovalarni yaratishda avvalo qo'llanuvchilarning
qanday mobil platformada ishlaydi ekanligini aniqlash lozim. Eng mashhur mobil
platformalar iOS va Android bo'lib, ularning yaratish tillari (Swift, Objective-C
iOS uchun; Java, Kotlin Android uchun) bilan ilovalarni yaratish mumkin.
Dizayn : Ilovaning dizayni, yani interfeysi, foydalanuvchilar bilan o'zaro
munosabatlarda ishtirok etadi. Uning intuitiv bo'lishi, sodda vaqtlarda ishga
tushirilishi, murakkablikka qarshi darajasi, jihatdan ilovaning muvaffaqiyatini
ta'minlaydi.
Ilova Tayyorlash : Mobil ilovalarni yaratish jarayonida kod yozish, funksiyalarni
qo'shish, tizimlararo aloqalar (API) bilan integrlash va loyihani test qilishni o'z
ichiga oladi. Bu jarayonda qo'llanuvchilarning talablariga javob beruvchi, xato va
noaniqliklarni oldini olishga intiluvchi kod yoziladi.
Testlash va Tahlil : Mobil ilovaning istiqboli va xususiyatlarini tekshirish uchun
testlar va tahlillar o'tkaziladi. Bu jarayonda ilova xato yoki muammolar topgan
paytda tuzatiladi, ishga tushurilgan funksiyalar to'g'ri ishlashi ta'minlanadi.
E'lon va Tarqatish : Mobil ilova tayyor bo'lganda, u e'lon qilingan, dastur
do'konlarida tarqatilgan yoki ommaviy tashqi veb-saytlarda taqdim etilgan bo'lishi
mumkin. Bu yerga mos tashriflar jalb etilishi va foydalanuvchilarning ilovani
o'rniga olishlari uchun reklama kampaniyalari amalga oshirilishi mumkin.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_3.png)
![Mobil ilovalar yaratish jarayoni murakkabliklar va tezroq o'zgarishlarga bog'liq
bo'lishi mumkin, shuning uchun muvaffaqiyatli ilovalar yaratish uchun o'zingizni
mutaxassislik darajasida rivojlantirish va so'nggi texnologiyalarni kuzatish kerak.
Mobil ilovalar qanday yaratilgan?
Mobil ilovalar turli dasturlash tillari va ramkalar yordamida yaratilgan va ularni
Apple App Store yok Google Play kabi ilovalar do‘konlaridan yuklab olish va
o‘rnatish mumkin .
Mobil ilovalar keng doiradagi funksiya va xizmatlarni taqdim etish va ular uchun
yaratilgan qurilmalarning talablari, cheklovlari va imkoniyatlarini hisobga olgan
holda ishlab chiqilgan. Misol uchun,Iphone uchun maxus ishlab
chiqilgan akselerometridan foydalanishi mumkin .
Boshqa misollar orasida o'yinlar , elektron pochta mijozlari va bank ilovalari
mavjud. Ulardan yangiliklar va ob-havo ma lumotlari kabi ma lumotlarga kirish, ʼ ʼ
onlayn xarid qilish va sayohatni bron qilish kabi vazifalarni bajarish uchun ham
foydalanish mumkin.
Mahalliy ilovalar
Mahalliy mobil ilova - bu maxsus kodlash tilidan foydalangan holda Android yoki
IOS kabi ma'lum turdagi qurilmalar platformalari uchun yaratilgan va ishlab
chiqilgan ilova turi. Ilovani yaratish uchun ishlab chiquvchilar tanlagan kodlash
tiliga qurilma platformasi tomonidan ruxsat berilishi kerak. Ushbu turkum uchun
odatiy ilovalar xususiyatlari oflayn mobil o'yinlar, lug'at ilovalari va boshqalar
bo'lishi mumkin.
Mahalliy ilovalarning asosiy afzalligi ularning yuqori va ajoyib foydalanuvchi
tajribasidir. Hamma narsani hisobga olsak, ularni yaratgan dizaynerlar mahalliy UI
qurilmalaridan foydalanadilar. Keng ko'lamli API-ga kirish, shuningdek, ishlab
chiqish ishlarini tezlashtirishga yordam beradi va ilovalardan foydalanish
chegaralarini kengaytiradi. Mahalliy ilovalar ilovalar do'konlaridan yuklab olinishi](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_4.png)
![va to'g'ridan-to'g'ri qurilmalarga kiritilishi kerak. Shuning uchun ular birinchi
navbatda jiddiy tarqatish jarayonidan o'tishlari kerak.
Odatda, o'yinda barcha tasvirlar, tovushlar va darajalar yuklab olinadi, shuning
uchun foydalanuvchi o'yinni internetga ulanmasdan o'ynashi mumkin (ba'zi
o'yinlar sizdan internetga ulanishni talab qiladi, chunki ular tizimga kirish, ichidagi
narsalarni sotib olish yoki sotish, yoki ular onlayn o'yinlar bo'lgani uchun). Hamma
biladigan mahalliy mobil ilovaning yana bir keng tarqalgan misoli Facebook.
Veb ilovalar
Veb-ilovalar mahalliy mobil ilovalarga mos keladigan va mobil qurilmalarda
ishlaydigan dasturiy ilovalar. Biroq, mahalliy ilovalar va veb-ilovalar o'rtasida
jiddiy farqlar mavjud. Yangi boshlanuvchilar uchun veb-ilovalar ishlash uchun
brauzerlardan foydalanadi va ular odatda CSS, HTML5 yoki JavaScript-da
yozilgan. Bunday ilovalar mijozni URL manziliga yo'naltiradi va keyin ularga
ilovani tanishtirish imkoniyatini beradi. Natijada, veb-ilovalar mijozlarni kelajakda
ko'rish uchun bunday sahifalarda xatcho'p qo'yishga majbur qiladi. Shuning uchun
ular eng kam xotirani talab qiladi.
Veb-ilovalar mahalliy ilovalar bilan solishtirganda bir xil tashkil etish usulini
amalga oshiradi, ammo mobil qurilmangizdagi veb-sayt brauzeri orqali kirish
mumkin. Ular qurilmangizga kodni yuklab olish va o'rnatish nuqtai nazaridan
mustaqil ilovalar emas. Ular haqiqatan ham sezgir veb-saytlar bo'lib,
foydalanuvchi interfeysini mijozning qurilmasiga moslashtiradi. Rostini aytsam,
veb-ilovani "o'rnatish" tanlovini ko'rib chiqsangiz, u ko'pincha qurilmangizdagi
sayt URL manzilini xatcho'p qiladi.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_5.png)
![Gibrid ilovalar
Gibrid ilovalar mobil veb va mahalliy ilovaning afzalliklarini birlashtiradi. U
mobil WebView-da ishlaydigan HTML, CSS va Javascript yordamida
yaratilgan. Biroq, gibrid ilova hali ham qurilmaning suratga olish, GPS, tebranish
va boshqalar kabi xususiyatlaridan foydalanishi mumkin.
Bu mahalliy ilovalarga juda o'xshash veb-ilovalar. Ular uy ekranidagi ilova
belgisiga, sezgir dizaynga, tezkor ishlashga va hatto uzilgan holda ishlash
imkoniyatiga ega bo'lishi mumkin, ammo ular haqiqatan ham mahalliy ko'rinish
uchun yaratilgan veb-ilovalardir.
Gibrid ilovalar o zaro platformalar asosida yoziladi: Cordova, Phonegap, Ionic… ʻ
Biz ushbu ramka taqdim etgan API orqali mobil telefonning funksiyalarini
Javascript ko rinishida chaqiramiz.
ʻ Siz faqat bir marta yozishingiz kerak, bu
ramkalar ushbu dasturni Android va iOS uchun o'rnatish fayllariga avtomatik
ravishda tarjima qiladi. Ishlashda unchalik og'ir bo'lmagan va qurilmaning
funksional imkoniyatlaridan foydalanishi kerak bo'lgan ba'zi ilovalar ushbu ishlab
chiqish usulini tanlaydi.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_6.png)
![Restoran izlash ilovasi haqida ma`lumotlar
Restoran izlash ilovasi, restoranlar, kafedralar, kafe va boshqalar kabi g'oyalar
uchun mobil ilova bo'lib, foydalanuvchilarga bir nechta restoranlar bilan bog'liq
malumotlarni taqdim etadi. Bu ilovalar, odamlarga restoranlar ro'yxati, ularning
manzillari, yagona o'rtasi, menyulari, narxlari, mijozlar tomonidan qoldirilgan
reytinglari va boshqalar kabi ma'lumotlarni ko'rsatadi.
Restoran izlash ilovalari, asosan mobil qurilmalar uchun iOS va Android
platformalarida mavjud bo'lib, ularga ko'chirib olinishi mumkin. Bu ilovalar,
internetdagi bazalar orqali ma'lumotlar olish va ularga yuqori samaradorlik bilan
qidirish uchun qo'llanadi.
Bir nechta restoran izlash ilovalari mavjud, ba'zi mashhur variantlari misol sifatida
quyidagilarni o'z ichiga oladi:
Yelp: Bu ilova, bir nechta mamlakatlarda restoranlar, kafedralar va kafelar haqida
ma'lumotlar taqdim etadi. Foydalanuvchilar restoranlar bo'yicha reyting berish,
sharhlar yozish va rasmlar bilan ta'minlashadi.
Zomato: Zomato, ko'plab mamlakatlarda restoranlar va ularning menyulari,
narxlari, manzillari va reytinglari haqida ma'lumotlar beradi. Ushbu ilovada
mijozlar restoranlarga buyurtma berishlari va shuningdek rezervatsiyalar qilishlari
mumkin.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_7.png)
![OpenTable: OpenTable, AQSh va boshqa mamlakatlarda restoranlar haqida
ma'lumotlarni olish imkonini beradi. Bu ilova orqali foydalanuvchilar restoranlar
uchun joy oldini rezervatsiya qila oladi.
TripAdvisor: TripAdvisor, dunyoning bir nechta mamlakatlardagi restoranlar,
mehmonxonalar va ko'plab boshqa mehmonxona turlari haqida ma'lumotlar taqdim
etadi. Bu ilova orqali foydalanuvchilar reytinglar, sharhlar, rasmlar va mijozlar
tomonidan qoldirilgan so'rovnomalar bilan ta'minlanadi.
Bu ilovalar foydalanuvchilarga restoran izlash va ularga oid ma'lumotlarni
to'plashda yordam beradi. Ularning har biri o'zining o'ziga xos xususiyatlarga ega
bo'lib, foydalanuvchilar har bir ilovani tanlashda o'ziga qulay keluvchi variantni
tanlashlari mumkin.
Restoran izlash ilovalari bir necha afzalliklarga ega bo'lishi mumkin:
Ma'lumotlar va reytinglar: Restoran izlash ilovalari, bir nechta restoranlar haqida
ma'lumotlarni to'plab, ularga reytinglar beradi. Bu ma'lumotlar restoranlar haqida
foydalanuvchilar bilan bo'lgan ta'sir-ijodlar asosida yig'ilgan bo'lib, restoranlarni
baholashda yordam beradi.
Manzillar va yo'llar tarifi: Restoran izlash ilovalari, restoranlar, kafedralar, kafe va
boshqa yemek o'zgartirish joylarining manzil ma'lumotlarini taqdim etadi. Bu
saytda manzil, yo'llar tarifi, navigatsiya imkoniyatlari va qo'llanish jarayonlari
haqida ma'lumotlar topish mumkin.
Menyular va narxlar: Ilovadagi restoranlar, ularning menyularini, ichimliklarini,
ovqatlarni va narxlarini taqdim etadi. Bu, foydalanuvchilar uchun restoranlarni
tanlash va narxlarni solishtirishda qulaylik yaratadi.
Buyurtma berish va yetkazib berish: Ba'zi restoran izlash ilovalari,
foydalanuvchilarga restoranlardan online buyurtma berish imkoniyatini beradi. Bu,
buyurtmalar, yetkazib berish va to'lov jarayonlarini ishonchli va samarali qiladi.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_8.png)
![Rezervatsiyalar: Bazi ilovalar restoranlarni rezervatsiya qilish imkoniyatini ham
beradi. Foydalanuvchilar restoranga otirish vaqtini va mehmonlar sonini belgilab,
rezervatsiya qilishlari mumkin.
Reyting va sharhlar: Restoran izlash ilovalari, mijozlar tomonidan qoldirilgan
reytinglarni, sharhlar va tasvirlarni taqdim etadi. Bu, foydalanuvchilar uchun
restoranlar haqida fikr bildirish va boshqa mijozlarning sharhlarini o'qish imkonini
beradi.
ASOSIY QISM
Restoran izlash ilovasi dastur kodlari va izohlar
Build.gradle(app) fayli
apply plugin: 'com.android.application' //
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.mynearbyplaces"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner”}
buildTypes {
release {
minifyEnabled false](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_9.png)
![proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
rules.pro'
}}}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:exifinterface:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-
core:3.0.2'
implementation 'com.android.support:design:27.1.1'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.mcxiaoke.next:recycler:1.5.3'
implementation 'com.squareup.picasso:picasso:2.71828'
//google xarita va lokatsiya va places API
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-nearby:16.0.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_10.png)
![implementation 'com.google.android.gms:play-services-places:16.0.0'
implementation 'com.google.android.gms:play-services-vision:17.0.2'}
build.gradle fayli, Android proyektlarining konfiguratsiya fayli bo'lib, Android
ilovalarini tashkil qilish va qurish jarayonida qo'llaniladi. build.gradle fayli,
proyektning o'zini tashkil qilish jarayonini sozlash uchun Gradle skriptlarini o'z
ichiga oladi. Bu fayl, proyektning versiyalarini, qo'llaniladigan kutubxonalarni,
ilovalarning konfiguratsiyalarini, dependencies (bog'liqlar) va boshqa Gradle
sozlamalarini o'z ichiga oladi.
AndroidManifest.xml fayli
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mynearbyplaces">
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.location.gps" />](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_11.png)
![<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_api_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" />
<activity android:name=".activity.PlaceDetailsActivity" />
<activity android:name=".activity.PlaceOnMapActivity" />
<activity android:name=".activity.ShowPlacesOnMapActivity"></activity>
</application>](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_12.png)
![</manifest>
AndroidManifest.xml fayli, Android ilovasining manifest fayli hisoblanadi. Bu
fayl, ilovaga o'ziga xos ma'lumotlarni beradi va ilova tarkibidagi komponentlarni
(masalan, aktiviteler, xizmatlar, broadcast qabul qiluvchilar va boshqalar) va
ularning vazifalarini tasvirlaydi.
AndroidManifest.xml fayli quyidagi ma'lumotlarni o'z ichiga oladi:
Ilova haqida asosiy ma'lumotlar:
Ilova nomi (android:label)
Paket nomi (package)
Ilovadagi versiya (android:versionCode va android:versionName)
Ilova ikonasi (android:icon)
Komponentlar:
Aktiviteler (<activity>)
Xizmatlar (<service>)
Broadcast qabul qiluvchilar (<receiver>)
Providerlar (<provider>)
Ilovaga aloqador muhim huquqlar va imtiyozlar:
Internetga kirish (<uses-permission
android:name="android.permission.INTERNET" />)
GPSni ishlatish (<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />)
Kamera bilan ishlash (<uses-permission
android:name="android.permission.CAMERA" />)
Wifi uchun ruxsat( <uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />)
Ilovaga o'ziga xos sozlamalar:](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_13.png)
![ Ekran orientatsiyasi (<activity android:screenOrientation="portrait" />)
Ajoyib yordamchi (<meta-data>)
Manifestning boshqa umumiy sozlamalari:
Manifestning paket nomini ko'rsatish (<manifest package="
com.example.mynearbyplaces ">)
Mininimum va maksimum Android versiyalari (<uses-sdk>)
Asosiy aktiviteni (<intent-filter> orqali)
Ilovani debug rejimda ishlatish (<application android:debuggable="true">)
JAVA VA XML KODLARI
MapsActivity.java
public class MapsActivity extends FragmentActivity implements
OnMapReadyCallback,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener, LocationListener {
private GoogleMap mMap;private GoogleApiClient mGoogleApiClient;
private double latitude, longitude;private Location mLastLocation;
private Marker mMarker;private LocationRequest mLocationRequest;
GoogleApiService mGoogleApiService;private static final int LOCATION_CODE
= 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_14.png)
![// SupportMapFragment-ni chaqirish va xarita foydalanishga tayyor bo'lganda
xabar olinishi.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
mGoogleApiService = Common.getGoogleApiService(); // service chaqirilishi
// bajariloyatgan dasturga so`rov yuborish
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{checkLocationPermission(); }
BottomNavigationView bottomNavigationView =
findViewById(R.id.bottomNavigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {case R.id.action_hospital:
nearbyPlaces("hospital"); break;case R.id.action_market:
nearbyPlaces("market");break;case R.id.action_restaurant:
nearbyPlaces("restaurant"); break;default:break;}return false;} });FindLocation();}
public void FindLocation() {
LocationManager locationManager = (LocationManager)
this.getSystemService(Context.LOCATION_SERVICE);
Boolean
network_enabled=locationManager.isProviderEnabled(LocationManager.NETWO
RK_PROVIDER);](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_15.png)
![Location location; if (network_enabled) {
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
return;}
location =
locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVID
ER);if (location != null) { mLastLocation = location;longitude =
location.getLongitude(); latitude =
location.getLatitude();Toast.makeText(getApplicationContext(),String.valueOf(loc
ation.getLatitude()) + "\n" + String.valueOf(location.getLongitude()),
Toast.LENGTH_SHORT).show();}}}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();}
@Override
protected void onStop() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient,
this);
if (mGoogleApiClient != null) mGoogleApiClient.disconnect();
super.onStop();}](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_16.png)
![private void nearbyPlaces(final String placeType) {
mMap.clear(); String url = getUrl(latitude, longitude, placeType);
mGoogleApiService.getNearByPlaces(url) .enqueue(new Callback<MyPlaces>()
{ @Override
public void onResponse(Call<MyPlaces> call, Response<MyPlaces> response) {
if (response.isSuccessful()) { for (int i = 0; i < response.body().getResults().size();
i+) {MarkerOptions markerOptions = new MarkerOptions(); Results googlePlace
= response.body().getResults().get(i);
double lat =
Double.parseDouble(googlePlace.getGeometry().getLocation().getLat());
double lng =
Double.parseDouble(googlePlace.getGeometry().getLocation().getLng());
String placeName = googlePlace.getName(); String vicinity =
googlePlace.getVicinity(); LatLng latLng = new LatLng(lat, lng);
markerOptions.position(latLng); markerOptions.title(placeName);
if (placeType.equals("hospital")) {
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFa
ctory.HUE_RED));
} else if (placeType.equals("market")) {
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFa
ctory.HUE_RED));
} else if (placeType.equals("restaurant")) {
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFa
ctory.HUE_RED));](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_17.png)
![} else
{markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorF
actory.HUE_RED)); }// xaritaga marker qo`shish
mMap.addMarker(markerOptions); // camerani harakatlantirish
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));}}}
@Override
public void onFailure(Call<MyPlaces> call, Throwable t) {} }); }
private String getUrl(double latitude, double longitude, String placeType) {
StringBuilder builder = new
StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
builder.append("location=" + latitude + "," + longitude);
builder.append("&radius=10000");builder.append("&type=supermarket");
builder.append("&key=" + getResources().getString(R.string.google_maps_key));
Log.d("APIURL", builder.toString());
return builder.toString();}
private boolean checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_18.png)
![}, LOCATION_CODE);
} else {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION
}, LOCATION_CODE);} return false;
} else { return true;} }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[]
permissions, @NonNull int[] grantResults) {
switch (requestCode) {case LOCATION_CODE: {
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED) {
if (mGoogleApiClient == null) {
buildGoogleApiClient(); }
mMap.setMyLocationEnabled(true); } else {
Toast.makeText(getApplicationContext(), "Permission denied",
Toast.LENGTH_SHORT).show();}}}
break;}}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_19.png)
![if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED) {
buildGoogleApiClient();
mMap.setMyLocationEnabled(true);}
} else { buildGoogleApiClient();
mMap.setMyLocationEnabled(true);}
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this).addOnConnectionFailedListener(this)
.addApi(LocationServices.API) .build();mGoogleApiClient.connect();}
@Override
public void onConnected(@Nullable Bundle bundle) {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWE
R_ACCURACY);
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_20.png)
![LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
mLocationRequest, this);}}
@Override
public void onConnectionSuspended(int i) {
mGoogleApiClient.connect();}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult)
{}
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
if (mMarker != null) {mMarker.remove();}
latitude = location.getLatitude();longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
MarkerOptions options = new MarkerOptions()
.position(latLng) .title("Joylashuv")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GR
EEN));
mMarker = mMap.addMarker(options);// kamerani harakatlanitirish
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}}}](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_21.png)
![Activity_maps.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@android:color/white"
app:itemTextColor="@drawable/nav_selector"
app:menu="@menu/bttom_menu" />
</RelativeLayout>](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_22.png)
![Ushbu XML faylida RelativeLayout asosida qurilgan bir oyna (layout) ko'rinishi
berilgan.
RelativeLayoutning ichida SupportMapFragment nomi bilan fragment elementi
joylashgan. Bu element com.google.android.gms.maps.SupportMapFragment
klassiga tegishli xarita fragmentini ifodalaydi.
MainActivity.java
public class MainActivity extends AppCompatActivity {
public TabLayout tabLayout; public ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
checkPermission(); }
tabLayout = findViewById(R.id.tabs);viewPager =
findViewById(R.id.viewpager);
viewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager()));
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager); }});
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_23.png)
![public void onPageScrolled(int position, float positionOffset, int
positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
//toolbar.setTitle("Recipes");break;
case 1:
//toolbar.setTitle("Categories");break;}}
@Override
public void onPageScrollStateChanged(int state) {} });}
private void checkPermission() { int PERMISSION_ALL = 1;
String[] PERMISSIONS = {
Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS
_COARSE_LOCATION,
Manifest.permission.CALL_PHONE,Manifest.permission.ACCESS_WIFI_STAT
E,Manifest.permission.ACCESS_NETWORK_STATE,};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS,
PERMISSION_ALL);}}
boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) !=
PackageManager.PERMISSION_GRANTED) { return false;}}}return true; }}](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_24.png)
![Bu koddagi MainActivity klassi Androidning asosiy aktivitiysi sifatida ishlatiladi.
Kodning boshida o'zgaruvchilar TabLayout va ViewPager aniqlanadi va onCreate
metodida setContentView metodi bilan ma'lum bir activity_main qurilmalari bilan
bog'lanadi.
checkPermission metodi, qurilmaga berilgan ruhsatlar (permissions)ni tekshirish
uchun ishlatiladi. Ushbu metod Manifest.permission o'zgaruvchilari orqali
foydalanuvchi ruhsatlari qatorini tekshiradi. Agar ruhsatlardan biri yo'q bo'lsa,
requestPermissions metodi orqali ruhsat so'ralinadi.
hasPermissions metodi, berilgan kontekst va ruhsatlarni tekshiradi. Kontekst va
ruhsatlarning mavjudligi tekshiriladi, agar bitta ham ruhsat mavjud bo'lmasa false
qaytariladi, aks holda true qaytariladi.
onPageSelected metodi ViewPager o'zgaruvchisi orqali sahifani tanlaganda ishga
tushadi. Ushbu metod switch-case operatori orqali tanlangan sahifaga mos
keladigan amalni bajaradi.
Kodning so'nggi qismida esa onPageScrolled va onPageScrollStateChanged
metodlarida hech qanday amal bajarilmaydi.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
andr oid:id="@+id/tab_coordinator_layout"
android:layout_width="match_parent"](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_25.png)
![android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.AppBarLayout
android:id="@+id/tab_appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.TabLayout android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:tabGravity="fill"
app:tabIndicatorColor="@color/tabIndicatorColor"
app:tabIndicatorHeight="2dp" app:tabMode="fixed"
app:tabSelectedTextColor="@color/tabSelectedTextColor"
app:tabTextColor="@color/tabTextColor" />
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Resoran izlash ilovasi rasmlari](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_26.png)
![1-rasm. Bu yerda Asosiy oyna bo`lib, yaqin atrofdagijoylarni ko`rsatadi.
Masalan,Restoran
2-rasm. Bu yerda “Platan” Restoraniga kirish uchun Go tugmasini bosdik va
restoran haqida malumotlar ko`rinadi.
3-4-rasmlar. Show on Map va Show direction on Map tugmalari bosilgandan
keying holatlar.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_27.png)
![Ko`rib turganimizdek, rasmlarda yaqin atrofdagi restoranning birini
ko`rsatyapti. Keying rasmda esa unga bo`lgan yo`lni qizil chiziq bilan
ko`rsatyapti.
Xulosa
Restoran qidirish ilovasi yaratishda o`rgangan asosiy bilimlar quyidagilardir:](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_28.png)
![ Android platformasi: Restoran qidirish ilovasi Android operatsion tizimi
uchun yaratilgan. Shuning uchun Android platformasini tushunish va
Android ilovalarini yaratish bo'yicha bilimlar;
Java dasturlash tili: Android ilovalari Java dasturlash tilida yaratiladi. Bu
sababli Java dasturlash tilini tushunish, sintaksisini bilish va dasturlash
asoslari;
Android Studio: Android ilovalarini yaratish uchun Android Studio
muhitidan foydalaniladi. Android Studio'ni o'rganish, proyektlarni yaratish,
ilovalarni tashkil qilish va ulardan foydalanish bilimlari;
XML: Android ilovalarida interfeys dizaynini belgilash uchun XML
fayllaridan foydalaniladi. XML tilini o'rganib, Android interfeysi uchun mos
taglar, atributlar va yuklamalar bilan ishlash bilimlari;
Google Maps API: Restoranlarni ko'rish va manzillarini olish uchun Google
Maps API'dan foydalaniladi. Google Maps API ni tushunish, xaritani
integratsiya qilish va ma'lumotlarni olish bilimlari;
Android Material Design: Restoran qidirish ilovasi uchun yaxshi ko'rinish va
ishlatish imkonini berish uchun Material Design prinsiplarini o'rganish
zarur. Material Design bo'yicha interfeys komponentlarini foydalanish,
animatsiyalarni qo'llash va yaxshi tajribani ta'minlash bilimlari;
Foydalanuvchi interaksiyasi: Ilovada foydalanuvchilar bilan interaksiya
qilish, menyu tanlash, buyurtma berish va sharhlar qoldirish kabi
jarayonlarni amalga oshirish zarur. Foydalanuvchilar bilan interfeysni
intuitiv va qulay qilish uchun interaksiyani boshqarish bilimlari;](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_29.png)
![Foydalanilgan adabiyotlar:
https://en.wikipedia.org/
https://github.com/
Head First Android Development kitobi
Android CookBook kitobi](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_30.png)
![Kurs ishini yozish talablari:
Times New Roman shriftida, yozuv o’lchami 14, satrlar oralig’i 1,5px interval,
chapdan 3sm, o’ngdan 1,5 sm, yuqori va pastdan 2 sm masofa qoldirgan
holda.](/data/documents/48cab196-69d1-4d79-a3e5-8f2b7e4ed640/page_31.png)
Restoran izlash ilovasi Reja: 1. Kirish 2. Nazariy qism: 2.1. Mobil ilovalar yaratish va uning asosiy tushunchalari 2.2. Restoran izlash ilovasi haqida ma`lumotlar 3. Asosiy qism: 3.1. Restoran izlash ilovasi dastur kodlari va izohlar 3.2. Resoran izlash ilovasi rasmlari 4. Xulosa 5. Foydalanilgan adabiyotlar
Kirish Mobil ilovalar yaratish texnologiyasi, mobil qurilmalardagi dasturlarni yaratish uchun ishlatiladigan texnologik usullar va vositalardir. Bu texnologiya, mobil ilovalarni, masalan, telefon ilovasini, o'yin ilovalarini, ijtimoiy tarmoq ilovalarini va boshqalarini yaratish uchun qo'llaniladi. Mobil ilovalar yaratish texnologiyasi quyidagi asosiy qismlardan iborat bo'lishi mumkin: Platformalar: Mobil ilovalarni yaratish uchun har bir platforma o'z o'ziga xos bo'lgan imkoniyatlarga ega bo'ladi. Eng mashhur mobil platformalar iOS (Apple tizimi) va Android (Google tizimi) hisoblanadi. Platformalar o'rtasidagi farq va qodirliklar, dasturchilar uchun bog'liq bo'lib, ularga ilovaning yo'nalishi va iste'molchilarining talablariga qarab belgilanadi. Dasturlash til va vositalari: Mobil ilovalarni yaratish uchun qo'llaniladigan turli dasturlash tillari va vositalar mavjud. Misol uchun, Java, Swift, Kotlin, C#, JavaScript va boshqalar. Bu tillar, dasturchilarga mobil ilovalar yaratishda muvaffaqiyatli bo'lishlari uchun kerakli imkoniyatlarni taqdim etadi. Bundan tashqari, dasturlash vositalari, qulaylik va soddalikni oshirish uchun yordam beradi. Gartnerbozor tadqiqot firmasi 2013-yilda 102 milliard dastur yuklab olinishini bashorat qildi (ularning 91 foizi bepul), bu esa AQShda 26 milliard dollar daromad keltiradi, bu 2012 yildagi 18 milliard dollarga nisbatan 44,4 foizga ko‘p. 2015 yilning 2-choragiga kelib faqatgina Google Play va Apple do konlari 5 milliard ʻ dollar ishlab topdi. Tahlilchilar hisobotiga ko'ra, ilovalar iqtisodiyoti Yevropa Ittifoqida yiliga 10 milliard yevrodan ortiq pul keltiradi , ilovalar bozorining o'sishi tufayli Yevropa Ittifoqining 28 davlatida 529 mingdan ortiq ish o'rni yaratilgan.
NAZARIY QISM Mobil ilovalar yaratish va uning asosiy tushunchalari Mobil ilovalar yaratish (mobil dasturlash) o'sishga va o'zgarishlarga qarab, mobil qurilmalar uchun ilovalar yaratish jarayoni. Bu ilovalar odatda iOS (Apple) va Android (Google) operatsion tizimlari uchun yaratiladi, shuningdek, boshqa mobil platformalar uchun ham mavjud bo'lishi mumkin. Mobil ilovalar yaratishning asosiy tushunchalari quyidagilardir: Ilova Konsepti : Ilovaning asosiy maqsadi, qo'llanuvchi muhitida hal qilishi kerak bo'lgan muammolarni yechish, o'z muayyan maqsadlarga erishish va foydalanuvchilar uchun qulayliklar yaratishni o'z ichiga oladi. Platforma Tanlash : Mobil ilovalarni yaratishda avvalo qo'llanuvchilarning qanday mobil platformada ishlaydi ekanligini aniqlash lozim. Eng mashhur mobil platformalar iOS va Android bo'lib, ularning yaratish tillari (Swift, Objective-C iOS uchun; Java, Kotlin Android uchun) bilan ilovalarni yaratish mumkin. Dizayn : Ilovaning dizayni, yani interfeysi, foydalanuvchilar bilan o'zaro munosabatlarda ishtirok etadi. Uning intuitiv bo'lishi, sodda vaqtlarda ishga tushirilishi, murakkablikka qarshi darajasi, jihatdan ilovaning muvaffaqiyatini ta'minlaydi. Ilova Tayyorlash : Mobil ilovalarni yaratish jarayonida kod yozish, funksiyalarni qo'shish, tizimlararo aloqalar (API) bilan integrlash va loyihani test qilishni o'z ichiga oladi. Bu jarayonda qo'llanuvchilarning talablariga javob beruvchi, xato va noaniqliklarni oldini olishga intiluvchi kod yoziladi. Testlash va Tahlil : Mobil ilovaning istiqboli va xususiyatlarini tekshirish uchun testlar va tahlillar o'tkaziladi. Bu jarayonda ilova xato yoki muammolar topgan paytda tuzatiladi, ishga tushurilgan funksiyalar to'g'ri ishlashi ta'minlanadi. E'lon va Tarqatish : Mobil ilova tayyor bo'lganda, u e'lon qilingan, dastur do'konlarida tarqatilgan yoki ommaviy tashqi veb-saytlarda taqdim etilgan bo'lishi mumkin. Bu yerga mos tashriflar jalb etilishi va foydalanuvchilarning ilovani o'rniga olishlari uchun reklama kampaniyalari amalga oshirilishi mumkin.
Mobil ilovalar yaratish jarayoni murakkabliklar va tezroq o'zgarishlarga bog'liq bo'lishi mumkin, shuning uchun muvaffaqiyatli ilovalar yaratish uchun o'zingizni mutaxassislik darajasida rivojlantirish va so'nggi texnologiyalarni kuzatish kerak. Mobil ilovalar qanday yaratilgan? Mobil ilovalar turli dasturlash tillari va ramkalar yordamida yaratilgan va ularni Apple App Store yok Google Play kabi ilovalar do‘konlaridan yuklab olish va o‘rnatish mumkin . Mobil ilovalar keng doiradagi funksiya va xizmatlarni taqdim etish va ular uchun yaratilgan qurilmalarning talablari, cheklovlari va imkoniyatlarini hisobga olgan holda ishlab chiqilgan. Misol uchun,Iphone uchun maxus ishlab chiqilgan akselerometridan foydalanishi mumkin . Boshqa misollar orasida o'yinlar , elektron pochta mijozlari va bank ilovalari mavjud. Ulardan yangiliklar va ob-havo ma lumotlari kabi ma lumotlarga kirish, ʼ ʼ onlayn xarid qilish va sayohatni bron qilish kabi vazifalarni bajarish uchun ham foydalanish mumkin. Mahalliy ilovalar Mahalliy mobil ilova - bu maxsus kodlash tilidan foydalangan holda Android yoki IOS kabi ma'lum turdagi qurilmalar platformalari uchun yaratilgan va ishlab chiqilgan ilova turi. Ilovani yaratish uchun ishlab chiquvchilar tanlagan kodlash tiliga qurilma platformasi tomonidan ruxsat berilishi kerak. Ushbu turkum uchun odatiy ilovalar xususiyatlari oflayn mobil o'yinlar, lug'at ilovalari va boshqalar bo'lishi mumkin. Mahalliy ilovalarning asosiy afzalligi ularning yuqori va ajoyib foydalanuvchi tajribasidir. Hamma narsani hisobga olsak, ularni yaratgan dizaynerlar mahalliy UI qurilmalaridan foydalanadilar. Keng ko'lamli API-ga kirish, shuningdek, ishlab chiqish ishlarini tezlashtirishga yordam beradi va ilovalardan foydalanish chegaralarini kengaytiradi. Mahalliy ilovalar ilovalar do'konlaridan yuklab olinishi
va to'g'ridan-to'g'ri qurilmalarga kiritilishi kerak. Shuning uchun ular birinchi navbatda jiddiy tarqatish jarayonidan o'tishlari kerak. Odatda, o'yinda barcha tasvirlar, tovushlar va darajalar yuklab olinadi, shuning uchun foydalanuvchi o'yinni internetga ulanmasdan o'ynashi mumkin (ba'zi o'yinlar sizdan internetga ulanishni talab qiladi, chunki ular tizimga kirish, ichidagi narsalarni sotib olish yoki sotish, yoki ular onlayn o'yinlar bo'lgani uchun). Hamma biladigan mahalliy mobil ilovaning yana bir keng tarqalgan misoli Facebook. Veb ilovalar Veb-ilovalar mahalliy mobil ilovalarga mos keladigan va mobil qurilmalarda ishlaydigan dasturiy ilovalar. Biroq, mahalliy ilovalar va veb-ilovalar o'rtasida jiddiy farqlar mavjud. Yangi boshlanuvchilar uchun veb-ilovalar ishlash uchun brauzerlardan foydalanadi va ular odatda CSS, HTML5 yoki JavaScript-da yozilgan. Bunday ilovalar mijozni URL manziliga yo'naltiradi va keyin ularga ilovani tanishtirish imkoniyatini beradi. Natijada, veb-ilovalar mijozlarni kelajakda ko'rish uchun bunday sahifalarda xatcho'p qo'yishga majbur qiladi. Shuning uchun ular eng kam xotirani talab qiladi. Veb-ilovalar mahalliy ilovalar bilan solishtirganda bir xil tashkil etish usulini amalga oshiradi, ammo mobil qurilmangizdagi veb-sayt brauzeri orqali kirish mumkin. Ular qurilmangizga kodni yuklab olish va o'rnatish nuqtai nazaridan mustaqil ilovalar emas. Ular haqiqatan ham sezgir veb-saytlar bo'lib, foydalanuvchi interfeysini mijozning qurilmasiga moslashtiradi. Rostini aytsam, veb-ilovani "o'rnatish" tanlovini ko'rib chiqsangiz, u ko'pincha qurilmangizdagi sayt URL manzilini xatcho'p qiladi.