private void RangingBeaconsInRegion(object s, RangeEventArgs e) { RunOnUiThread(() => textInRange.Text = e.TagBeacons.Count.ToString()); var beac = e.TagBeacons.FirstOrDefault(); if (beac != null) { string prox = ""; RunOnUiThread(() => textUUID.Text = beac.ProximityUuid); switch ((ProximityType)beac.Proximity) { case ProximityType.Immediate: prox = "Very close"; break; case ProximityType.Near: prox = "Close"; break; case ProximityType.Far: prox = "Not too close"; break; } RunOnUiThread(() => { textProximity.Text = prox; textMajor.Text = beac.Major.ToString(); textMinor.Text = beac.Minor.ToString(); textDistance.Text = beac.Accuracy.ToString(); }); var exist = dbm.GetSingleBeacon(beac.ProximityUuid); var beacon = new Beacon { Proximity = beac.Proximity, DeviceUUID = beac.ProximityUuid, SignalStrength = beac.Rssi, Major = beac.Major, Minor = beac.Minor, DeviceDistance = beac.Accuracy, WelcomeMessage = "", LastSeen = DateTime.Now, }; if (exist == null) beacon.FirstSeen = DateTime.Now; dbm.InsertOrUpdateBeacon(beacon); var total = dbm.GetListOfBeacons().Select(t => t.DeviceUUID).Distinct().ToList().Count; RunOnUiThread(() => textNumberSeen.Text = total.ToString()); } }