Embarcadero has released a new component set called BeaconFence that allows you to indoor geofencing type capabilities with Delphi XE8 Firemonkey. Beacon fencing allows you to use beacons to create zones on a map and then fire events and have your app take action when a device interacts with those zones. The new BeaconFence components are available for free via GetIt within Delphi XE8. There are also two demos that come with the installed components. One demonstrates Beacon Map Fencing and the other demonstrates Beacon Zone Fencing. The zone fencing demo uses proximities to handle it’s events while the map fencing demo uses the new BeaconFence Map Editor to allow you to import a map of your location and lay out the zones, beacons, and paths visually. This can greatly simply using beacons indoors. At this time the two demos and the beacon components compile for Android, IOS, and OSX. source code for the two demos is provided but not for the components. Apparently the free license supports “allowing you to set up and deploy BeaconFence with support of up to 3 beacons, 1 location with a building size of up to 1,500 square feet / 150 square meters and 1 application.” I’m guessing BeaconFence also works with Appmethod. Here are some of the BeaconFence options from code in the demos:
// Particle filter options
SbBeaconsToUse.Value := BeaconMapFencing1.ParticleFilterOptions.BeaconsToUse;
SbParticlesNumber.Value := BeaconMapFencing1.ParticleFilterOptions.ParticlesNumber;
SbUpdateInterval.Value := BeaconMapFencing1.ParticleFilterOptions.UpdateInterval;
SbSignalRelativeStdDev.Value := BeaconMapFencing1.ParticleFilterOptions.SignalRelativeStdDev;
SbMovementSTDev.Value := BeaconMapFencing1.ParticleFilterOptions.MovementStDeviation;
SwOwnsCalcDistance.IsChecked := BeaconMapFencing1.ParticleFilterOptions.OwnsCalcDistance;
SwAutoCalibration.IsChecked := BeaconMapFencing1.ParticleFilterOptions.AutomaticCalibration;
SboxMotionThres.Value := BeaconMapFencing1.ParticleFilterOptions.MotionThreshold;
//Beacon Manager Options
SbBeaconDeathTime.Value := BeaconMapFencing1.BeaconManagerOptions.BeaconDeathTime;
SbSPC.Value := BeaconMapFencing1.BeaconManagerOptions.SPC;
SbScanTime.Value := BeaconMapFencing1.BeaconManagerOptions.ScanningTime;
SbScanSleepTime.Value := BeaconMapFencing1.BeaconManagerOptions.ScanningSleepingTime;
CbCalcMode.ItemIndex := Integer(BeaconMapFencing1.BeaconManagerOptions.CalcMode);
CbMode.ItemIndex := Integer(BeaconMapFencing1.BeaconManagerOptions.Mode);
//Visual Options
SwPosition.IsChecked := TFencingMapOption.ShowPosition in BeaconMapFencing1.MapOptions;
SwPathPosition.IsChecked := TFencingMapOption.ShowPositionInPath in BeaconMapFencing1.MapOptions;
SwColorBeacons.IsChecked := TFencingMapOption.ColorBeacon in BeaconMapFencing1.MapOptions;
SwShowBeacons.IsChecked := TFencingMapOption.ShowBeacons in BeaconMapFencing1.MapOptions;
SwBeaconsSignal.IsChecked := TFencingMapOption.ShowBeaconSignal in BeaconMapFencing1.MapOptions;
SwZones.IsChecked := TFencingMapOption.ShowZones in BeaconMapFencing1.MapOptions;
SwShowPaths.IsChecked := TFencingMapOption.ShowPaths in BeaconMapFencing1.MapOptions;
Head over and check out more information about BeaconFence for Delphi XE8 Firemonkey.