コード例 #1
0
        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)));
            }
        }
コード例 #2
0
        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);
        }