Android Make a Bluetooth Low Energy(BLE) GATT server 2

사용 언어: Kotlin 1.6.10
사용 버전: Android Studio 2020.3.1 Patch 4

안드로이드 Make a Bluetooth Low Energy(BLE) GATT server 2를 알아보겠습니다.


저번 시간에 자기 자신을 알리는 것에 이어서 연결 과정을 다뤄보겠습니다.

BluetoothGattServer 변수를 만듭니다.





그리고 openGattServer()로 BluetoothGattServer를 만듭니다.

openGattServer()에는 Context와 BluetoothGattServerCallback이 필요합니다.


우선 bluetoothGattServerCallback부터 만들어보죠.

gattServerCallback은 Service 추가 상태, 연결 상태, Notification 보내기, Characteristic 읽고 쓰기 요청 응답, Descriptor 읽고 쓰기 요청 응답 등을 처리하는 역할의 함수입니다.



onConnectionStateChange를 override 합니다. 이 함수는 BLE 연결 상태가 변화할 때마다 실행되는 함수입니다.






이제 Callback 함수를 다 만들었으니 openGattServer로 GATT server를 만들어줍니다.





그리고 이전 시간에 만든 Service를 추가해 줍니다.






우리는 두 개의 Service를 사용할 거기 때문에 하나의 서비스가 완전히 등록된 다음에 다른 서비스를 등록해야 하는 절차가 필요합니다.

지금은 servicePrimary만 등록한 코드이고, 이제 두 번째 serviceSecondary를 추가해 보는 것을 해보겠습니다.



Callback 함수의 onServiceAdded를 override 합니다.

status가 Service 추가 상태를 나타내는 변수입니다.

service 변수는 status가 가리키는 service를 말합니다.

status가 BluetoothGatt.GATT_SUCCESS 추가 성공이고, service가 servicePrimary 이면 addService로 serviceSecondary를 추가하라는 코드입니다.






그리고 onConnectionStateChange로 가서 removeService로 연결이 종료되면 service를 제거해 줍니다.

newState가 변화된 상태를 나타내는 변수입니다.

BluetoothProfile.STATE_CONNECTED와 BluetoothProfile.STATE_DISCONNECTED로 연결과 해제 상태를 분간할 수 있습니다.






연결하는 것을 Log로 보겠습니다.







두 개의 Service가 추가되었고, 연결 해제 시 remove 되는 걸 확인했습니다.



여기까지 연결을 위한 코드를 만들어보았습니다.


끝.


카테고리: Android


댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)