투케이2K

149. (kotlin/코틀린) [유틸 파일] bluetoothConnectState : 사용자 모바일 디바이스 블루투스 장비 연결 상태 확인 본문

Kotlin

149. (kotlin/코틀린) [유틸 파일] bluetoothConnectState : 사용자 모바일 디바이스 블루투스 장비 연결 상태 확인

투케이2K 2023. 1. 1. 19:26

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // TODO [SEARCH FAST] : [bluetoothConnectState] : 사용자 모바일 디바이스 블루투스 장비 연결 상태 확인
        fun bluetoothConnectState(mContext: Context): Boolean {

            /**
             * // -----------------------------------------
             * [bluetoothConnectState 메소드 설명]
             * // -----------------------------------------
             * 1. 사용자 모바일 디바이스 블루투스 장비 연결 상태 확인
             * // -----------------------------------------
             * 2. 호출 방법 : C_StateCheck.bluetoothConnectState(this@A_Intro)
             * // -----------------------------------------
             * 3. 리턴 결과 : 블루투스 장비가 연결된 경우 true / 아니면 false
             * // -----------------------------------------
             * 4. 필요 퍼미션 :
             *
             * <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"></uses-permission>
             * // -----------------------------------------
             */


            // [리턴 결과 반환 변수 선언]
            var returnData = false
            var deviceName = ""


            // [로직 처리 실시]
            try {

                /**
                 * // -----------------------------------------
                 * 1. [페어링 된 블루투스 장비 목록을 얻어옵니다]
                 * 2. 블루투스 기능이 활성화된 경우 BluetoothDevice 리스트 목록 표시 / 블루투스 기능이 비활성인 경우 목록 표시 안됨
                 * // -----------------------------------------
                 */

                // TODO [안드로이드 12 / 타겟 31 이상 권한 체크 로직 추가 실시]
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                    if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
                        Log.i("---","---")
                        Log.e("//===========//","================================================")
                        Log.i("","\n"+"[C_StateCheck >> bluetoothConnectState() :: 블루투스 장비 연결 상태 확인 실패]")
                        Log.i("","\n"+"-----------------------------------------")
                        Log.i("","\n"+"[ERROR :: "+"Android 12 / target 31 이상 BLUETOOTH_CONNECT 권한 부여 안됨"+"]")
                        Log.e("//===========//","================================================")
                        Log.i("---","---")

                        return returnData
                    }
                }
                val bluetoothDevices = BluetoothAdapter.getDefaultAdapter().bondedDevices
                Log.i("---","---")
                Log.d("//===========//","================================================")
                Log.i("","\n"+"[C_StateCheck >> bluetoothConnectState() :: 블루투스 장비 연결 상태 확인 실시]")
                Log.i("","\n"+"-----------------------------------------")
                Log.i("","\n"+"[페어링된 블루투스 장비 목록 :: "+bluetoothDevices.toString()+"]")
                Log.d("//===========//","================================================")
                Log.i("---","---")

                // [페어링된 블루투스 장비 목록에서 현재 연결된 상태 체크 실시]
                for (bluetoothDevice in bluetoothDevices) {
                    try {
                        // [isConnected 메소드를 사용해서 페어링된 블루투스 장비 목록에서 개별 장비가 연결되었는지 확인 실시]
                        val m = bluetoothDevice.javaClass.getMethod("isConnected")
                        val connected = m.invoke(bluetoothDevice) as Boolean
                        if (connected == true) { // TODO [블루투스 장비가 연결된 상태]

                            // [연결된 블루투스 디바이스 이름 확인]
                            deviceName = bluetoothDevice.name.toString()

                            ///*
                            if (C_Util.stringNotNull(deviceName) === true) {
                            } else {
                                deviceName = bluetoothDevice.address.toString()
                            }
                            // */

                            // [리턴 결과 삽입]
                            returnData = true

                            // [반복문 종료]
                            break
                        }
                    } catch (e: Exception) {
                        e.printStackTrace()
                    }
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            Log.i("---","---")
            Log.d("//===========//","================================================")
            Log.i("","\n"+"[C_StateCheck >> bluetoothConnectState() :: 블루투스 장비 연결 상태 확인 실시]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[DEVICE :: "+deviceName.toString()+"]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[RETURN :: "+returnData.toString()+"]")
            Log.d("//===========//","================================================")
            Log.i("---","---")


            // [리턴 결과 반환]
            return returnData
        }
 

[결과 출력]

 

 

반응형
Comments