Exemplo n.º 1
0
        protected virtual void HandleRanging(object sender, BeaconManager.RangingEventArgs e)
        {
//            IEnumerable<Beacon> beacons = from item in e.Beacons
//                                          let uuid = item.ProximityUUID
//                                          where uuid.Equals(EstimoteBeacons.EstimoteProximityUuid, StringComparison.OrdinalIgnoreCase) ||
//                                                uuid.Equals(EstimoteBeacons.EstimoteIosProximityUuid, StringComparison.OrdinalIgnoreCase)
//                                          select item;
            BeaconsFound(this, new BeaconsFoundEventArgs(e.Beacons));
        }
Exemplo n.º 2
0
        protected virtual void HandleRanging(object sender, BeaconManager.RangingEventArgs e)
        {
            var filteredBeacons = (from item in e.Beacons
                                   let uuid = item.ProximityUUID
                                              where uuid.Equals(EstimoteBeacons.EstimoteProximityUuid, StringComparison.OrdinalIgnoreCase) ||
                                              uuid.Equals(EstimoteBeacons.EstimoteIosProximityUuid, StringComparison.OrdinalIgnoreCase)
                                              select item).ToList();

            BeaconsFound(this, new BeaconsFoundEventArgs(filteredBeacons));
        }
        private async void OnRanging(object sender, BeaconManager.RangingEventArgs e)
        {
            Log.Debug("demo", "IN Ranging " + e.Beacons.Count);
            if (e.Beacons.Count > 0)
            {
                Log.Debug("demo", "List > 0");

                foreach (Beacon beacon in e.Beacons)
                {
                    _proximity = ComputeProximity(beacon);

                    if (_proximity != Proximity.Unknown)
                    {
                        _distance = ComputeAccuracy(beacon);

                        //If distance is valid and (less than current distance or current beacon is null) update current beacon
                        if (_distance > -1 && ((_distance < _currentBeaconDistance) || _currentBeacon == null))
                        {
                            _currentBeaconDistance = _distance;

                            _currentBeacon = beacon;

                            switch (beacon.Major)
                            {
                            case 1564:
                                _lastActiveTimeRegion1 = DateTime.Now.Ticks;
                                break;

                            case 15212:
                                _lastActiveTimeRegion2 = DateTime.Now.Ticks;
                                break;

                            case 26535:
                                _lastActiveTimeRegion3 = DateTime.Now.Ticks;
                                break;
                            }
                        }
                        //If distance is valid and beacon major is same as current beacon's major, update current beacon distance
                        if (_distance > -1 && (beacon.Major == _currentBeacon.Major))
                        {
                            _currentBeaconDistance = _distance;
                            Log.Debug(Constants.TAG, "updating current beacon");

                            if (!isUnlockInProgress)
                            {
                                await UnLockMessagesAsync(_currentBeacon.Major).ConfigureAwait(false);
                            }
                        }
                    }
                }
            }
        }
        protected virtual void HandleRanging(object sender, BeaconManager.RangingEventArgs e)
        {
            // major, minor, xpos, ypos

            BeaconOnMap[] mapBeacons = new BeaconOnMap[8];
            getMapBeacons(ref mapBeacons);

            // distanceInMeters * ratio = distanceInPixels
            const int ratio = 43;

            Log.Debug(TAG, "Found {0} beacons.", e.Beacons.Count);
            foreach (Beacon b in e.Beacons)
            {
                Log.Debug(TAG, "major: {0}, minor: {1}, distance: {2}", b.Major, b.Minor, Utils.ComputeAccuracy(b));
            }

            BeaconsFound(this, new BeaconsFoundEventArgs(e.Beacons));

            if (e.Beacons.Count < 3)
            {
                return;
            }

            BeaconOnMap[] b3   = new BeaconOnMap[3];
            int[]         dist = new int[3];

            getClosest3BeaconsOnMap(ref b3, ref dist, e.Beacons, mapBeacons, ratio);

            Position pos = intersectThreeCircles(b3[0].getPosition(), dist[0], b3[1].getPosition(), dist[1], b3[2].getPosition(), dist[2]);

            //Log.Debug(TAG, "{0}", canvas.ActualHeight);
            if (pos.getX() != 0 && pos.getY() != 0)
            {
                Map.drawPointOnMap(pos.getX(), pos.getY());
            }

            Log.Debug(TAG, pos.ToString());

            //            IEnumerable<Beacon> beacons = from item in e.Beacons
            //                                          let uuid = item.ProximityUUID
            //                                          where uuid.Equals(EstimoteBeacons.EstimoteProximityUuid, StringComparison.OrdinalIgnoreCase) ||
            //                                                uuid.Equals(EstimoteBeacons.EstimoteIosProximityUuid, StringComparison.OrdinalIgnoreCase)
            //                                          select item;
        }
Exemplo n.º 5
0
        void BeaconManagerRanging(object sender, BeaconManager.RangingEventArgs e)
        {
            if (e.Beacons == null)
            {
                SetBeaconText(false);
                return;
            }
            bool close = false;

            foreach (var beacon in e.Beacons)
            {
                var proximity = Utils.ComputeProximity(beacon);

                if (proximity != Utils.Proximity.Unknown)
                {
                    close = true;
                }

                if (proximity != Utils.Proximity.Immediate)
                {
                    continue;
                }

                var accuracy = Utils.ComputeAccuracy(beacon);
                if (accuracy > .06)
                {
                    continue;
                }

                ViewModel.CheckBeacon(beacon.Major, beacon.Minor);

                if (e.Region.Major.ToString() != secretRegion.Major.ToString())
                {
                    SetBeaconText(close);
                }
            }
        }