دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۹
  • آبان

جلسه ۱۹ : سرویس های مبتنی بر مکان در اندروید

  • دسته‌بندی‌ها :
جلسه ۱۹ : سرویس های مبتنی بر مکان در اندروید
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. API های موقعیت مکانی Android بدون نیاز به تمرکز بر جزئیات تکنولوژی موقعیت مکانی، برای شما دسترسی و اجرای برنامه های کاربردی ناشناخته را آسان می کند. افزودن این قابلیت به برنامه های اندروید با افزودن سرویس Google Play امکان پذیر است که باعث ردیابی خودکار موقعیت مکانی شما ، geofencing و تشخیص activity می شود،در ادامه ی مباحث این آموزش برای آشنایی با سرویس های مبتنی بر مکان در اندروید با ما همراه باشید.

      سرویس های مبتنی بر مکان در اندروید

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

      آبجکت Location

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

      متد های مهمی در زیر وجود دارد که شما می توانید با استفاده از شیء Location برای دریافت اطلاعات خاص مکان از آن استفاده کنید:

      ردیفمتد و توضیحات
      ۱float distanceTo(Location dest)

      فاصله تقریبی در متر بین این محل و محل مشخص شده را نشان می دهد.

      ۲float getAccuracy()

      دقت تخمینی این مکان را در متر تحویل می دهد.

      ۳double getAltitude()

      ارتفاع در صورت موجود بودن، برحسب متر بالاتر از سطح دریا محاسبه می کند.

      ۴float getBearing()

      دریافت تحمل، در درجه.

      ۵double getLatitude()

      عرض جغرافیایی را در درجه بندی می کند.

      ۶double getLongitude()

      طول جغرافیایی، بر حسب در درجه بر می گرداند.

      ۷float getSpeed()

      سرعت را بر حسب متر بر ثانیه بر می گرداند.

      ۸boolean hasAccuracy()

      اگر مکتن فعلی دقت داشته باشد True را برمی گرداند.

      ۹boolean hasAltitude()

      اگر مکان فعلی ارتفاع داشته باشد Trueرا برمی گرداند.

      ۱۰boolean hasBearing()

      اگر مکان دارای تحمل باشد Trueرا برمی گرداند.

      ۱۱boolean hasSpeed()

      اگر مکان دارای یک سرعت باشد True را برمی گرداند.

      ۱۲void reset()

      محتویات محل پاک می شود.

      ۱۳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()

      یک رشته حاوی توضیحات مختصر که برای انسان قابل درک باشد را برمی گرداند.

      دریافت موقعیت مکانی کنونی

      برای بدست آوردن مکان فعلی، یک کلاینت را ایجاد کنید که شیء LocationClient باشد.

      سپس آن را با استفاده از متد ()connect به Location Services متصل کنید.

      سپس با متد  getLastLocation () آن را دریافت کنید.

      این متد آخرین موقعیت مکانی را به شکل شیء موقعیت مکانی که حاوی مختصات طول و عرض جغرافیایی و سایر اطلاعات است که در بالا توضیح داده می شود، به دست می آورد.

      برای داشتن قابلیت مکان بر اساس فعالیت خود، شما باید دو رابط کاربری را اجرا کنید:

      • GooglePlayServicesClient.ConnectionCallbacks
      • GooglePlayServicesClient.OnConnectionFailedListener

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

      ردیفمتد و توضیحات آن
      ۱abstract void onConnected(Bundle connectionHint)

      این متد زمانیکه کاربر به سرویس موقعیت مکانی (با متد () connect که توسط برنامه نویس به کار رفته) متصل شود فراخوانی می شود.

       

      ۲abstract void onDisconnected()

      این متد زمانیکه کاربر (با متد ()disconnect که توسط برنامه نویس به کار رفته ) سرویس موقعیت مکانی را قطع کند فراخوانی می شود.

       

      ۳abstract void onConnectionFailed(ConnectionResult result)

      این روش فراخوانی هنگامی رخ می دهد که یک خطا در اتصال مشتری به سرویس وجود داشته باشد.

      شما باید در کلاینت () locationCreate از کلاس فعالیت خود ایجاد کنید.

      سپس آن را در () onStart  متصل کنید، به طوری که خدمات مکان، محل فعلی را حفظ می کنند.

      در حالی که فعالیت شما به طور کامل قابل مشاهده است. شما باید مشتری را در متد () onStop جدا کنید.

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

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

      با استفاده از اینترفیس LocationListener می توانید موقعیت مکانی خود را آپدیت کنید.

      این اینترفیس متد بازگشتی زیر را فراهم می کند:

      ردیفمتد و توضیحات آن
      ۱abstract void onLocationChanged(Location location)

      از این متد برای دریافت اطلاعیه ها از LocationClient زمانی که مکان تغییر کند استفاده می شود.

      کیفیت موقعیت مکانی

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

      متدهای Setter زیر برای دسترسی به  سرویس (QoS) کاربرد دارند:

      ردیفمتد و توضیحات مربوطه
      ۱setExpirationDuration(long millis)

      مدت زمان درخواست را در میلی ثانیه تنظیم می کند.

      ۲setExpirationTime(long millis)

      زمان انقضای درخواست را در millisecond از زمان بوت تنظیم می کند.

      ۳setFastestInterval(long millis)

      سریع ترین فاصله را برای به روز رسانی مکان ها را در میلی ثانیه تنظیم می کند.

       

      ۴setInterval(long millis)

      فاصله زمانی مورد نظر را برای به روز رسانی مکان فعال در میلی ثانیه تنظیم می کند.

      ۵setNumUpdates(int numUpdates)

      تعداد آپدیت های مکان را تنظظیم می کند.

      ۶setPriority(int priority)

      اولویت درخواست ها را تنظیم می کند.

      اکنون برای مثال، اگر برنامه شما موقعیت مکانی دقت بالا را داشته باشد، باید درخواست موقعیت مکانی را با setPriority (int) تعیین شده به PRIORITY_HIGH_ACCURACY و setInterval (long) تا ۵ ثانیه ایجاد کنید.

      شما همچنین می توانید از فاصله زمانی و / یا اولویت های دیگر مانند PRIORITY_LOW_POWER برای درخواست دقت سطح شهر یا PRIORITY_BALANCED_POWER_ACCURACY برای دقت سطح بلوک استفاده کنید.

      نمایش آدرس موقعیت مکانی

      هنگامی که محل شی را داشته باشید، می توانید از متد () Geocoder.getFromLocation برای دریافت یک آدرس بر اساس عرض و طول داده شده استفاده کنید.

      این متد همزمان اجرا می شود و ممکن است طول بکشد تا کار خود را انجام دهد.

      بنابراین شما باید متد را با استفاده از از متد ()doInBackground کلاس AsyncTask فراخوانی کنید.

      AsyncTask باید طبقه بندی شود تا مورد استفاده قرار گیرد و زیر کلاس متد doInBackground (Params ...) را برای انجام یک کار در پس زمینه جایگزین می کند.

      متد OnPostExecute (Result) بعد از پایان محاسبات پس از اتمام در محدوده UI فراخوانی می شود.

      در آن زمان نمایش نتایج یکی از متد های مهم دیگری که در AyncTask موجود است اجرا می شود.

      مثال

      مثال زیر به شما نحوه استفاده از خدمات موقعیت مکانی در برنامه خود نشان می دهد تا مکان فعلی و آدرس معادل آن را دریافت کنید:

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

      چرا که شبیه ساز اندروید ممکن است برای اجرای این مثال به خوبی کار نکند.

      ایجاد اپلیکیشن اندروید

      مراحلتوضیحات
      ۱مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی دنبال کرده و نام پکیج را com.pvlearn.pvlearn.myapplication قرار بدهید.
      ۲فایل src/GPSTracker.java را به همراه کد های مورد نیاز ایجاد کنید.
      ۳محتوای فایل  src / MainActivity.java را با افزودن کدی که موقعیت مکانی را دریافت کرده و آدرس آن را حفظ کند ویرایش کنید.
      ۴به محتوای فایل  res / layout / activity_main.xml سه Button و دو text view برای نمایش موقعیت مکانی و آدرس اضافه کنید.
      ۵محتوای فایل res/values/strings.xml را برای مقدارهای ثابت تغییر دهید.
      ۶محتوای AndroidManifest.xml را همانطور که در ادامه نشان می دهیم تغییر دهید.
      ۷برنامه را اجرا کنید تا شبیه ساز اندروید نتیجه را نمایش دهد.

      محتوای ویرایش شده ی main activity که در فایل MainActivity.java است ، به صورت زیر خواهد بود:

      مثال : 

      محتوای فایل main activity که تغییر یافته در فایل GPSTracker.java به صورت زیر خواهد بود:

      مثال : 

      محتوای فایل res/layout/activity_main.xml :

      مثال : 

      محتوای فایل رشته ای res/values/strings.xml:

      مثال : 

      محتوای پیش فرض فایل AndroidManifest.xml :

      مثال : 

      اجرای برنامه

      برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.

      سپس روی نماد  (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.

      اگر همه چیز بخوبی پیش برود شبیه ساز اندروید پنجره ی زیر را نمایش خواهد داد:

      سرویس های مبتنی بر مکان در اندروید

      سرویس های مبتنی بر مکان در اندروید

      اکنون برای دیدن موقعیت مکانی دکمه Get Location را انتخاب کنید که اطلاعات مکان را به صورت زیر نمایش می دهد:

      سرویس های مبتنی بر مکان در اندروید

      سرویس های مبتنی بر مکان در اندروید

      کلام آخر

      یکی از قابلیت های ویژه ی اندروید قابلیت دسترسی و نمایش اطلاعات مربوط به موقعیت مکانی است که کاربردهای بسیار زیادی در اپلیکیشن های مختلف اندروید دارد، از این رو مباحث این بخش را به سرویس های مبتنی بر مکان در اندروید اختصاص دادیم.

      QR:  جلسه ۱۹ : سرویس های مبتنی بر مکان در اندروید
      به اشتراک بگذارید