안드로이드에서 비콘을 스캐닝하고 비콘이 발견되면 BluetoothAdapter.LeScanCallback 클래스가 처리하게 됩니다.
( 안드로이드 젤리빈, 킷캣 기준. 롤리팝부터 확 바뀌었으나 아직은 4.4기준으로 만들어야 합니다 )
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
....
}
}
문제는 이 콜백 메쏘드가 호출되는 주기가 Beacon의 신호 발산 인터벌을 그대로 따라가지 않는다는 점.
예를 들어 비콘의 인터벌이 200ms .. 로 세팅됐다 하더라도 onLeScan콜백 메쏘드가 실행되는 시간차를 찍어 보면 200 ms가 아닌 400, 600이 나오는 경우가 있습니다.
비콘이 잘못됐나? 계측장비로 찍어 보면 비콘은 200ms로 잘 쏘고 있었습니다.
[출처] 안드로이트 비콘 스캐닝시 고려 사항|작성자 빅토리부기우기