مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

خدمات مبتنی بر مکان در اندروید


خدمات مبتنی بر مکان در اندروید

 

 

رابط های برنامه نویسی (API) اندروید برای خدمات مبتنی بر مکان ، ساخت برنامه هایی که نیاز به استفاده از موقعیت مکانی دارند را آسان می کند. چون در صورت استفاده از آنها نیازی به دانستن جزئیات فنی مورد استفاده در فناوری های مکانی را ندارید. این امر با کمک سرویس های Google Play امکان پذیر می شود ، که با ردیابی خودکار مکان و داده های مربوط به مکان ، استفاده از  این داده ها را در برنامه شما تسهیل می کند.

این آموزش به شما نشان می دهد که چگونه از داده های موقعیت مکانی در برنامه خود برای دریافت مکان فعلی ، به روزرسانی های دوره ای مکان ، جستجوی آدرس ها و غیره استفاده کنید.

 

 

کاربرد شی Location 

 

شی Location موقعیت جغرافیایی را نشان می دهد که می تواند شامل عرض جغرافیایی ، طول جغرافیایی ، زمان و سایر اطلاعات مفید مانند bearing ، ارتفاع و سرعت باشد. متد های زیر در کلاس Location وجود دارد که می تواند برای استخراج داده های خاصی از شی Location استفاده شود:

  • float distanceTo(Location dest) : فاصله تقریبی را به متر بین این مکان و مکان داده شده برمی گرداند.
  • ()float getAccuracy: دقت تقریبی این مکان را بر حسب متر دریافت کنید.
  • ()double getAltitude : در صورت وجود این داده ، ارتفاع را بر حسب متر از سطح دریا دریافت کنید.
  • ()float getBearing : گرای (bearing) را بر حسب درجه دریافت کنید. bearing یا گرای ، زاویه افقی با شمال جغرافیایی است، مثلاً شرق دارای ۹۰ درجه bearing است.
  • ()double getLatitude : عرض جغرافیایی را بر حسب درجه دریافت کنید.
  • ()double getLongitude : طول جغرافیایی را بر حسب درجه دریافت کنید.
  • ()float getSpeed : در صورت موجود بودن سرعت روی زمین ، آن را بر حسب متر بر ثانیه دریافت کنید.
  • ()boolean hasAccuracy : اگر این شی location دارای داده میزان دقت (accuracy) داشته باشد true بر می گرداند.
  • ()boolean hasAltitude : اگر این شی location دارای داده ارتفاع باشد true بر می گرداند.
  • ()boolean hasBearing : اگر این شی location دارای داده bearing باشد true بر می گرداند.
  • ()boolean hasSpeed : اگر این شی location دارای داده سرعت باشد true بر می گرداند.
  • ()void reset : داده های درون این شی location را پاک می کند.
  • void setAccuracy(float accuracy) : دقت تخمینی بر حسب متر را برای این مکان تنظیم کنید.
  • void setAltitude(double altitude) : ارتفاع را بر حسب متر از سطح دریا تنظیم کنید.
  • void setBearing(float bearing) : گرای (bearing) را بر حسب درجه تنظیم کنید.
  • void setLatitude(double latitude) : عرض جغرافیایی را بر حسب درجه تنظیم کنید.
  • void setLongitude(double longitude) : طول جغرافیایی را بر حسب درجه تنظیم کنید.
  • void setSpeed(float speed) : سرعت روی زمین را بر حسب متر بر ثانیه تنظیم کنید.
  • ()String toString : رشته ای را که حاوی توصیف مختصر و قابل خواندن توسط انسان است ، (از داده های درون این مکان) برمی گرداند.

 

 

بدست آوردن مکان فعلی

 

برای بدست آوردن موقعیت مکانی فعلی ، یک client موقعیت مکانی ایجاد کنید که شی LocationClient باشد ، آن را با استفاده از متد connect به سرویس های موقعیت مکانی متصل کرده و سپس با فراخوانی متد getLastLocation داده های آخرین مکان را بدست آورید. این متد جدیدترین مکان را به صورت شی location که حاوی مختصات عرض و طول و سایر اطلاعات به شرح بالا است ، برمی گرداند. برای داشتن عملکرد مبتنی بر مکان در Activity خود ، باید دو رابط interface را پیاده سازی کنید:

 

  • GooglePlayServicesClient.ConnectionCallbacks
  • GooglePlayServicesClient.OnConnectionFailedListener

 

این رابط ها متد های مهم زیر را ارائه می دهند که شما باید آنها را در کلاس activity خود پیاده سازی کنید:

 

  • abstract void onConnected(Bundle connectionHint) : این متد پاسخگویی (callback) هنگامی فراخوانی می شود که سرویس موقعیت مکانی با موفقیت به LocationClient متصل شود. برای اتصال به LocationClient از متد connect استفاده خواهید کرد.
  • ()abstract void onDisconnected : این متد پاسخگویی (callback) وقتی اتصال به مشتری قطع می شود فراخوانی می شود. برای قطع ارتباط با LocationClient ، از متد disconnect استفاده خواهید کرد.
  • abstract void onConnectionFailed(ConnectionResult result) : این متد پاسخگویی (callback) هنگامی فراخوانی می شود که خطایی در اتصال مشتری به سرویس وجود داشته باشد.

 

باید LocationClient را درون متد onCreate اکتیویتی خود ایجاد کنید ، سپس آن را در متد onStart متصل کنید ، به طوری که در زمانی که اکتیویتی شما کاملاً قابل مشاهده است ، خدمات موقعیت مکانی ، داده های مکان فعلی را حفظ کند . باید مشتری را درون متد onStop قطع کنید که وقتی برنامه شما قابل مشاهده نیست ، خدمات موقعیت مکانی ، مکان فعلی را حفظ نکند. این کار تا حد زیادی در صرفه جویی در مصرف باتری کمک می کند.

 

 

دریافت مکان به روز شده

 

اگر می خواهید به روزرسانی موقعیت مکانی داشته باشید ، جدا از رابط های interface فوق الذکر ، باید رابط LocationListener را نیز پیاده سازی کنید. این رابط متد پاسخ گویی (callback) زیر را ارائه می دهد که باید آن را در کلاس Activity خود پیاده سازی کنید:

  • abstract void onLocationChanged(Location location) : این متد پاسخگویی برای دریافت اعلان ها از LocationClient هنگام تغییر مکان استفاده می شود.

 

 

کیفیت خدمات مکان

 

شی LocationRequest برای درخواست کیفیت خدمات (QoS) برای به روزرسانی مکان از LocationClient استفاده می شود. متد های مفید تنظیم کننده زیر وجود دارد که می توانید از آنها برای مدیریت کیفیت خدمات (QoS) استفاده کنید. متدهای متناظری برای دریافت تنظیمات وجود دارد که می توانید آنها را در آموزش های رسمی اندروید ببینید.

 

  • setExpirationDuration(long millis) : مدت زمان این درخواست را بر حسب میلی ثانیه تنظیم کنید. پس از این زمان درخواست منقضی می شود.
  • setExpirationTime(long millis) : زمان انقضای درخواست را بر حسب میلی ثانیه از زمان راه اندازی تنظیم کنید.
  • setFastestInterval(long millis) : به طور صریح، سریعترین فاصله زمانی (وقفه) را برای به روزرسانی مکان ، بر حسب میلی ثانیه تنظیم کنید.
  • setInterval(long millis) : فاصله زمانی (وقفه) مورد نظر را برای به روزرسانی های مکان ، بر حسب میلی ثانیه تنظیم کنید.
  • setNumUpdates(int numUpdates) : تعداد به روزرسانی های مکان را تنظیم کنید.
  • setPriority(int priority) : اولویت درخواست را تعیین کنید.

 

اکنون به عنوان مثال ، اگر برنامه شما مکان با دقت بالا می خواهد ، باید یک درخواست مکان با setPriority (اولویت) تنظیم شده روی PRIORITY_HIGH_ACCURACY و setInterval  (وقفه) روی 5 ثانیه (۵۰۰۰ میلی ثانیه) ایجاد کند. همچنین می توانید وقفه بزرگتر و/یا اولویت دیگری استفاده کنید. مثلاً برای دقتی در حد «شهر» می توانید از اولویت PRIORITY_LOW_POWER یا برای دقتی در حد «بلوک» می توانید از  PRIORITY_BALANCED_POWER_ACCURACY استفاده کنید.

 

اکتیویتی ها هنگام ورود به پس زمینه (به عنوان مثال در onPause) حتماً باید حذف تمام درخواست های مکان را در نظر بگیرند ، یا حداقل درخواست را با وقفه ای بزرگتر و کیفیت پایین تر عوض کنند تا در مصرف منابع سیستم و انرژی صرفه جویی شود.

 

 

نمایش آدرس مکان

 

وقتی شی location را داشته باشید ، می توانید از متد Geocoder.getFromLocation برای گرفتن آدرس از طول  و عرض جغرافیایی استفاده کنید. این متد همزمان است و ممکن است مدت زمان زیادی طول بکشد تا کار خود را انجام دهد ، بنابراین باید در پس زمینه فراخوانی شود مثلاً داخل متد doInBackground یک کلاس AsyncTask فراخوانی شود.

برای استفاده از AsyncTask باید کلاسی بسازید که از آن ارث بری داشته باشد  و زیر کلاس شما برای انجام وظیفه در پس زمینه باید متد doInBackground را override کند. در صوت نیاز به استفاده از نتیجه در رابط کاربری باید متد onPostExecute  را override کنید چون پس از اتمام محاسبات در پس زمینه این متد در Thread رابط کاربری فراخوانی می شود تا در صورت نیاز نتیجه نمایش داده شود.

 

 

برنامه نمونه

 

مثال زیر به شما نشان می دهد که چگونه از برنامه های موقعیت مکانی در برنامه خود برای دریافت مکان فعلی و آدرس های معادل آن و غیره استفاده کنید.

برای آزمایش این مثال ، شما به دستگاه موبایل واقعی مجهز به اندروید به روز شده، نیاز خواهید داشت ، در صورت استفاده از شبیه ساز ممکن است این برنامه در آن کار نکند و به زحمت بیفتید ولی اگر از شبیه ساز استفاده می کنید ، از شبیه سازی استفاده کنید که Google Play داشته باشد.

 

مراحل ساخت این برنامه نمونه:

  1. برای ایجاد یک برنامه اندرویدی از اندروید استودیو استفاده کنید و نام آن را Location بگذارید. نام بسته (package) آن را نیز com.loc.test.location قرار دهید.
  2. فایل src/GPSTracker.java را می سازیم و کدهای لازم را به آن اضافه می کنیم.
  3. فایل src/MainActivity.java را اصلاح می کنیم و کد مورد نیاز را به صورتی که در ادامه توضیح داده می شود به آن اضافه می کنیم تا محل فعلی و آدرس معادل آن را دریافت کنیم.
  4. فایل XML لایوت res/layout/activity_main.xml را تغییر می دهیم تا اجزای مورد نیاز برای رابط کاربری را به آن اضافه کنیم.
  5. فایل res/values/strings.xml را تغییر می دهیم و ثابت های متنی را به آن اضافه می کنیم.
  6. فایل AndroidManifest.xml را به صورتی که در ادامه می بینید تغییر می دهیم.
  7. برنامه را اجرا و نتیجه تغییرات انجام شده در برنامه را بررسی می کنیم.

 

در زیر محتوای فایل اکتیویتی اصلی تغییر یافته MainActivity.java است:


package com.loc.test.location;

import android.Manifest;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.test.mock.MockPackageManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

   Button btnShowLocation;
   private static final int REQUEST_CODE_PERMISSION = 2;
   String mPermission = Manifest.permission.ACCESS_FINE_LOCATION;

   // GPSTracker class
   GPSTracker gps;

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
		
      try {
         if (ActivityCompat.checkSelfPermission(this, mPermission)
            != MockPackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(this, new String[]{mPermission}, 
               REQUEST_CODE_PERMISSION);

            // If any permission above not allowed by user, this condition will execute every time, else your else part will work
         }
      } catch (Exception e) {
         e.printStackTrace();
      }

      btnShowLocation = (Button) findViewById(R.id.button);

      // show location button click event
      btnShowLocation.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
            // create class object
            gps = new GPSTracker(MainActivity.this);

            // check if GPS enabled
            if(gps.canGetLocation()){

               double latitude = gps.getLatitude();
               double longitude = gps.getLongitude();

               // \n is for new line
               Toast.makeText(getApplicationContext(), "Your Location is - \nLat: "
                  + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
            }else{
               // can't get location
               // GPS or Network is not enabled
               // Ask user to enable GPS/network in settings
               gps.showSettingsAlert();
            }

         }
      });
   }
}

 

در زیر محتویات فایل GPSTracker.java را می بینید:


package com.loc.test.location;

import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.util.Log;

public class GPSTracker extends Service implements LocationListener {

   private final Context mContext;

   // flag for GPS status
   boolean isGPSEnabled = false;

   // flag for network status
   boolean isNetworkEnabled = false;

   // flag for GPS status
   boolean canGetLocation = false;

   Location location; // location
   double latitude; // latitude
   double longitude; // longitude

   // The minimum distance to change Updates in meters
   private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

   // The minimum time between updates in milliseconds
   private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

   // Declaring a Location Manager
   protected LocationManager locationManager;

   public GPSTracker(Context context) {
      this.mContext = context;
      getLocation();
   }

   public Location getLocation() {
      try {
         locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);

         // getting GPS status
         isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

         // getting network status
         isNetworkEnabled = locationManager
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

         if (!isGPSEnabled && !isNetworkEnabled) {
            // no network provider is enabled
         } else {
            this.canGetLocation = true;
            // First get location from Network Provider
            if (isNetworkEnabled) {
               locationManager.requestLocationUpdates(
                  LocationManager.NETWORK_PROVIDER,
                  MIN_TIME_BW_UPDATES,
                  MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
						
               Log.d("Network", "Network");
               if (locationManager != null) {
                  location = locationManager
                     .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
							
                  if (location != null) {
                     latitude = location.getLatitude();
                     longitude = location.getLongitude();
                  }
               }
            }
				
            // if GPS Enabled get lat/long using GPS Services
            if (isGPSEnabled) {
               if (location == null) {
                  locationManager.requestLocationUpdates(
                     LocationManager.GPS_PROVIDER,
                     MIN_TIME_BW_UPDATES,
                     MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
							
                  Log.d("GPS Enabled", "GPS Enabled");
                  if (locationManager != null) {
                     location = locationManager
                        .getLastKnownLocation(LocationManager.GPS_PROVIDER);
								
                     if (location != null) {
                        latitude = location.getLatitude();
                        longitude = location.getLongitude();
                     }
                  }
               }
            }
         }

      } catch (Exception e) {
         e.printStackTrace();
      }

      return location;
   }

   /**
      * Stop using GPS listener
      * Calling this function will stop using GPS in your app
   * */
	
   public void stopUsingGPS(){
      if(locationManager != null){
         locationManager.removeUpdates(GPSTracker.this);
      }
   }

   /**
      * Function to get latitude
   * */
	
   public double getLatitude(){
      if(location != null){
         latitude = location.getLatitude();
      }

      // return latitude
      return latitude;
   }

   /**
      * Function to get longitude
   * */
	
   public double getLongitude(){
      if(location != null){
         longitude = location.getLongitude();
      }

      // return longitude
      return longitude;
   }

   /**
      * Function to check GPS/wifi enabled
      * @return boolean
   * */
	
   public boolean canGetLocation() {
      return this.canGetLocation;
   }

   /**
      * Function to show settings alert dialog
      * On pressing Settings button will lauch Settings Options
   * */
	
   public void showSettingsAlert(){
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

      // Setting Dialog Title
      alertDialog.setTitle("GPS is settings");

      // Setting Dialog Message
      alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

      // On pressing Settings button
      alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog,int which) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            mContext.startActivity(intent);
         }
      });

      // on pressing cancel button
      alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
         }
      });

      // Showing Alert Message
      alertDialog.show();
   }

   @Override
   public void onLocationChanged(Location location) {
   }

   @Override
   public void onProviderDisabled(String provider) {
   }

   @Override
   public void onProviderEnabled(String provider) {
   }

   @Override
   public void onStatusChanged(String provider, int status, Bundle extras) {
   }

   @Override
   public IBinder onBind(Intent arg0) {
      return null;
   }
}

 

در زیر محتویات فایل res/layout/activity_main.xml  را می بینید:

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
   android:layout_width = "fill_parent"
   android:layout_height = "fill_parent"
   android:orientation = "vertical" >


   <Button
      android:id = "@+id/button"
      android:layout_width = "fill_parent"
      android:layout_height = "wrap_content"
      android:text = "getlocation"/>

</LinearLayout>

 

در زیر محتویات فایل res/values/strings.xml را می بینید:

<?xml version = "1.0" encoding = "utf-8"?>
<resources>
   <string name = "app_name">Location</string>
</resources>

 

در زیر محتویات فایل AndroidManifest.xml  را می بینید:

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
   package = "com.loc.test.location">
   <uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name = "android.permission.INTERNET" />
   <application
      android:allowBackup = "true"
      android:icon = "@mipmap/ic_launcher"
      android:label = "@string/app_name"
      android:supportsRtl = "true"
      android:theme = "@style/AppTheme">
		
      <activity android:name = ".MainActivity">
         <intent-filter>
            <action android:name = "android.intent.action.MAIN" />

            <category android:name = "android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>

</manifest>

 

حالا برنامه نمونه را اجرا می کنیم. یک گوشی موبایل اندرویدی واقعی را به رایانه خود وصل کنید. برای اجرای برنامه از اندروید استودیو از نوار ابزار روی نماد Run (مثلث سبز رنگ) کلیک کنید. قبل از شروع برنامه ، اندروید استودیو پنجره ای را نمایش می دهد تا دستگاهی را انتخاب کنید که می خواهید برنامه اندرویدی خود را روی آن اجرا کنید. گوشی موبایل خودتان را انتخاب کنید و OK را کلیک کنید. صفحه گوشی شما باید به شکل تصویر زیر باشد:

 

اکنون برای دیدن مکان ، دکمه دریافت موقعیت مکانی را کلیک کنید تا اطلاعات مکان را به صورت زیر نمایش داده شود:

 

 

 

فصلِ: 20 , تعداد قسمت ها: 238 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل رایگان مربوط به مفاهیم php و api نویسی …

توضیحات کلی مجموعه: دوره متخصص اندروید کلیک سایت کامل ترین دوره جامع برنامه نویسی اندروید(حتما دمو دوره را ببینید)   چرا دوره متخصص جایگزین دوره صفرتاصد اندروید شد؟ کلیک سایت تصمیم گرفت …
فصلِ: 30 , تعداد قسمت ها: 182 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت اپلیکیشن علی بابا-آموزش کالبک ها-…

دوره "متخصص" جایگزین دوره صفرتاصد اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دوره صفرتاصد شده است؟چرا باید دوره متخص…
فصلِ: 11 , تعداد قسمت ها: 121 , سطح: صفر تا صد

این فصل در یک نگاه:

عملیات شبیه فیلتر-ساخت الرت دیالوگ وچیدمان براساس فروش-مرتب سازی-نحوه خطایابی-استفاده از bottom sheet در اندروید-سبد خری…

آموزش ساخت اپلیکیشن اندروید دیجی کالا  : ساخت برنامه اندروید یکی از پر طرفدارترین آموزش های کلیک سایت می باشد. با توجه به فراگیر شدن سیستم اندروید و آشنایی افراد با این سیستم ، برنامه های ک…
فصلِ: 3 , تعداد قسمت ها: 179 , سطح: صفر تا صد

این فصل در یک نگاه:

در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…
فصلِ: 2 , تعداد قسمت ها: 58 , سطح: صفر تا صد

این فصل در یک نگاه:

توضیحات کلی مجموعه: سرفصل های دوره آموزش ساخت اپلیکیشن فیلیمو معرفی اهداف دوره مقدمه و بررسی پیش نیازهای دوره بررسی جزئی و …
فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت api key-آموزش استفاده از GPS گوشی ونمایش مکان شخص برروی نقشه-متصل کردن چند نقطه برروی نقشه با خط-رسم چند ضلعی…

حتما دمو دوره رو ببینید اولین دوره کامل کار با نقشه گوگل ومسیریابی در نقشه گوگل(این اموزش مشابه فارسی ندارد) اموزش کار با نقشه گوگل در برنامه نویسی اندروید یکی از مهم ترین مباحث هست که …
فصلِ: 1 , تعداد قسمت ها: 14 , سطح: صفر تا صد

این فصل در یک نگاه:

ساخت انواع نوتیفیکیشن ها -کار با وب سرویس پوشه-ارسال نوتیفیکیشن با سرویس پوشه-ارسال نوتیفیکیشن با one signal-اموزش کار ب…

با این مجموعه همه چیز در مورد نوتیفیکیشن و فایربیس رو خواهید اموخت یکی از مواردی که در استخدام کاربران در شرکت های برنامه نویسی بسیار موثر هست مبحث کار با firebase هست که ما دراین دوره ام…
فصلِ: 1 , تعداد قسمت ها: 16 , سطح: صفر تا صد

این فصل در یک نگاه:

لیست کردن فایل های صوتی ویدیویی گوشی-طاحی متریال وزیبا-استفاده از تب بندی-حرکت سیک بار همراه با اهنگ وزمان-ست کردن زمان …

توضیحات کلی مجموعه: اموزش ساخت یک موزیک پلیر و ویدیو پلیر ح رفه ای که کاملا کاربردی است و قابلیت نصب روی گوشی های مختلف را دارد از جمله امکانات این اپلیکیشن: لیست کردن فایل های صوتی وید…
فصلِ: 1 , تعداد قسمت ها: 61 , سطح: صفر تا صد

این فصل در یک نگاه:

اموزش ساخت اپلیکیشن کافه بازار-اشتراک گذاری اپلیکیشن-کار با رتروفیت-کاربا ران تیم پرمیشن- کار با فرگمنت ها-کار با sqlite…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دو…
فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد

این فصل در یک نگاه:

پرداخت درون برنامه ای بازار-اموزش فروش سکه-اموزش فروش اشتراک-اموزش فروش نسخه پولی-اموزش چک کردن خرید کردن کاربر-اموزش کا…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 1 , تعداد قسمت ها: 20 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش کامل پیکربندی mvp-اموزش اتصال با سرور با رتروفیت و rxjava-اموزش کار با دیتابیس-آموزش کار با bottom navigation-اموز…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 1 , تعداد قسمت ها: 35 , سطح: متوسط

این فصل در یک نگاه:

این آموزش در یک فصل شامل 35 جلسه آموزش تصویری به همراه سورس کد ارائه شده است.…

سرفصل ها مقدمه و معرفی متد آموزشی بررسی جزئی و خلاصه موارد موردنیاز پیش از آموزش شامل: کار با ویوها،  کار با کتابخانه های مختلف و ... …
فصلِ: 1 , تعداد قسمت ها: 1 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ارسال پیامک با سامانه مدیر پیامک-ارسال کد فعال سازی برنامه با پیامک-اعتبارسنجی کد فعال سازی-ثبت نام در اپلیکیشن با…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 2 , تعداد قسمت ها: 19 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ارسال توکن در اندروید -اموزش امنیت در برنامه نویسی اندروید-اموزش ارسال توکن در هدر در اندروید-اموزش ساخت token -ام…

توضیحات کلی مجموعه: دموی دوره را حتما ببینید دوره امنیت و دیزاین پترن در برنامه نویسی اندروید که شامل دو فصل هست. فصل اول شامل اموزش singletone design patern-builder design patern-command …
فصلِ: 2 , تعداد قسمت ها: 44 , سطح: صفر تا صد

این فصل در یک نگاه:

در فصل دوم این دوره بیشتر میپردازیم به کار با کتابخانه ها و موارد پیشرفته تر مانند دوربین ، ضبط صدا، دیتا بیس ، و .....…

توضیحات کلی مجموعه: سلام خدمت کلیک سایتی های عزیز مجموعه آموزشی صفر تا صد برنامه نویسی اندروید در محیط بیسیک 4 اندروید (basic 4 android) معرفی محیط بیسیک 4 اندروید محیط b4a  تحت کمپانی A…
فصلِ: 3 , تعداد قسمت ها: 61 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل جدید و اپدیت های جدید-آموزش کار با برودکست ریسیور در کاتلین-آموزش چک کردن اتصال به اینترنت در کاتلین-اموزش اپلود کرد…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 5 , تعداد قسمت ها: 21 , سطح: متوسط

این فصل در یک نگاه:

نحوه ارورگیری-رفع ایراد-رفع مشکل-اشتراک گذاری مطالب-ساخت اکتیویتی تنظیمات-اشتراک گذاری مطالب-جستجو کردن…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 5 , تعداد قسمت ها: 128 , سطح: صفر تا صد

این فصل در یک نگاه:

پرداخت درون برنامه ای بازار با کاتلین…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 8 , تعداد قسمت ها: 62 , سطح: صفر تا صد

این فصل در یک نگاه:

اپلود تصاویر روی سرور نود جی اس-کار با کانال در چت- ساخت کانال-ساخت گروه-تفاوت کانال و گروه-انلاین بودن-ارسال تصاویر در …

  توضیحات کلی مجموعه آموزش اندروید اپلیکیشن چت مشابه تلگرام( با استفاده از Socket IO ): دموی مجموعه را حتما ببینید دراین دوره سعی میشود بسیاری از اپشن هایی که اپلیکیشن موبوگرام داراست ر…
فصلِ: 6 , تعداد قسمت ها: 194 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل آپدیت های مربوط به دوره را قرار میدهیم…

با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید