این بخش برخیاز سناریوهای معمول جمعآوری مکان را بههمراه توصیههایی برای استفاده بهینه از میاناهای برنامهسازی کاربردی حصارکشی جغرافیایی و ارائهدهنده تلفیقی مکان شرح میدهد.
بهروزرسانیهای پیشزمینه یا قابلمشاهده برای کاربر
مثال: برنامه نقشهبرداری که به بهروزرسانیهای مکرر و دقیق با تأخیر بسیار کم نیاز دارد. همه بهروزرسانیها در پیشنما اتفاق میافتد: کاربر فعالیتی را شروع میکند، دادههای مکان را مصرف میکند، و سپس فعالیت را پساز مدت کوتاهی متوقف میکند.
از روش setPriority() با مقدار
PRIORITY_HIGH_ACCURACY یا PRIORITY_BALANCED_POWER_ACCURACY استفاده کنید.
فاصله زمانی مشخصشده در روش setIntervalMillis() به مورد استفاده بستگی دارد: برای سناریوهای همزمان، مقدار را روی چند ثانیه تنظیم کنید؛ درغیراینصورت، آن را به چند دقیقه محدود کنید (برای بهحداقل رساندن مصرف باتری، تقریباً دو دقیقه یا بیشتر توصیه میشود).
دانستن مکان دستگاه
مثال: برنامه آبوهوا میخواهد مکان دستگاه را بداند.
از روش getLastLocation() استفاده کنید که جدیدترین مکان دردسترس را برمیگرداند (که در موارد نادر ممکن است تهی باشد). این روش راهی ساده برای دریافت مکان ارائه میدهد و هزینههای مرتبط با درخواست فعالانه بهروزرسانیهای مکان را متحمل نمیشود. از آن در ترکیب با روش
isLocationAvailable() استفاده کنید که وقتی مکان
برگرداندهشده توسط getLastLocation() بهطور منطقی بهروز باشد، true را برمیگرداند.
شروع بهروزرسانیها وقتی کاربر در مکان خاصی است
مثال: درخواست بهروزرسانی وقتی کاربر در فاصله مشخصی از محل کار، خانه، یا مکان دیگری قرار دارد.
از حصارکشی جغرافیایی همراه با بهروزرسانیهای ارائهدهنده تلفیقی مکان استفاده کنید. وقتی برنامه راهانداز ورود به حصار جغرافیایی را دریافت میکند، بهروزرسانی درخواست کنید و وقتی برنامه راهانداز خروج از حصار جغرافیایی را دریافت میکند، بهروزرسانیها را بردارید. این کار تضمین میکند که برنامه فقط زمانی بهروزرسانیهای مکان با جزئیات بیشتر را دریافت میکند که کاربر وارد منطقه تعریفشدهای شده باشد.
گردش کار معمول برای این سناریو میتواند شامل نمایش اعلان درهنگام انتقال ورود به حصار جغرافیایی و راهاندازی فعالیتی باشد که حاوی کد درخواست بهروزرسانی درهنگام ضربه زدن کاربر روی اعلان است.
شروع بهروزرسانیها براساس وضعیت فعالیت کاربر
مثال: درخواست بهروزرسانی فقط زمانی که کاربر درحال رانندگی یا دوچرخهسواری است.
از Activity Recognition API در ارتباط با بهروزرسانیهای ارائهدهنده تلفیقی مکان استفاده کنید. وقتی فعالیت هدفیابیشده شناسایی شد، بهروزرسانیها را درخواست کنید و وقتی کاربر انجام آن فعالیت را متوقف کرد، بهروزرسانیها را بردارید.
گردش کار معمول برای این مورد استفاده میتواند شامل نمایش اعلان برای فعالیت شناساییشده و راهاندازی فعالیتی باشد که حاوی کد درخواست بهروزرسانی هنگام ضربه زدن کاربر روی اعلان است.
بهروزرسانیهای مکان پسزمینهای طولانیمدت مرتبط با مناطق جغرافیایی
مثال: کاربر میخواهد وقتی دستگاه در مجاورت خردهفروشی قرار دارد، به او اطلاع داده شود.
این مورد استفاده عالی برای حصار جغرافیایی است. چون مورد استفاده تقریباً بهطور قطع شامل مکان پسزمینهای است، از روش addGeofences(GeofencingRequest, PendingIntent) استفاده کنید.
باید گزینههای پیکربندی زیر را تنظیم کنید:
اگر درحال ردیابی انتقالهای توقف هستید، از روش
setLoiteringDelay()استفاده کنید و مقداری حدود پنج دقیقه یا کمتر را ارسال کنید.از
setNotificationResponsiveness()استفاده کنید و مقدار حدود پنج دقیقه را ارسال کنید. بااینحال، اگر برنامهتان میتواند تأخیر اضافی در پاسخگویی را مدیریت کند، از مقداری حدود ده دقیقه استفاده کنید.
برنامه میتواند حداکثر ۱۰۰ حصار جغرافیایی را بهطور همزمان ثبت کند. در مورداستفادهای که برنامهای میخواهد تعداد زیادی از گزینههای خردهفروش را ردیابی کند، برنامه ممکن است بخواهد حصار جغرافیایی بزرگی (در سطح شهر) ثبت کند و حصارهای جغرافیایی کوچکتری (برای مکانهای داخل شهر) را بهطور پویا برای فروشگاههای داخل حصار جغرافیایی بزرگتر ثبت کند. وقتی کاربر وارد حصار جغرافیایی بزرگی میشود، حصارهای جغرافیایی کوچکتری اضافه کنید؛ وقتی کاربر از حصار جغرافیایی بزرگتر خارج میشود، حصارهای جغرافیایی کوچکتر را بردارید و حصارهای جغرافیایی را برای منطقه جدیدی دوباره ثبت کنید.
بهروزرسانیهای مکان پسزمینهای طولانیمدت بدون عنصر برنامه قابلمشاهده
مثال: برنامهای که مکان را بهطور غیرفعال ردیابی میکند
درصورت امکان، از روش setPriority() با گزینه PRIORITY_PASSIVE استفاده کنید زیرا تقریباً هیچ شارژ باتریای مصرف نمیکند. اگر استفاده از PRIORITY_PASSIVE
امکانپذیر نیست، از PRIORITY_BALANCED_POWER_ACCURACY یا
PRIORITY_LOW_POWER استفاده کنید، اما از PRIORITY_HIGH_ACCURACY برای
کار پسزمینه پایدار استفاده نکنید زیرا این گزینه باتری را بهطور قابلتوجهی تخلیه میکند.
اگر به دادههای مکان بیشتری نیاز دارید، با فراخوانی روش
setMinUpdateIntervalMillis() و ارسال مقداری کوچکتر از آنچه به
setIntervalMillis() ارسال میکنید، از مکان منفعل استفاده کنید. وقتی با گزینه PRIORITY_PASSIVE ترکیب شود، مکان غیرفعال میتواند بهطور فرصتطلبانه مکان محاسبهشده توسط برنامههای دیگر را بدون هزینه اضافی ارائه دهد.
با افزودن مقداری تأخیر، بااستفاده از روش
setMaxUpdateDelayMillis()، فرکانس را تعدیل کنید. برای مثال، اگر از روش
setIntervalMillis() با مقدار تقریباً ۱۰ دقیقه استفاده میکنید،
باید فراخوانی setMaxUpdateDelayMillis() را با مقداری بین ۳۰ تا
۶۰ دقیقه درنظر بگیرید. بااستفاده از این گزینهها، مکان برای برنامه شما تقریباً هر ۱۰ دقیقه محاسبه میشود، اما برنامه فقط هر ۳۰ تا ۶۰ دقیقه با برخیاز دادههای مکان دردسترس بهعنوان بهروزرسانی گروهی بیدار میشود. این رویکرد
تأخیر را با دادههای دردسترس بیشتر و عملکرد بهتر باتری معاوضه میکند.
بهروزرسانیهای مکرر با دقت بالا درحالیکه کاربر با برنامههای دیگر تعامل دارد
مثال: برنامه ناوبری یا تناسب اندامی که وقتی کاربر صفحهنمایش را خاموش میکند یا برنامه دیگری را باز میکند، همچنان به کار کردن ادامه میدهد.
از سرویس پیشزمینهای استفاده کنید. اگر احتمالاً قرار است کار پرهزینهای توسط برنامه شما ازطرف کاربر انجام شود، آگاه کردن کاربر از آن کار، روال مطلوب توصیهشده است. سرویس پیشزمینهای به اعلان ماندگار نیاز دارد. برای اطلاعات بیشتر، به نمای کلی اعلانها مراجعه کنید.