private void LocationManager_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { foreach (var beacon in e.Beacons) { FoundBeacon(beacon); } }
private void didRangeBeacons(object s, CLRegionBeaconsRangedEventArgs e) { foreach (var detectedBeacon in e.Beacons) { string beaconIdentifier = iBeaconEventHolder.GenerateBeaconIdentifyStr( new Guid(detectedBeacon.ProximityUuid.ToString()), detectedBeacon.Major.UInt16Value, detectedBeacon.Minor.UInt16Value); if (!_beaconEventHolderDict.ContainsKey(beaconIdentifier)) { return; } iBeaconEventHolder eventHolder = _beaconEventHolderDict[beaconIdentifier]; foreach (iBeaconEventDetail eventDetail in eventHolder.EventList) { if (eventDetail.ThresholdRssi < detectedBeacon.Rssi && eventDetail.LastTriggeredDateTime < DateTime.Now.AddMilliseconds(-1 * eventDetail.EventTriggerIntervalMilliSec)) { eventDetail.LastTriggeredDateTime = DateTime.Now; eventDetail.Function(); } } } }
void LocationManagerDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { CLBeacon nearest = null; foreach (var beacon in e.Beacons.Where(b => b.Rssi != 0)) { Debug.WriteLine("Ranged {0} {1}.{2} - distance {3}", beacon.ProximityUuid.AsString(), beacon.Major, beacon.Minor, beacon.Rssi); if (nearest == null || nearest.Rssi < beacon.Rssi) { nearest = beacon; } } if (nearest == null) { NearestBeacon.Text = "No beacons found"; } else { NearestBeacon.Text = $"Nearest Beacon is {nearest.Major}.{nearest.Minor}"; } }
private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { foreach (var beacon in e.Beacons) { SendBeaconChangeProximity(beacon); } }
void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { Unknowns.Clear(); Immediates.Clear(); Nears.Clear(); Fars.Clear(); foreach (CLBeacon beacon in e.Beacons) { switch (beacon.Proximity) { case CLProximity.Immediate: Immediates.Add(beacon); break; case CLProximity.Near: Nears.Add(beacon); break; case CLProximity.Far: Fars.Add(beacon); break; case CLProximity.Unknown: Unknowns.Add(beacon); break; } } TableView.ReloadData(); }
void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { if (e.Beacons.Length > 0) { foreach (var b in e.Beacons) { if (b.Proximity != CLProximity.Unknown) { Console.WriteLine("UUID: {0} | Major: {1} | Minor: {2} | Accuracy: {3} | Proximity: {4} | RSSI: {5}", b.ProximityUuid, b.Major, b.Minor, b.Accuracy, b.Proximity, b.Rssi); var exists = false; for (int i = 0; i < beacons.Count; i++) { if (beacons[i].Minor.Equals(b.Minor.ToString())) { beacons[i].CurrentDistance = Math.Round(b.Accuracy, 2); SetProximity(b, beacons[i]); exists = true; } } if (!exists) { var newBeacon = new BeaconItem { Minor = b.Minor.ToString(), Name = "", CurrentDistance = Math.Round(b.Accuracy, 2) }; SetProximity(b, newBeacon); beacons.Add(newBeacon); } } } } }
private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { System.Diagnostics.Debug.WriteLine("HandleDidDetermineState"); foreach (var beacon in e.Beacons) { SendBeaconChangeProximity(beacon); } }
private async void DidRangeBeconsInRegionComplete(object sender, CLRegionBeaconsRangedEventArgs e) { System.Diagnostics.Debug.WriteLine("HandleDidDetermineState"); var now = DateTime.UtcNow; var keyTime = now.ToString("yyyyMMddHH"); foreach (var beacon in e.Beacons) { if (beacon.Proximity == CLProximity.Unknown) { return; } var key = $"{beacon.Uuid}{beacon.Major}{beacon.Minor}.{keyTime}"; lock (dataLock) { var result = _connection.Table <BeaconDataModel>().SingleOrDefault(x => x.Id == key); if (result == null) { BeaconDataModel data = new BeaconDataModel(); data.Id = key; data.Count = 0; data.BeaconUuid = beacon.Uuid.ToString(); data.Major = beacon.Major.ToString(); data.Minor = beacon.Minor.ToString(); data.Distance = beacon.Accuracy; data.Rssi = (short)beacon.Rssi; // data.TXPower = beacon.tr; data.ElaspedTime = new TimeSpan(); data.LastDetectTime = now; data.FirstDetectTime = now; data.KeyTime = keyTime; data.IsSentToServer = false; _connection.Insert(data); } else { BeaconDataModel data = result; data.Id = key; data.Count++; data.BeaconUuid = beacon.Uuid.ToString(); data.Major = beacon.Major.ToString(); data.Minor = beacon.Minor.ToString(); data.Distance += (beacon.Accuracy - data.Distance) / data.Count; data.Rssi = (short)beacon.Rssi; // data.TXPower = beacon.tr; data.ElaspedTime += now - data.LastDetectTime; data.LastDetectTime = now; data.KeyTime = keyTime; data.IsSentToServer = false; _connection.Update(data); System.Diagnostics.Debug.WriteLine(Utils.SerializeToJson(data)); } } } }
void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { Unknowns.Clear(); Immediates.Clear(); Nears.Clear(); Fars.Clear(); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Identifier: " + e.Region.Identifier); int i = 0; foreach (CLBeacon beacon in e.Beacons) { switch (beacon.Proximity) { case CLProximity.Immediate: Immediates.Add(beacon); break; case CLProximity.Near: Nears.Add(beacon); break; case CLProximity.Far: Fars.Add(beacon); break; case CLProximity.Unknown: Unknowns.Add(beacon); break; } SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Accuracy: " + beacon.Accuracy); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Proximity: " + beacon.Proximity); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Description: " + beacon.Description); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Major: " + beacon.Major); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Minor: " + beacon.Minor); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Rssi: " + beacon.Rssi); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons ProximityUuid: " + beacon.ProximityUuid); Beacon AppverseBeacon = FromCLBeacon(beacon); String id = uniqueIDForBeacon(AppverseBeacon); if (!rangingBeacons.ContainsKey(id)) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** ADDED LOCATION: " + AppverseBeacon.Distance.ToString()); rangingBeacons.Add(id, AppverseBeacon); } else { rangingBeacons[id] = AppverseBeacon; } } }
private async void DidRangeBeconsInRegionComplete(object sender, CLRegionBeaconsRangedEventArgs e) { System.Diagnostics.Debug.WriteLine("HandleDidDetermineState"); foreach (var beacon in e.Beacons) { if (beacon.Proximity == CLProximity.Unknown) { return; } var key = beacon.Uuid.ToString() + beacon.Major.ToString() + beacon.Minor.ToString(); var result = _connection.Table <BeaconDataModel>().SingleOrDefault(x => x.Id == key); if (result == null) { BeaconDataModel data = new BeaconDataModel(); data.Id = key; data.Count = 0; data.BeaconUuid = beacon.Uuid.ToString(); data.Major = beacon.Major.ToString(); data.Minor = beacon.Minor.ToString(); data.Distance = beacon.Accuracy; data.Rssi = (short)beacon.Rssi; // data.TXPower = beacon.tr; data.ElaspedTime = new TimeSpan(); data.LastDetectTime = DateTime.Now; _connection.Insert(data); if (data.ElaspedTime > TimeSpan.FromMinutes(AppConstants.ELAPSED_TIME_OF_TRANSMISSION_START)) { await _httpDataService.PostBeaconDataAsync(_userData, data); } } else { BeaconDataModel data = result; data.Id = key; data.Count++; data.BeaconUuid = beacon.Uuid.ToString(); data.Major = beacon.Major.ToString(); data.Minor = beacon.Minor.ToString(); data.Distance += (beacon.Accuracy - data.Distance) / data.Count; data.Rssi = (short)beacon.Rssi; // data.TXPower = beacon.tr; data.ElaspedTime = new TimeSpan(); data.LastDetectTime = DateTime.Now; _connection.Update(data); System.Diagnostics.Debug.WriteLine(Utils.SerializeToJson(data)); } } }
private void OnBeaconsFound(object sender, CLRegionBeaconsRangedEventArgs e) { if (e.Beacons == null || e.Beacons.Length == 0) { return; } List <CLBeacon> nearestBeacon = GetNearestBeacon(e.Beacons); if (nearestBeacon != null && nearestBeacon.Count > 0) { PrepareProximityEventProperties(nearestBeacon); } }
private void didRangeBeacons(object s, CLRegionBeaconsRangedEventArgs e) { foreach (var detectedBeacon in e.Beacons) { string beaconIdentifier = iBeaconEventHolder.GenerateBeaconIdentifyStr( new Guid(detectedBeacon.ProximityUuid.AsString().ToUpper()), detectedBeacon.Major.UInt16Value, detectedBeacon.Minor.UInt16Value); if (!_beaconEventHolderDict.ContainsKey(beaconIdentifier)) { return; } iBeaconEventHolder eventHolder = _beaconEventHolderDict[beaconIdentifier]; if (_detectedBeaconDict.ContainsKey(beaconIdentifier)) { iBeacon detectedBeaconPrev = _detectedBeaconDict[beaconIdentifier]; short? rssiPrev = detectedBeaconPrev.Rssi; if (rssiPrev == null || ((short)rssiPrev < detectedBeacon.Rssi)) { eventHolder.ibeacon.Rssi = (short)detectedBeacon.Rssi; eventHolder.ibeacon.EstimatedDistanceMeter = detectedBeacon.Accuracy; _detectedBeaconDict[beaconIdentifier] = eventHolder.ibeacon; } } else { eventHolder.ibeacon.Rssi = (short)detectedBeacon.Rssi; if (detectedBeacon.Accuracy > 0) { eventHolder.ibeacon.EstimatedDistanceMeter = detectedBeacon.Accuracy; } _detectedBeaconDict.Add(beaconIdentifier, eventHolder.ibeacon); } foreach (iBeaconEventDetail eventDetail in eventHolder.EventList) { if (eventDetail.ThresholdRssi < detectedBeacon.Rssi && eventDetail.LastTriggeredDateTime < DateTime.Now.AddMilliseconds(-1 * eventDetail.EventTriggerIntervalMilliSec)) { eventDetail.LastTriggeredDateTime = DateTime.Now; eventDetail.Function(); } } } }
void LocationManager_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { var beacon = e.Beacons.FirstOrDefault(); if (beacon == null) { View.BackgroundColor = UIColor.White; lblDistance.Text = "Waiting for the beacon..."; } else if (beacon.Accuracy >= 0) { View.BackgroundColor = ColorFromDistance(beacon.Accuracy); lblDistance.Text = $"Distance to beacon\n{beacon.Accuracy:N1}m"; } }
private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { if (_regionsCache.ContainsKey(e.Region.Identifier) && !_regionsCache[e.Region.Identifier]) { MvxTrace.TaggedTrace(MvxTraceLevel.Diagnostic, "Beacons", $"Did range region {e.Region.Identifier}"); _regionsCache[e.Region.Identifier] = true; foreach (var beacon in e.Beacons) { string uuid = beacon.ProximityUuid.AsString(); var major = (int)beacon.Major; var minor = (int)beacon.Minor; SendBeaconChangeProximity(uuid, major, minor); } } }
private void DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { System.Diagnostics.Debug.WriteLine("DidRangeBeacons"); // Beacon Get foreach (var beacon in e.Beacons) { System.Diagnostics.Debug.WriteLine(beacon.ToString()); if (beacon.Proximity == CLProximity.Unknown) { return; } string uuid = beacon.ProximityUuid.AsString(); var major = (ushort)beacon.Major; var minor = (ushort)beacon.Minor; } }
private void LocationManager_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { CLBeacon nearestBeacon = null; if (e.Beacons.Any(m => m.Rssi < 0)) //ignore any 0 values and find the nearest beacon. { foreach (CLBeacon beacon in e.Beacons) { Debug.WriteLine("Found beacon {0} {1}.{2} - rssi {3}", beacon.ProximityUuid.AsString(), beacon.Major, beacon.Minor, beacon.Rssi); //var nearestBeacon = e.Beacons.OrderBy(x => x.Rssi).FirstOrDefault(); if (nearestBeacon == null) { nearestBeacon = beacon; } else if (beacon.Rssi > nearestBeacon.Rssi) { nearestBeacon = beacon; } this.NearestLockUuid = Guid.Parse(nearestBeacon.ProximityUuid.AsString()); Debug.WriteLine("Nearest beacon is {0}", this.NearestLockUuid); //now that we have the nearest beacon, check if rssi is > -50 (or config value) and then send unlock request if (nearestBeacon.Rssi > -60) { //stop ranging -? nned to have the CLregion //_locationManager.RangedRegions.Where(x => x.re) StopAllRanging(); //send unlock requests Debug.WriteLine("Sending Unlock request"); SendUnlockRequest(); Debug.WriteLine("Unlock request sent"); Thread.Sleep(15000); //start ranging StartAllRanging(); } } } }
private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { if (e.Beacons.Length != 0) { // 發送Beacon訊號強度和其它資訊到訊號分析模組 List <BeaconSignalModel> signals = e.Beacons.Select(c => new BeaconSignalModel { UUID = Guid.Parse(c.ProximityUuid.AsString()), Major = c.Major.Int32Value, Minor = c.Minor.Int32Value, RSSI = (int)c.Rssi, }).ToList(); Event.OnEventCall(new BeaconScanEventArgs { Signals = signals }); } }
void LocationMgr_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { foreach (var beacon in e.Beacons) { Console.WriteLine("BEACON " + beacon.DebugDescription + beacon.Major + beacon.ProximityUuid); } // The next 20 lines were added purely for testing purposes and can be deleted! if (e.Beacons.Length > 0) { switch (e.Beacons[0].Proximity) { case CLProximity.Far: View.BackgroundColor = UIColor.Black; break; case CLProximity.Near: View.BackgroundColor = UIColor.Gray; var notification = new UILocalNotification { AlertBody = String.Format("Welcome {0} to the Mysterious Spectrum Plaza", customer.FirstName) }; UIApplication.SharedApplication.PresentLocalNotificationNow(notification); Console.WriteLine("You're Near"); break; case CLProximity.Immediate: View.BackgroundColor = UIColor.Red; break; case CLProximity.Unknown: View.BackgroundColor = UIColor.Yellow; break; } } else { View.BackgroundColor = UIColor.White; } Console.WriteLine("LocationMgr_DidRangeBeacons function"); }
void LocationManagerDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { CLBeacon nearest = null; foreach (var beacon in e.Beacons.Where(b => b.Rssi != 0)) { Debug.WriteLine("Ranged {0} {1}.{2} - distance {3}", beacon.ProximityUuid.AsString(), beacon.Major, beacon.Minor, beacon.Rssi); if (nearest == null || nearest.Rssi < beacon.Rssi) nearest = beacon; } if (nearest == null) NearestBeacon.Text = "No beacons found"; else NearestBeacon.Text = $"Nearest Beacon is {nearest.Major}.{nearest.Minor}"; }
private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { foreach (CLBeacon beacon in e.Beacons) { var txPow = beacon.Minor.ByteValue == 0 ? -55d : -56d; _beaconDistances.Enqueue(new BeaconDistance { Distance = Math.Pow(10d, (txPow - beacon.Rssi) / 20), Beacon = Defaults.Beacons.Single(x => Guid.Parse(GetGuid(beacon)) == x.Uuid && beacon.Major.Int32Value == x.Major && beacon.Minor.Int32Value == x.Minor) }); Console.WriteLine( $"Distance: {Convert.ToDecimal(Math.Pow(10d, (-55d - beacon.Rssi)/20))} | Major: {beacon.Major} | Minor: {beacon.Minor} | Rssi: {beacon.Rssi}"); } if (_uploadTask == null || _uploadTask.IsCompleted) { if (!_beaconDistances.IsEmpty) { _uploadTask = UploadBeacons(); } } }
void LocationManagerDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { CLBeacon nearest = null; _sharedBeacons = new List <SharedBeacon>(); foreach (var beacon in e.Beacons.Where(b => b.Rssi != 0)) { var rssi_to_string = beacon.Rssi.ToString(); var rssi_to_int = int.Parse(rssi_to_string, NumberStyles.AllowLeadingSign); Debug.WriteLine(rssi_to_int); var distance = getdistance(rssi_to_int, -69); Debug.WriteLine("Ranged {0} {1}.{2} - distance {3}", beacon.ProximityUuid.AsString(), beacon.Major, beacon.Rssi, distance); _sharedBeacons.Add(new SharedBeacon("Conatct_tracing", "66:4E:32:66:3C:61", beacon.ProximityUuid.AsString(), beacon.Major.ToString(), beacon.Minor.ToString(), distance, rssi_to_int)); if (nearest == null || nearest.Rssi < beacon.Rssi) { nearest = beacon; } } Task.Run(() => { // I send beacons to XF project if (_sharedBeacons.Count > 0) { Debug.WriteLine("I SEND TO XF " + _sharedBeacons.Count + " BEACONS"); Xamarin.Forms.MessagingCenter.Send <App, List <SharedBeacon> >((App)Xamarin.Forms.Application.Current, "BeaconsReceived", _sharedBeacons); } }); }
private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { foreach (CLBeacon beacon in e.Beacons) { var txPow = beacon.Minor.ByteValue == 0 ? -55d : -56d; _beaconDistances.Enqueue(new BeaconDistance { Distance = Math.Pow(10d, (txPow - beacon.Rssi)/20), Beacon = Defaults.Beacons.Single(x => Guid.Parse(GetGuid(beacon)) == x.Uuid && beacon.Major.Int32Value == x.Major && beacon.Minor.Int32Value == x.Minor) }); Console.WriteLine( $"Distance: {Convert.ToDecimal(Math.Pow(10d, (-55d - beacon.Rssi)/20))} | Major: {beacon.Major} | Minor: {beacon.Minor} | Rssi: {beacon.Rssi}"); } if (_uploadTask == null || _uploadTask.IsCompleted) { if (!_beaconDistances.IsEmpty) { _uploadTask = UploadBeacons(); } } }
void ManagerDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { if (e.Beacons == null) { SetBeaconText(false); return; } bool close = false; foreach (var beacon in e.Beacons) { if (beacon.Proximity != CLProximity.Unknown) { close = true; } if (beacon.Proximity != CLProximity.Immediate) { continue; } if (beacon.Accuracy > .1)//close, but not close enough. { continue; } viewModel.CheckBeacon(beacon.Major.Int32Value, beacon.Minor.Int32Value); } if (e.Region.Major.StringValue != secretRegion.Major.StringValue) { SetBeaconText(close); } }
void HandleDidRangeBeacons (object sender, CLRegionBeaconsRangedEventArgs e) { Unknowns.Clear (); Immediates.Clear (); Nears.Clear (); Fars.Clear (); foreach (CLBeacon beacon in e.Beacons) { switch (beacon.Proximity) { case CLProximity.Immediate: Immediates.Add (beacon); break; case CLProximity.Near: Nears.Add (beacon); break; case CLProximity.Far: Fars.Add (beacon); break; case CLProximity.Unknown: Unknowns.Add (beacon); break; } } TableView.ReloadData (); }
private void Manager_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { Message.InvokeSnackBar($"DidRangeBeacons - {e.Beacons[0].Minor} - {DateTime.Now.ToString("yyyy/MM/dd-HH:mm")}"); }
private void didRangeBeacons(object s, CLRegionBeaconsRangedEventArgs e) { foreach (var detectedBeacon in e.Beacons) { string beaconIdentifier = iBeaconEventHolder.GenerateBeaconIdentifyStr( new Guid(detectedBeacon.ProximityUuid.AsString().ToUpper()), detectedBeacon.Major.UInt16Value, detectedBeacon.Minor.UInt16Value); string beaconIdentifierForNoMinor = iBeaconEventHolder.GenerateBeaconIdentifyStr( new Guid(detectedBeacon.ProximityUuid.AsString().ToUpper()), detectedBeacon.Major.UInt16Value, null); string beaconIdentifierForNoMajorMinor = iBeaconEventHolder.GenerateBeaconIdentifyStr( new Guid(detectedBeacon.ProximityUuid.AsString().ToUpper()), null, null); if (!_beaconEventHolderDict.ContainsKey(beaconIdentifier) && !_beaconEventHolderDict.ContainsKey(beaconIdentifierForNoMinor) && !_beaconEventHolderDict.ContainsKey(beaconIdentifierForNoMajorMinor)) { continue; } string[] beaconIdentifierArray = { beaconIdentifier, beaconIdentifierForNoMinor, beaconIdentifierForNoMajorMinor }; foreach (var beaconId in beaconIdentifierArray) { iBeaconEventHolder eventHolder = null; if (_beaconEventHolderDict.ContainsKey(beaconId)) { eventHolder = _beaconEventHolderDict[beaconId]; } else { continue; } if (_detectedBeaconDictFromClosestApproachedInfo.ContainsKey(beaconIdentifier)) { iBeacon detectedBeaconPrev = _detectedBeaconDictFromClosestApproachedInfo[beaconIdentifier]; short? rssiPrev = detectedBeaconPrev.Rssi; if (rssiPrev == null || ((short)rssiPrev < detectedBeacon.Rssi)) { eventHolder.ibeacon.Rssi = (short)detectedBeacon.Rssi; if (detectedBeacon.Accuracy > 0.0) { eventHolder.ibeacon.EstimatedDistanceMeter = detectedBeacon.Accuracy; } _detectedBeaconDictFromClosestApproachedInfo[beaconIdentifier] = eventHolder.ibeacon; } } else { eventHolder.ibeacon.Rssi = (short)detectedBeacon.Rssi; if (detectedBeacon.Accuracy > 0.0) { eventHolder.ibeacon.EstimatedDistanceMeter = detectedBeacon.Accuracy; } _detectedBeaconDictFromClosestApproachedInfo.Add(beaconIdentifier, eventHolder.ibeacon); } if (_detectedBeaconDictFromLastApproachedInfo.ContainsKey(beaconIdentifier)) { _detectedBeaconDictFromLastApproachedInfo[beaconIdentifier] = new iBeacon() { Uuid = new Guid(detectedBeacon.ProximityUuid.AsString()), Major = detectedBeacon.Major.UInt16Value, Minor = detectedBeacon.Minor.UInt16Value, Rssi = (short)detectedBeacon.Rssi, EstimatedDistanceMeter = detectedBeacon.Accuracy }; } else { _detectedBeaconDictFromLastApproachedInfo.Add( beaconIdentifier, new iBeacon() { Uuid = new Guid(detectedBeacon.ProximityUuid.AsString()), Major = detectedBeacon.Major.UInt16Value, Minor = detectedBeacon.Minor.UInt16Value, Rssi = (short)detectedBeacon.Rssi, EstimatedDistanceMeter = detectedBeacon.Accuracy }); } foreach (iBeaconEventDetail eventDetail in eventHolder.EventList) { if (eventDetail.ThresholdRssi < detectedBeacon.Rssi && eventDetail.LastTriggeredDateTime < DateTime.Now.AddMilliseconds(-1 * eventDetail.EventTriggerIntervalMilliSec)) { eventDetail.LastTriggeredDateTime = DateTime.Now; eventDetail.Function(); } } } } }
void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { Unknowns.Clear (); Immediates.Clear (); Nears.Clear (); Fars.Clear (); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Identifier: "+e.Region.Identifier); int i = 0; foreach (CLBeacon beacon in e.Beacons) { switch (beacon.Proximity) { case CLProximity.Immediate: Immediates.Add (beacon); break; case CLProximity.Near: Nears.Add (beacon); break; case CLProximity.Far: Fars.Add (beacon); break; case CLProximity.Unknown: Unknowns.Add (beacon); break; } SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Accuracy: "+beacon.Accuracy); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Proximity: "+beacon.Proximity); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Description: "+beacon.Description); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Major: "+beacon.Major); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Minor: "+beacon.Minor); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons Rssi: "+beacon.Rssi); SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** HandleDidRangeBeacons ProximityUuid: "+beacon.ProximityUuid); Beacon AppverseBeacon = FromCLBeacon (beacon); String id = uniqueIDForBeacon (AppverseBeacon); if (!rangingBeacons.ContainsKey (id)) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "************************** ADDED LOCATION: "+AppverseBeacon.Distance.ToString()); rangingBeacons.Add (id, AppverseBeacon); }else{ rangingBeacons[id] = AppverseBeacon; } } }
private static void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { var beacons = e.Beacons.OrderBy (OrderByProximity).ToArray (); Delegate.BeaconsRanged (beacons, e.Region); }
void HandleDidRangeBeacons (object sender, CLRegionBeaconsRangedEventArgs e) { if (e.Beacons.Length > 0) { foreach (var b in e.Beacons) { if (b.Proximity != CLProximity.Unknown) { Console.WriteLine ("UUID: {0} | Major: {1} | Minor: {2} | Accuracy: {3} | Proximity: {4} | RSSI: {5}", b.ProximityUuid, b.Major, b.Minor, b.Accuracy, b.Proximity, b.Rssi); var exists = false; for (int i = 0; i < beacons.Count; i++) { if (beacons [i].Minor.Equals (b.Minor.ToString ())) { beacons [i].CurrentDistance = Math.Round (b.Accuracy, 2); SetProximity (b, beacons [i]); exists = true; } } if (!exists) { var newBeacon = new BeaconItem { Minor = b.Minor.ToString (), Name = "", CurrentDistance = Math.Round (b.Accuracy, 2) }; SetProximity (b, newBeacon); beacons.Add (newBeacon); } } } } }
void ManagerDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { if (e.Beacons == null) { SetBeaconText(false); return; } bool close = false; foreach (var beacon in e.Beacons) { if (beacon.Proximity != CLProximity.Unknown) close = true; if (beacon.Proximity != CLProximity.Immediate) continue; if (beacon.Accuracy > .1)//close, but not close enough. continue; viewModel.CheckBeacon(beacon.Major.Int32Value, beacon.Minor.Int32Value); } if (e.Region.Major.StringValue != secretRegion.Major.StringValue) SetBeaconText(close); }
static void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { // if (!e.Region.Identifier.Equals (regionName)) { // Console.WriteLine (string.Format ("Found Region: {0}", e.Region.Identifier)); // return; // } newBeacons.Clear (); foreach (CLBeacon b in e.Beacons) { if (b.Proximity == CLProximity.Unknown) continue; try { // on extrait la distance en metre, que l'on converti en cm string s = b.ToString (); int start = s.IndexOf ("+/-"); start += 3; int end = s.IndexOf ("m,", start); string val = s.Substring (start, end - start); long v = 0; try { double tmp1 = Convert.ToDouble (val, CultureInfo.InvariantCulture); double tmp2 = tmp1 * 100; v = Convert.ToInt64 (tmp2, CultureInfo.InvariantCulture); } catch (Exception) { v = Convert.ToInt64 (Convert.ToDouble (val.Replace (".", ",")) * 100); } string id = string.Format ("{0}.{1}", b.Major, b.Minor); OneBeacon ob = new OneBeacon (); ob.Id = id; ob.Distance = v; switch (b.Proximity) { case CLProximity.Far: ob.Proximity = 10; break; case CLProximity.Near: ob.Proximity = 5; break; case CLProximity.Immediate: ob.Proximity = 1; break; } newBeacons.Add (id, ob); } catch (Exception err) { Console.WriteLine (err.Message); } } if (newBeacons.Count > 0) { List<OneBeacon> list = new List<OneBeacon> (); foreach (KeyValuePair<string,OneBeacon> kvp in newBeacons) { list.Add (kvp.Value); } // on envoi l'info Founded (list); } }
void locationMgr_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e) { if (EnteredRange != null) { if (e.Beacons.Length > 0) { IBRangeEventArgs iba = new IBRangeEventArgs(); iba.Region = new IBRegion(e.Region.Major, e.Region.Minor, e.Region.ProximityUuid.ToString(), e.Region.Identifier); iba.Beacons = new List<IBBeacon>(); foreach (CLBeacon b in e.Beacons) { int proximity = 0; switch(b.Proximity) { case CLProximity.Immediate: proximity = (int)IBProximityType.Immediate; break; case CLProximity.Near: proximity = (int)IBProximityType.Near; break; case CLProximity.Far: proximity = (int)IBProximityType.Far; break; case CLProximity.Unknown: proximity = (int)IBProximityType.Unknown; break; } iba.Beacons.Add(new IBBeacon() { Accuracy = b.Accuracy, Major = (int)b.Major, Minor = (int)b.Minor, Proximity = proximity, ProximityUuid = b.ProximityUuid.ToString(), Rssi = b.Rssi }); } EnteredRange(sender, iba); } } }
public iOSRegionBeaconsRangedEventArgs(CLRegionBeaconsRangedEventArgs eventArgs) { CLRegionBeaconsRangedEventArgs = eventArgs; }