Notice
Recent Posts
Recent Comments
Link
투케이2K
412. (android/java) [android 12 / target 31] 블루투스 장비 연결 상태 체크 실시 (bluetooth connected) - 타겟 31 대응 본문
Android
412. (android/java) [android 12 / target 31] 블루투스 장비 연결 상태 체크 실시 (bluetooth connected) - 타겟 31 대응
투케이2K 2022. 11. 24. 15:34[개발 환경 설정]
개발 툴 : AndroidStudio
[AndroidManifest.xml : 소스 코드]
<!-- 블루투스 및 GPS : 퍼미션 설정 선언 -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--블루투스 권한 추가 sdk 31 대응-->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
[java : 소스 코드]
// TODO [사용자 모바일 디바이스 블루투스 장비 연결 상태 확인]
public static Boolean bluetoothConnectState(Context mContext) {
/**
* // -----------------------------------------
* [bluetoothConnectState 메소드 설명]
* // -----------------------------------------
* 1. 사용자 모바일 디바이스 블루투스 장비 연결 상태 확인
* // -----------------------------------------
* 2. 호출 방법 : if (C_StateCheck.bluetoothConnectState(A_Main.this) == true) { } else { }
* // -----------------------------------------
* 3. 리턴 결과 : 블루투스 장비가 연결된 경우 true / 아니면 false
* // -----------------------------------------
* 4. 필요 퍼미션 :
*
* <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
* // -----------------------------------------
* */
// [리턴 결과 반환 변수 선언]
boolean returnData = false;
String 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"+"[error :: "+"Android 12 / target 31 이상 BLUETOOTH_CONNECT 권한 부여 안됨"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return returnData;
}
}
Set<BluetoothDevice> bluetoothDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"[C_StateCheck >> bluetoothConnectState() :: 블루투스 장비 연결 상태 확인 실시]");
Log.i("","\n"+"[페어링된 블루투스 장비 목록 :: "+String.valueOf(bluetoothDevices.toString())+"]");
Log.d("//===========//","================================================");
Log.i("---","---");
// [페어링된 블루투스 장비 목록에서 현재 연결된 상태 체크 실시]
for (BluetoothDevice bluetoothDevice : bluetoothDevices) {
try {
// [isConnected 메소드를 사용해서 페어링된 블루투스 장비 목록에서 개별 장비가 연결되었는지 확인 실시]
Method m = bluetoothDevice.getClass().getMethod("isConnected", (Class[]) null);
boolean connected = (boolean) m.invoke(bluetoothDevice, (Object[]) null);
if (connected == true){ // TODO [블루투스 장비가 연결된 상태]
// [연결된 블루투스 디바이스 이름 확인]
deviceName = String.valueOf(bluetoothDevice.getName());
///*
if (deviceName != null && deviceName.length()>0
&& deviceName.trim().equals("") == false && deviceName.trim().equals("null") == false){
}
else {
deviceName = String.valueOf(bluetoothDevice.getAddress());
}
// */
// [리턴 결과 삽입]
returnData = true;
// [반복문 종료]
break;
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
catch (Exception e){
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_StateCheck >> bluetoothConnectState() :: 블루투스 장비 연결 상태 확인 실시]");
Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
}
// [로그 출력 실시]
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"[C_StateCheck >> bluetoothConnectState() :: 블루투스 장비 연결 상태 확인 실시]");
Log.i("","\n"+"[deviceName :: "+String.valueOf(deviceName)+"]");
Log.i("","\n"+"[return :: "+String.valueOf(returnData)+"]");
Log.d("//===========//","================================================");
Log.i("---","---");
// [리턴 결과 반환]
return returnData;
}
[결과 출력]
반응형
'Android' 카테고리의 다른 글
Comments