The code related to this blog can be found here.
The original blog can be found here.
Backgrounds
When iBeacon is put forward by Apple in 2014 for the first time, it was designed to detect the time that a device enters and leaves a region. According to the documentation, RSSI (Received Signal Strength Indication) is used in the monitoring and ranging. However, no more details are provided for the detection mechanism. Since RSSI is influenced by many factors and suffers from strong fluctuation, simply reporting entrance and departure when receiving/not receiving RSSI value is not reliable.
In this blog, we basically discuss how to detect the entrance and departure of a device for a specific region indicated by a BLE beacon accurately. Note that the methods provided here is platform independent since the methods are based on raw RSSI data from the system level. Hence both iOS and Android system can utilize the methods. Also note that the methods here are aimed for offline analysis but not real-time detection. However, I believe that the basic ideas can be applied for real-time detection with minor modification.
Actually, BLE Beacon has been used in indoor localization in recent years (A review can be found here). Although localization sounds to be