نحوه کار با Geofences در اندروید - بخش اول

نحوه کار با Geofences در اندروید - بخش اول

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

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

blog_19432_1

یک اپلیکیشن دانشگاه را تصور کنید که می تواند شما را از همکاران و استادانی که در محوطه دانشگاه قرار دارند، اگاه سازد و یا اپلیکشن یک مرکز خرید بزرگ که به مشتریان خود هدیه می دهد، احتمالات دیگری نیز وجود دارند که می توان مورد بررسی قرار داد.

در این مطلب آموزشی نحوه استفاده از geofence در اندروید را فرا خواهید گرفت، این کار از طریق ساخت یک اپلیکیشن که با ورود به یک geofences یا خروج از آن به کاربر نوتیفیکیشن نمایش می دهد، صورت می پذیرد. چنانچه با Google Play Services ،Google Maps Android API و یا IntentService آشنایی قبلی داشته باشید، در این آموزش به کمک شما خواهد آمد. چنانچه با این موارد هیچگونه آشنایی ندارید، باز این می توانید از این مطلب استفاده کنید، اما لازم است تا پس از خواندن آن کمی تحقیق درباره این موضوعات انجام دهید.

1. Geofences در اندروید

در اندروید راه های گوناگونی برای کار با Geofences وجود دارد و می توانید از پیاده سازی خود برای کار با Geofences استفاده کنید، اما بکار بردن GeofencingApi روش پیشنهادی است.

این API بخشی از APIهای Location گوگل می باشد که شامل Geofence ،GeofencingRequest GeofenceAPI ،GeofencingEvent و GeofenceStatusCodes می باشد. در این مطلب ما از این کلاس ها برای ساخت و کار با geofence استفاده می کنیم.

رابط Geofence

Geofence یک رابط است که به نمایش موقعیت جغرافیایی که باید تحت نظارت قرار گیرد پرداخته و با استفاده از Geofence.Builder ساخته می شود و باید منطقه نظارتی را ست کرده و تاریخ انقضای آن، یک identifier و نوع انتقالاتی را که Geofence باید به دنبال آنها بگردد مشخص کنید.

به منظور صرفه جویی در مصرف منابع گوشی پیشنهاد می شود که geofence را با استفاده از شعاع حداقل 100 متر برای اغلب موقعیت ها مورد استفاده قرار دهید. چنانچه geofenceهای تعیین شده خارج از شهر قرار دارند باید شعاع را به 500 متر یا بیشتر افزایش دهید تا نتیجه ای دریافت کنید.

Geofence geofence = new Geofence.Builder()

.setRequestId(GEOFENCE_REQ_ID) // Geofence ID

.setCircularRegion( LATITUDE, LONGITUDE, RADIUS) // defining fence region

.setExpirationDuration( DURANTION ) // expiring date

// Transition types that it should look for

.setTransitionTypes( Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT )

.build();

انتقال های Geofence

- GEOFENCE_TRANSITION_DWELL ورود کاربر به یک منطقه و توقف او در آنجا را مشخص می سازد، به منظور جلوگیری از نمایش چندین پیام هشدار در زمانی که کاربر عملیات ورود و خروج در یک منطقه را خیلی سریع انجام می دهد، استفاده از آن بسیار کاربردی خواهد بود. شما می توانید زمان توقف کاربر در موقعیت را با استفاده از پارامتر setLoiteringDelay مشخص کنید.

- GEOFENCE_TRANSITION_ENTER زمانی را مشخص می کند که کاربر به منطقه موردنظر وارد می شود.

- GEOFENCE_TRANSITION_EXIT زمان خروج کاربر از آن منطقه را نمایش می دهد.

GeofenceRequest

کلاس GeofenceRequest در حقیقت دریافت کننده geofence تعیین شده می باشد. می توانید با استفاده از Builder یک نمونه از کلاس بسازید و Geofence یا List>Geofence> و نوع نوتیفیکیشنی را که باید نمایش دهید به آن ارسال نمایید.

eofencingRequest request = new GeofencingRequest.Builder()

// Notification to trigger when the Geofence is created

.setInitialTrigger( GeofencingRequest.INITIAL_TRIGGER_ENTER )

.addGeofence( geofence ) // add a Geofence

.build();

GeofenceApi

کلاس GeofenceApi راه ارتباطی با API گوگل برای Geofencing بوده و بخشی از Location API می باشد و برای کار به GoogleApiClient وابسته است. شما از GeofencingApi برای افزودن و حذف geofence استفاده خواهید کرد.

به منظور اضافه کردن geofence باید متد ()addGeofence را مورد استفاده قرار دهید. این متد با استفاده از تنظیماتی که برای GeofencingRequset ارسال شده کار نظارت بر منطقه تعیین شده را به انجام می رساند و زمانی که انتقال geofence و ورود یا خروج در منطقه صورت می پذیرد، PendingIntent می شود.

PendingResult<Status> addGeofences (GoogleApiClient client, 

GeofencingRequest geofencingRequest,

PendingIntent pendingIntent)

به منظور حذف geofence باید از فراخوانی تابع ()removeGeofence استفاده کرد، این کار را می توان با استفاده از identifier درخواست و یا pending intent مربوط به آن geofence به انجام رساند.

PendingResult<Status> removeGeofences(GoogleApiClient client, 

List<String> geofenceRequestIds)

PendingResult<Status> removeGeofences (GoogleApiClient client, 

PendingIntent pendingIntent)

در مطلب آینده به ساخت یک اپلیکیشن برای کار با geofence خواهیم پرداخت، با ما همراه باشید.

 

http://code.tutsplus.com برگرفته از

اینها را هم بخوانید