Ejemplo n.º 1
0
        private void DidRangeBeacons(object sender, RangedBeaconsArgsEventArgs args)
        {
            lock (_rangeSyncObj)
            {
                foreach (var beacon in args.Beacons)
                {
                    var guid     = Guid.Parse(beacon.ProximityUUID.AsString());
                    var major    = Convert.ToInt32(beacon.Major);
                    var minor    = Convert.ToInt32(beacon.Minor);
                    var distance = beacon.Distance.DoubleValue;

                    var key = Tuple.Create(guid, major, minor);

                    IBeacon b;

                    if (!_rangedBeacons.TryGetValue(key, out b))
                    {
                        b = new Beacon(guid, major, minor);
                        ((Beacon)b).SetColor(beacon.Color);

                        _rangedBeacons.Add(key, b);
                        _beacons.Add(b);

                        Console.WriteLine("Ranged beacon " + beacon.ToString());
                    }

                    ((Beacon)b).Distance = distance;
                }
            }
        }
        private void BeaconManagerRangedBeacons(object sender, RangedBeaconsArgsEventArgs e)
        {
            foreach (var beacon in e.Beacons)
            {
                Debug.WriteLine("Ranged beacon {0}", beacon.Color);

                if (beacon.Distance.Int32Value != -1)
                {
                    _beacons.Remove(beacon);
                    _beacons.Add(beacon);
                }
                else
                {
                    Debug.WriteLine("-1");
                }
            }

            _beacons.Sort(CompareBeaconsByDistance);

            TableView.ReloadData();
        }