Exemple #1
0
 public void InsertOrUpdateBeacon(Beacon beacon)
 {
     lock (dbLock)
     {
         using (var sqlcon = new SQLiteConnection(DBPath))
         {
             sqlcon.Execute(Constants.DBClauseSyncOff);
             sqlcon.BeginTransaction();
             try
             {
                 if (sqlcon.Execute("UPDATE Beacon Set DeviceUUID=?," +
                     "DeviceDistance=?,Proximity=?,FirstSeen=?,LastSeen=?,WelcomeMessage=?,SignalStrength=?,Major=?,Minor=? WHERE DeviceUUID=?",
                         beacon.DeviceUUID, beacon.DeviceDistance, beacon.Proximity, beacon.FirstSeen, beacon.LastSeen, beacon.WelcomeMessage,
                         beacon.SignalStrength, beacon.Major, beacon.Minor, beacon.DeviceUUID) == 0)
                     sqlcon.Insert(beacon, typeof(Beacon));
                 sqlcon.Commit();
             }
             catch (Exception ex)
             {
                 #if DEBUG
                 Console.WriteLine("Error in DeleteObject - {0}--{1}", ex.Message, ex.StackTrace);
                 #endif
                 sqlcon.Rollback();
             }
         }
     }
 }
        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());
            }
        }