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(); }