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}";
            }
        }
Exemplo n.º 4
0
 private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e)
 {
     foreach (var beacon in e.Beacons)
     {
         SendBeaconChangeProximity(beacon);
     }
 }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 7
0
 private void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e)
 {
     System.Diagnostics.Debug.WriteLine("HandleDidDetermineState");
     foreach (var beacon in e.Beacons)
     {
         SendBeaconChangeProximity(beacon);
     }
 }
Exemplo n.º 8
0
        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));
                    }
                }
            }
        }
Exemplo n.º 9
0
        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;
                }
            }
        }
Exemplo n.º 10
0
        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));
                }
            }
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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();
                    }
                }
            }
        }
Exemplo n.º 13
0
        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";
            }
        }
Exemplo n.º 14
0
        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);
                }
            }
        }
Exemplo n.º 15
0
        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;
            }
        }
Exemplo n.º 16
0
        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();
                    }
                }
            }
        }
Exemplo n.º 17
0
        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
                });
            }
        }
Exemplo n.º 18
0
        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();
                }
            }
        }
Exemplo n.º 21
0
        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();
                }
            }
        }
Exemplo n.º 23
0
        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 ();
		}
Exemplo n.º 25
0
 private void Manager_DidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e)
 {
     Message.InvokeSnackBar($"DidRangeBeacons - {e.Beacons[0].Minor} - {DateTime.Now.ToString("yyyy/MM/dd-HH:mm")}");
 }
Exemplo n.º 26
0
        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();
                        }
                    }
                }
            }
        }
Exemplo n.º 27
0
        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;

                }
            }
        }
Exemplo n.º 28
0
        private static void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e)
        {
            var beacons = e.Beacons.OrderBy (OrderByProximity).ToArray ();

            Delegate.BeaconsRanged (beacons, e.Region);
        }
Exemplo n.º 29
0
		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);
        }
Exemplo n.º 31
0
        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);
            }
        }
Exemplo n.º 32
0
        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);
                }
            }
        }
Exemplo n.º 33
0
 public iOSRegionBeaconsRangedEventArgs(CLRegionBeaconsRangedEventArgs eventArgs)
 {
     CLRegionBeaconsRangedEventArgs = eventArgs;
 }