示例#1
0
        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());
            }
        }