스레드 및 비콘 통신 관련 정보 수집
머릿속에 키워드들이 범주화가 안되어 무작위로 저장해두고, 더 공부한 뒤에 다시 볼 예정이다.
頭の片隅に置いておくこと!
iBeacon과 BLE
iBeacon은 BLE의 communication 과정중 알림(advertising)만을 사용한다.
이러한 구현 방식은 iBeacon의 주목적이 데이터 교환이 아니라 특정 ID가 부여된 장비에 대한 존재유무 파악이기 때문이다.
iBeacon Packet format
iBeacon의 Packet은 위에서 설명한 알림(advertising) 패킷 포맷을 따르며, 30 bytes의 고정길이 Data를 갖는다. Data는 다음 네 가지로 이뤄진다.
- Proximity UUID : iBeacon 타입에 대한 식별자
- Major Number : 연관된 set의 beacon을 구분하는 번호 (vendor ID 개념)
- Minor Number : 개개의 beacon을 구분하는 번호
- TX Power : 1 meter 거리에서 측정된 수신 신호 강도 (RSSI)
모든감지 콜백은 UI스레드에서 이루어짐. Android Beacon Library는 자체 백그라운드 스레드 풀을 유지하고 운영체제에서 패킷이 들어오면 감지처리를 우선순위가 낮은 백그라운드 스레드로 즉시 전환함. 결과적으로 UI스레드에서 오버헤드가 최소화됨.
비콘은 오로지 신호를 전송하는 것만 가능함. 또한 비콘은 어떠한 정보를 전달하는 것이 아닌 단순히 비콘 자신의 고유 신호만을 전송함. 이러한 신호의 정보를 서버에 등록하여 이를 바탕으로 디바이스가 신호를 인식하면 해당 신호에 대한 정보를 서버로부터 받아와 사용자에게 전달하는 방식으로 설계를 해야함.
위치 접근 허용을 항상 허용으로 해야 백그라운드에서도 정상적으로 앱이 작동함.
Monitoring & Ranging
Monitoring 을 통해 현재 디바이스가 비콘의 영역의 내부에 있다는 것이 판단되면 Ranging 을 통해 해당 비콘과의 근접도를 판단함.
didEnterRegion
didExitRegion
비콘 scanning 하는 동안 UI 업데이트하려면 ex)
runOnUiThread(new Runnable() { public void run() { Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.image10m); Radar.setImageBitmap(bmp); } });
앱 실행여부와 관계없이 블루투스 신호 감지를 위해 필요한 Service
★Service -> onStartCommand() 안드로이드 공식문서 참고 / 한글판 / 예시
Thread, AsyncTask, Service에 대한 이해 필요
★Looper, Handler, Thread를 통한 백그라운드 처리1
★Looper, Handler, Thread를 통한 백그라운드 처리2
[안드로이드] Thread, Handler, Looper를 통한 백그라운드 처리
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 안드로이드의 UI는 기본적으로 메인스레드를 주축으로하는 싱글 스레드 모델로 동작하므로, 메인 스레드에서는 긴 작업을 피해야 합니다. �
itmining.tistory.com
Beacon android 연동하기
Beacon을 연동하기가 생각보다 번거롭다. Beacon 연동을 위한 공식문서?(구글에서 친절히 제공하는?)가 ...
blog.naver.com
출처
https://baked-corn.tistory.com/121
https://medium.com/@devAsterisk/