투케이2K

129. (TWOK/LOGIC) [android] 안드로이드 블루투스 BLE GATT 클라이언트에서 서버 연결 수행 로직 정리 - BluetoothDevice connectGatt 본문

투케이2K 로직정리

129. (TWOK/LOGIC) [android] 안드로이드 블루투스 BLE GATT 클라이언트에서 서버 연결 수행 로직 정리 - BluetoothDevice connectGatt

투케이2K 2025. 1. 1. 11:01

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 블루투스 BLE GATT 클라이언트에서 서버 연결 수행 로직 정리 - BluetoothDevice connectGatt

 

[설 명]

 

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 안드로이드 Bluetooth GATT 연결을 위한 퍼미션 권한 설정 :

  /**
    * // -------------------------------------------------------------
    * TODO [권한 설정]
    * // -------------------------------------------------------------
    * 1. 필요 퍼미션 : 필요 퍼미션 권한 : 위치 및 GPS 권한 , 블루투스 권한 - SCAN , ADVERTISE , CONNECT
    *
    * // TODO [공통]
    * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    *
    * <uses-permission android:name="android.permission.BLUETOOTH"/>
    * <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    * <uses-feature android:name="android.hardware.bluetooth_le" />
    *
    * // TODO [안드로이드 12 이상 : S 버전]
    * <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
    * <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"/>
    * <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
    * // -------------------------------------------------------------
    * 2. 참고 :
    *
    * - 서버 및 클라이언트 GATT 서비스 설정 시 UUID 값이 일치해야합니다
    * - 클라이언트가 Read 요청 시 서버는 응답 확인 현재 날짜 및 시간 값을 반환합니다
    * - 클라이언트가 Write 요청 시 setValue 로 지정 된 값 그대로 반환합니다
    * - 클라이언트는 원격 서버와 연결 완료 후 실시간 Notify 알림을 받을 수 있게 설정합니다
    * // -------------------------------------------------------------
    * */

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 애플리케이션 수행 및 블루투스 BLE Gatt 를 연결할 수 있는 클라이언트 액티비티 화면 진입

  >> 사전) 위치 및 근처기기 , 블루투스 관련 퍼미션 권한 부여 상태 확인 및 권한 부여 필요

  >> 클라이언트 (Android) - 서버 (Android) : 모바일 일 간 연결 수행 실시


2. Gatt 연결을 하기 위한 서버 블루투스 장비 Mac 정보 확인 및 블루투스 gatt 연결 수행 

  >> BluetoothDevice.connectGatt : BluetoothGattCallback


3. [IF] 사전 블루투스 장비가 페어링 되어 있지 않은 경우 클라이언트가 connectGatt 를 호출하는 경우 페어링 모드 허용 설정 창 표시 수행 및 페어링 모드 요청 , 클라이언트 To 서버 커넥션 연결 완료 상태 확인

  >> 서버쪽에서도 페어링 모드 허용 설정 창이 표시 되며, 서버가 허용을 허락한 경우에 클라이언트 BluetoothGattCallback 콜백함수에서 새로운 클라이언트 연결이 표시됨


4. [ELSE] 블루투스 장비가 서로 페어링 된 상태 인 경우 클라이언트가 connectGatt 를 호출 시 BluetoothGattCallback 콜백함수에서 새로운 클라이언트 연결이 표시됨

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://developer.android.com/develop/connectivity/bluetooth/ble/connect-gatt-server?hl=ko

// --------------------------------------------------------------------------------------

 

반응형
Comments