public void StartMonitoringRegion (string UUID)
{
UIApplication.SharedApplication.InvokeOnMainThread (delegate {
// REQUIRED TO BE INVOKED ONN UI MAIN THREAD
if (beaconManager == null) {
beaconManager = new BeaconManager ();
beaconManager.ReturnAllRangedBeaconsAtOnce = true;
beaconManager.AuthorizationStatusChanged += (sender, e) => StartRangingBeacons (UUID);
beaconManager.RangedBeacons += (sender, e) =>
{
SystemLogger.Log (SystemLogger.Module.PLATFORM, "Ranged Beacon [found]");
Estimote.Beacon[] beacons = e.Beacons;
//new UIAlertView("Beacons Found", "Just found: " + e.Beacons.Length + " beacons.", null, "OK").Show();
foreach (Estimote.Beacon beacon in beacons) {
var b = new Appverse.Core.iBeacon.Beacon ();
b.Address = beacon.MacAddress;
b.Major = beacon.Major;
b.Minor = beacon.Minor;
b.Name = beacon.Name;
b.UUID = beacon.ProximityUUID.AsString();
CLProximity proximity = beacon.Proximity;
DistanceType proximityB;
switch (proximity) {
case CLProximity.Far:
proximityB = DistanceType.FAR;
break;
case CLProximity.Immediate:
proximityB = DistanceType.INMEDIATE;
break;
case CLProximity.Near:
proximityB = DistanceType.FAR;
break;
default:
proximityB = DistanceType.UNKNOWN;
break;
}
b.setDistance (proximityB);
b.Meters = (double)beacon.Distance;
/*
SystemLogger.Log (SystemLogger.Module.PLATFORM, "K: DeviceDiscovered UUID: " + b.UUID);
SystemLogger.Log (SystemLogger.Module.PLATFORM, "K: DeviceDiscovered Name: " + b.Name);
SystemLogger.Log (SystemLogger.Module.PLATFORM, "K: DeviceDiscovered Distance: " + b.Distance);
SystemLogger.Log (SystemLogger.Module.PLATFORM, "K: DeviceDiscovered Meters: " + b.Meters);
SystemLogger.Log (SystemLogger.Module.PLATFORM, "K: DeviceDiscovered Major: " + b.Major);
SystemLogger.Log (SystemLogger.Module.PLATFORM, "K: DeviceDiscovered Minor: " + b.Minor);
*/
var key = UniqueKey(b);
if (beaconDict.ContainsKey(key))
{
beaconDict[key] = b;
}else{
beaconDict.Add(key, b);
}
//beaconArray.Add (b);
}
};
}
StartRangingBeacons (UUID);
});
}