예제 #1
0
        public override async Task <GeofenceState> RequestState(GeofenceRegion region, CancellationToken cancelToken)
        {
            var client   = LocationServices.GetFusedLocationProviderClient(this.context.AppContext);
            var location = await client.GetLastLocationAsync();

            if (location == null)
            {
                return(GeofenceState.Unknown);
            }

            var inside = region.IsPositionInside(new Position(location.Latitude, location.Longitude));
            var state  = inside ? GeofenceState.Entered : GeofenceState.Exited;

            return(state);
        }
예제 #2
0
        public override Task <GeofenceState> RequestState(GeofenceRegion region, CancellationToken cancelToken)
        {
            var native = GeofenceMonitor.Current;
            var coords = native.LastKnownGeoposition?.Coordinate?.Point?.Position;

            if (coords == null)
            {
                return(Task.FromResult(GeofenceState.Unknown));
            }

            var position = new Position(coords.Value.Latitude, coords.Value.Longitude);
            var result   = region.IsPositionInside(position)
                ? GeofenceState.Entered
                : GeofenceState.Exited;

            return(Task.FromResult(result));
        }