بااستفاده از میاناهای برنامهسازی کاربردی مکان خدمات Google Play، برنامهتان میتواند آخرین مکان شناختهشده دستگاه کاربر را درخواست کند. در بیشتر موارد، شما به مکان فعلی کاربر علاقه دارید که معمولاً معادل آخرین مکان شناختهشده دستگاه است.
بهطور خاص، از ارائهدهنده تلفیقی مکان برای بازیابی آخرین مکان شناختهشده دستگاه استفاده کنید. ارائهدهنده تلفیقی مکان یکی از میاناهای برنامهسازی کاربردی مکان در «خدمات Google Play» است. این میانای برنامهسازی کاربردی فناوری مکانیابی زیربنایی را مدیریت میکند و میانای برنامهسازی کاربردیای ارائه میدهد تا بتوانید الزامات را در سطح بالایی، مثل دقت بالا یا مصرف کم باتری، مشخص کنید. همچنین استفاده دستگاه از شارژ باتری را بهینه میکند.
این درس به شما نشان میدهد که چگونه بااستفاده از روش getLastLocation() در ارائهدهنده تلفیقی مکان،
یک درخواست تکی برای مکان دستگاه ایجاد کنید.
راهاندازی «خدمات Google Play»
برای دسترسی به ارائهدهنده تلفیقی مکان، پروژه توسعه برنامهتان باید شامل خدمات Google Play باشد. جزء «خدمات Google Play» را ازطریق مدیر SDK بارگیری و نصب کنید و کتابخانه را به پروژهتان اضافه کنید. برای جزئیات، به راهنمای راهاندازی خدمات Google Play مراجعه کنید.
مشخص کردن اجازههای برنامه
برنامههایی که ویژگیهایشان از خدمات مکان استفاده میکند باید بسته به موارد استفاده آن ویژگیها، اجازههای مکان را درخواست کنند.
ایجاد کارخواه خدمات مکان
در روش onCreate() فعالیتتان، نمونهای از
«کارخواه ارائهدهنده تلفیقی مکان» ایجاد کنید، همانطور که در تکهکد زیر نشان داده شده است.
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
دریافت آخرین مکان مشخص
پساز ایجاد کردن کارخواه «خدمات مکان»، میتوانید آخرین مکان شناختهشده دستگاه کاربر را دریافت کنید. از روش getLastLocation() ارائهدهنده تلفیقی مکان برای بازیابی مکان دستگاه استفاده کنید. دقت
مکان برگرداندهشده توسط این فراخوانی با
تنظیمات اجازهای که در مانیفست برنامهتان قرار میدهید تعیین میشود، همانطور که
در راهنمای نحوه درخواست اجازههای مکان شرح داده شده است.
برای درخواست آخرین مکان مشخص، روش getLastLocation() را فراخوانی کنید.
تکهکد زیر درخواست و مدیریت پایه پاسخ را نشان میدهد:
fusedLocationClient.lastLocation .addOnSuccessListener { location: Location? -> // Got last known location. In some rare situations this can be null. }
روش getLastLocation() Task را برمیگرداند که میتوانید از آن
برای دریافت شیء Location با مختصات طول جغرافیایی و عرض جغرافیایی
مکان جغرافیایی استفاده کنید. شیء مکان ممکن است در شرایط زیر null باشد:
- مکان در تنظیمات دستگاه خاموش است. حتی اگر آخرین مکان قبلاً بازیابی شده باشد، نتیجه میتواند
nullباشد، زیرا غیرفعال کردن مکان، حافظه پنهان را نیز پاک میکند. - دستگاه هرگز مکانش را ضبط نکرده است، که میتواند درمورد دستگاه جدید یا دستگاهی که به تنظیمات کارخانه بازگردانده شده است صدق کند.
- «خدمات Google Play» در دستگاه بازراهاندازی شده است و هیچ مشتری فعال «ارائهدهنده تلفیقی مکان» وجود ندارد که پساز بازراهاندازی خدمات، مکان را درخواست کرده باشد. برای جلوگیری از این وضعیت، میتوانید مشتری جدیدی ایجاد کنید و خودتان بهروزرسانیهای مکان را درخواست کنید. برای اطلاعات بیشتر، درخواست بهروزرسانی مکان را ببینید.
انتخاب بهترین تخمین مکان
FusedLocationProviderClient چندین روش برای بازیابی اطلاعات مکان دستگاه ارائه میدهد. بسته به مورد استفاده برنامهتان، یکی از گزینههای زیر را انتخاب کنید:
getLastLocation()تخمین مکان را سریعتر دریافت میکند و مصرف باتری را که میتواند به برنامه شما نسبت داده شود بهحداقل میرساند. بااینحال، اگر هیچ مشتری دیگری اخیراً بهطور فعال از مکان استفاده نکرده باشد، ممکن است اطلاعات مکان قدیمی باشد.getCurrentLocation()مکان جدیدتر و دقیقتری را بهطور مداومتر دریافت میکند. اما این روش میتواند باعث شود محاسبه مکان فعال در دستگاه انجام شود.این روش توصیهشده برای دریافت مکان جدید است، هر زمان که ممکن باشد، و ایمنتر از جایگزینهایی مانند شروع و مدیریت بهروزرسانیهای مکان توسط خودتان بااستفاده از
requestLocationUpdates()است. اگر برنامهتانrequestLocationUpdates()را فراخوانی کند، گاهیاوقات اگر مکان دردسترس نباشد یا اگر درخواست پساز دریافت مکان جدید بهدرستی متوقف نشود، برنامهتان میتواند مقدار زیادی انرژی مصرف کند.
منابع بیشتر
برای کسب اطلاعات بیشتر درباره واکشی مکان فعلی در Android، مطالب زیر را مشاهده کنید:
نمونهها
- برنامه نمونه برای نشان دادن روالهای مطلوب هنگام واکشی مکان فعلی.