Обнаружение маяков более эффективно
Я использую этот метод для обнаружения маяков
@Override
public void onBeaconServiceConnect() {
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
Log.i("MainA","-------------------------------");
for (Beacon beacon : beacons) {
Log.i("MainActivity", "I see a beacon"+beacon.getId1()+" Major: " + beacon.getId2()+" Minor: "+beacon.getId3());
}
Log.i("MainA","-------------------------------");
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
Я использую два маяка, один оценочный маяк и один виртуальный маяк, смоделированный с bluez. UUID маяков в выходных данных был изменен. Обнаружение работает, но иногда, как вы можете видеть в выходных данных, функция onBeaconServiceConnect вызывается только с одним обнаруженным маяковым сигналом или даже без них. Я знаю, что могу подождать 10 секунд, и если маяк больше не обнаруживается, я могу предположить, что его больше нет в этом районе, но есть ли эффективный способ как можно скорее обнаружить, когда маяк обнаружен или больше не обнаружен?
-------------------------------
04-24 17:10:33.021 2041-3467/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:33.021 2041-3467/com.example.kev.altbeacon I/MainActivity: I see a beacon123456-hfhj-JJJJ-87j8-jjkzbzkf876 Major: 4369 Minor: 4369
04-24 17:10:33.021 2041-3467/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:33.101 2041-2053/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:33.101 2041-2053/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:34.161 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:34.161 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:34.161 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:34.171 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:34.171 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:34.181 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:34.181 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:34.181 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:34.231 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:34.341 2041-3510/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:34.351 2041-3510/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:34.351 2041-3510/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:35.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:35.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:35.411 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:35.461 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:35.461 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:35.461 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:35.471 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:35.471 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:35.511 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:35.531 2041-3562/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:35.531 2041-3562/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:36.011 2041-2054/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:36.011 2041-2054/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:36.641 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:36.641 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:36.641 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:36.651 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:36.651 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:36.651 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:36.661 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:36.661 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:36.701 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:36.711 2041-3628/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:36.711 2041-3628/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:36.711 2041-3628/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:37.821 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:37.821 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:37.821 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:37.841 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:37.841 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:37.841 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:37.841 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:37.841 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:37.891 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:37.901 2041-3681/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:37.901 2041-3681/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:39.071 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:39.071 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:39.071 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:39.091 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:39.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:39.111 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:39.111 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:39.111 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:39.161 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:39.171 2041-3724/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:39.171 2041-3724/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:40.321 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:40.321 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:40.321 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:40.401 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:40.401 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:40.401 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:40.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:40.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:40.451 2041-2054/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:40.461 2041-3770/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:40.461 2041-3770/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:40.761 2041-2053/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:40.761 2041-2053/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:41.591 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:41.591 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:41.591 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:41.661 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:41.661 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:41.661 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:41.661 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:41.661 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:41.711 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:41.721 2041-3819/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:41.721 2041-3819/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:41.721 2041-3819/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:42.861 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:42.871 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:42.871 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:42.881 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:42.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:42.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:42.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:42.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:42.941 2041-2054/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:43.071 2041-3865/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:43.071 2041-3865/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:43.631 2041-2053/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:43.631 2041-2053/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:44.111 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:44.111 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:44.111 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:44.131 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:44.131 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:44.131 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:44.131 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:44.131 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:44.181 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:44.201 2041-3927/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:44.201 2041-3927/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:44.201 2041-3927/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:44.621 2041-2054/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:44.621 2041-2054/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:45.321 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:45.321 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:45.321 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:45.331 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:45.331 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:45.331 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:45.331 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:45.341 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:45.381 2041-2054/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:45.401 2041-4042/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:45.401 2041-4042/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:45.401 2041-4042/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:45.531 2041-2053/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:45.531 2041-2053/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:46.511 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:46.511 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:46.511 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:46.521 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:46.521 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:46.521 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:46.521 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:46.521 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:46.571 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:46.581 2041-4080/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:46.581 2041-4080/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:46.581 2041-4080/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:47.701 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:47.701 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:47.701 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:47.711 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:47.721 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:47.721 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:47.721 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:47.721 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:47.771 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:47.781 2041-4116/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:47.781 2041-4116/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:48.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:48.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:48.891 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:48.911 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:48.911 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:48.911 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:48.921 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:48.921 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:48.961 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:48.971 2041-4169/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:48.971 2041-4169/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:50.081 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:50.081 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:50.081 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:50.091 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:50.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:50.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:50.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:50.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:50.151 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:50.161 2041-4218/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:50.161 2041-4218/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:51.271 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:51.271 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:51.271 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:51.281 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:51.281 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:51.291 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:51.291 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:51.291 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:51.331 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:51.351 2041-4281/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:51.351 2041-4281/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:51.561 2041-2054/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:51.561 2041-2054/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:52.451 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:52.461 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:52.461 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:52.461 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:52.471 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:52.471 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:52.471 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:52.471 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:52.521 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:52.571 2041-4338/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:52.571 2041-4338/com.example.kev.altbeacon I/MainActivity: I see a beacon123456-hfhj-JJJJ-87j8-jjkzbzkf876 Major: 4369 Minor: 4369
04-24 17:10:52.571 2041-4338/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:52.871 2041-2053/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:52.871 2041-2053/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:53.191 2041-3131/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:53.191 2041-3131/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:53.671 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:53.671 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:53.671 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:53.691 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:53.691 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:53.691 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:53.691 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:53.691 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:53.741 2041-2053/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:53.761 2041-4376/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:53.761 2041-4376/com.example.kev.altbeacon I/MainActivity: I see a beacon123456-hfhj-JJJJ-87j8-jjkzbzkf876 Major: 4369 Minor: 4369
04-24 17:10:53.761 2041-4376/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:53.761 2041-4376/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:54.111 2041-2054/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:54.111 2041-2054/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:54.141 2041-2053/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:54.141 2041-2053/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:54.861 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:54.871 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:54.871 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:54.881 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:54.881 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:54.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:54.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:54.891 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:54.931 2041-2054/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:54.951 2041-4438/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:54.951 2041-4438/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:54.951 2041-4438/com.example.kev.altbeacon I/MainActivity: I see a beacon123456-hfhj-JJJJ-87j8-jjkzbzkf876 Major: 4369 Minor: 4369
04-24 17:10:54.951 2041-4438/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:55.081 2041-3131/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:55.081 2041-3131/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:55.431 2041-2054/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:55.431 2041-2054/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:56.071 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:56.071 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:56.071 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:56.101 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:56.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:56.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:56.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:56.101 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:56.151 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:56.201 2041-4523/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:56.201 2041-4523/com.example.kev.altbeacon I/MainActivity: I see a beacon123456-hfhj-JJJJ-87j8-jjkzbzkf876 Major: 4369 Minor: 4369
04-24 17:10:56.201 2041-4523/com.example.kev.altbeacon I/MainActivity: I see a beaconhgfhgvgv-h7h5-88h9-kjh3-7554hjvv8 Major: 39749 Minor: 25488
04-24 17:10:56.201 2041-4523/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:56.721 2041-3131/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:56.721 2041-3131/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:57.341 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:57.341 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:57.341 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:57.401 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:57.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:57.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:57.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:57.411 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:57.451 2041-3131/com.example.kev.altbeacon D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7
04-24 17:10:57.471 2041-4575/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:57.471 2041-4575/com.example.kev.altbeacon I/MainActivity: I see a beacon123456-hfhj-JJJJ-87j8-jjkzbzkf876 Major: 4369 Minor: 4369
04-24 17:10:57.471 2041-4575/com.example.kev.altbeacon I/MainA: -------------------------------
04-24 17:10:57.931 2041-2054/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:57.931 2041-2054/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:57.991 2041-3131/com.example.kev.altbeacon D/ScanRecord: parseFromBytes
04-24 17:10:57.991 2041-3131/com.example.kev.altbeacon D/ScanRecord: first manudata for manu ID
04-24 17:10:58.591 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:58.591 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:58.591 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Stop Scan
04-24 17:10:58.611 2041-2041/com.example.kev.altbeacon D/BluetoothLeScanner: Start Scan
04-24 17:10:58.611 2041-2041/com.example.kev.altbeacon D/BluetoothAdapter: STATE_ON
04-24 17:10:58.611 2041-2041/com.example.kev.altbeacon D/Bluet
1 ответ
Быстро сообщить об обнаружении маяка легко - как только радио декодирует пакет, вы сообщаете об обнаружении. В фоновом режиме на Android 5+ это именно то, что делает библиотека Android Beacon.
Сложнее сообщить о том, что маяк больше не обнаружен. Основная проблема заключается в том, что невозможно мгновенно узнать, когда маяк выходит из зоны действия. Передачи маяка не являются постоянным сигналом - они передают пакеты между периодами молчания передачи. Таким образом, определение того, что маяковый сигнал отсутствует, сводится к определенному временному интервалу, в котором пакеты маякового сигнала не обнаруживаются.
Мобильные устройства также не обнаруживают 100% отправляемых маяковых пакетов. Радиошум, слабые сигналы и столкновения могут привести к потерям пакетов. На коротких расстояниях в несколько метров может быть получено 80-90 процентов пакетов. На больших расстояниях вблизи максимальной дальности передачи BLE 40-50 метров этот процент падает почти до нуля.
Следовательно, структуры обнаружения маяков должны иметь интервал времени с момента последнего обнаружения, который говорит, что статистически вероятно, что маяк больше не находится поблизости. Когда в этом интервале не было обнаружено пакетов маяка, происходит событие.
Можно уменьшить этот интервал, но есть компромиссы. Чем короче интервал, тем больше вероятность того, что вы получите ложные обратные вызовы выхода. Это означает, что вы получаете обратный вызов выхода, за которым быстро следует новый обратный вызов входа при следующем обнаружении пакета.
Решение о том, как долго ждать пакет маяка, прежде чем инициировать выход, сильно зависит от скорости передачи пакета маяка.
Наиболее распространенная частота передачи составляет 10 Гц, то есть 10 пакетов передаются каждую секунду. Но многие производители создают маяки, которые передают менее часто, или создают маяки, которые можно настроить на передачу реже для экономии заряда батареи. Обычно маяки с батареями отправляются в конфигурации с частотой передачи всего 1 Гц. Некоторые маяки передают сигнал только один раз каждые 5 секунд или меньше.
Apple, CoreLocation
Фреймворк использует 30 секунд в качестве интервала выхода области маяка для целей измерения и мониторинга. Во время определения дальности, если маяк не был обнаружен в последнюю секунду, он сообщает о близости "неизвестно". Это не настраивается.
Библиотека маяков Android также использует 30 секунд в качестве интервала выхода области маякового сигнала по умолчанию (это настраивается), и она не включает маяк в список ранжирования, если он не был обнаружен за прошедший период ранжирования (настраивается, но по умолчанию равен 1,1). сек.)
Исходя из показанного в журнале выхода, кажется, что маяк с Major: 39749 Minor: 25488 либо рекламирует на низкой частоте менее 1 Гц, либо имеет низкий уровень сигнала, из-за которого большая часть его пакетов теряется. Если вы увеличите скорость передачи, обнаружение будет более надежным.
Поскольку вы используете библиотеку Android Beacon, у вас есть возможность увеличить интервал сканирования по дальности, чтобы он был больше, чем значение по умолчанию, равное 1,1 секунды, чтобы обнаружения были более устойчивыми. Вы можете сделать это, позвонив beaconManager.setForegroundScanInterval(5000l);
установить его на 5 секунд.
Другой вариант - добавить программный фильтр, чтобы запомнить, был ли маяк виден в последние несколько секунд, и затем сообщить, что он все еще виден, хотя библиотека говорит, что это не так. Это имеет преимущество в том, что не замедляет первоначальное обнаружение больше 1,1 секунды.