본문 바로가기

ANDROID/Bluetooth

[Bluetooth] BLE에 대한 간단한 정리

BLE(Bluetooth Low Energy)란?



- 2010년 6월 30일, 블루투스 4.0 버전의 등장과 함께 제공된 프로토콜 중 하나


- 전력소모 최소화, 배터리 수명연장에 중점을 둔 프로토콜


- 다른 무선 전송규격에 비해 상대적으로 느린 편.


> 현재 웨어러블 기기를 중점으로 주로 사용되고 있는 프로토콜로 알려져 있음.



핵심 구성요소들



- GATT (Generic Attribute Profile) 


데이터를 어떠한 방식으로 주고받을지에 대해 정의함.


- Central(혹은 GATT Client)


컴퓨터, 태블릿, 모바일 기기등 주로 데이터 요청과 송신을 하는 주체


- Peripheral(혹은 GATT Server)


Central의 요청에 따라 데이터를 전송하는 객체


- Services 


주변 BLE 장치와의 상호작용을 정의해 그에 따른 feature를 제공하도록 함


- Characteristics


정의하는 부분과 변수로 나뉘며, permission properties(read, write, notify, indicate)를 사용해

value를 습득


- Descripter 


Characteristics에 nested 된 optional values로써 특정 value의 정의와 접근방식등을 알려줌


- UUID(Universally Unique ID)


Peripheral이 Central에게 어떤 서비스등을 제공하는지 정의하는 UUID



현재 대략적인 정의와 구성요소, 사용용도에 대해 좀 알아둔 정도인데, 이를 앱에서 사용하기 위해


구성요소등을 빌드업하는데 꽤나 고생을 하고 있다. 


단순 BT와 다르게 위치정보 권한이 필요하고, reqeustCallback등의 컴포넌트 정의가 필요하기 때문.


다행스럽게 관련하여 repo들과 사용 예시들이 많은데, 이를 참조하여 열심히 디벼보는 중.



BLE를 Kotlin으로 구성하고 있다면 아래 링크를 통해 만들어 볼 것. 꽤나 긴 편이나 핵심 구성요소등이


잘 나와있는 것으로 보임 > https://medium.com/@nithinjith.p/ble-in-android-kotlin-c485f0e83c16




< 참조 >


https://medium.com/@avigezerit/bluetooth-low-energy-on-android-22bc7310387a


https://namu.wiki/w/%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4