public async void StartMonitoring(GeofenceRegion region) { var geofence = new GeofenceBuilder() .SetRequestId(region.Identifier) .SetExpirationDuration(Geofence.NeverExpire) .SetCircularRegion( region.Center.Latitude, region.Center.Longitude, Convert.ToSingle(region.Radius.TotalMeters) ) .SetTransitionTypes( Geofence.GeofenceTransitionEnter | Geofence.GeofenceTransitionExit ) .Build(); var request = new GeofencingRequest.Builder() .AddGeofence(geofence) .SetInitialTrigger(GeofencingRequest.InitialTriggerEnter | GeofencingRequest.InitialTriggerExit) .Build(); await client.AddGeofencesAsync(request, GetPendingIntent()); lock (syncLock) { regions.Add(region); MarcelloDatabase.Current.Save(region); //if (regions.Count == 1) // Application.Context.StartForegroundService(new Intent(Application.Context, typeof(GeofenceBroadcastReceiver))); } }
public async void SetGeofenceTrigger(double lat, double lng, double radius, string entryMessage, string exitMessage, string name) { var builder = new GeofenceBuilder(); var instance = builder.SetRequestId(name) .SetCircularRegion(lat, lng, (float)radius) .SetExpirationDuration(Geofence.NeverExpire) .SetTransitionTypes(Geofence.GeofenceTransitionEnter | Geofence.GeofenceTransitionExit) .Build(); _regions.Add(instance); var request = CreateGeofencingRequest(instance); var pendingIntent = CreatePendintIntent(entryMessage, exitMessage); await _geofenceClient.AddGeofencesAsync(request, pendingIntent); }