투케이2K

141. (AndroidStudio/android/java) 블루투스 (bluetooth) 및 GPS 기능 활성 상태 체크 본문

Android

141. (AndroidStudio/android/java) 블루투스 (bluetooth) 및 GPS 기능 활성 상태 체크

투케이2K 2021. 5. 12. 15:01

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

[블루투스 및 GPS 기능 활성 상태 확인 호출 부분]

if(getBleGpsStateCheck() == true){
	Log.d("---","---");
	Log.w("//===========//","================================================");
	Log.d("","\n"+"[A_State > 블루투스 및 GPS 활성 상태 확인]");
	Log.d("","\n"+"[상태 : 모두 정상 활성화 상태]");
	Log.w("//===========//","================================================");
	Log.d("---","---");
}
else {
	Log.d("---","---");
	Log.e("//===========//","================================================");
	Log.d("","\n"+"[A_State > 블루투스 및 GPS 활성 상태 확인]");
	Log.d("","\n"+"[상태 : 기능 비활성 상태 확인]");
	Log.e("//===========//","================================================");
	Log.d("---","---");
}

[블루투스 기능 활성 여부 및 GPS 기능 활성 체크 메소드]

public Boolean getBleGpsStateCheck(){
	/**
	 * TODO [필요 퍼미션]
	 * <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"/>
	 * */
	boolean state_result = false;
	try {
		BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
		if(mBluetoothAdapter == null){ //TODO [블루투스를 지원하는 기기인지 확인]
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_State > getBleGpsStateCheck() 메소드 : 블루투스 지원 기기 확인]");
			Log.d("","\n"+"[디바이스 : 블루투스를 지원하지 않는 기기]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
			//TODO [Alert 팝업창 알림 실시]
			getAlertDialog("[알림]",
					"사용자 디바이스는 블루투스 기능을 지원하지 않는 단말기입니다.",
					"확인", "취소", "");
		}
		else { //TODO [블루투스가 켜져있는지 확인]
			Log.d("---","---");
			Log.w("//===========//","================================================");
			Log.d("","\n"+"[A_State > getBleGpsStateCheck() 메소드 : 블루투스 지원 기기 확인]");
			Log.d("","\n"+"[디바이스 : 블루투스를 지원하는 기기]");
			Log.w("//===========//","================================================");
			Log.d("---","---");
			if(mBluetoothAdapter.isEnabled() == true){
				Log.d("---","---");
				Log.w("//===========//","================================================");
				Log.d("","\n"+"[A_State > getBleGpsStateCheck() 메소드 : 블루투스 기능 활성 확인]");
				Log.d("","\n"+"[상태 : 블루투스 기능 활성]");
				Log.w("//===========//","================================================");
				Log.d("---","---");

				//TODO [GPS 활성 상태 확인 실시]
				try {
					LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
					if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){ //TODO 위치 권한 비활성인 경우
						Log.d("---","---");
						Log.e("//===========//","================================================");
						Log.d("","\n"+"[A_State > getBleGpsStateCheck() 메소드 : GPS 위치 권한 활성 여부 확인]");
						Log.d("","\n"+"[상태 : 비활성]");
						Log.e("//===========//","================================================");
						Log.d("---","---");
						//TODO [Alert 팝업창 알림 실시]
						getAlertDialog("[알림]",
								"GPS 기능이 비활성 상태입니다.\nGPS 기능을 활성화해야 정상 기능 사용이 가능합니다.",
								"확인", "취소", "");
					}
					else { //TODO 위치 권한 활성인 경우
						Log.d("---","---");
						Log.w("//===========//","================================================");
						Log.d("","\n"+"[A_State > getBleGpsStateCheck() 메소드 : GPS 위치 권한 활성 여부 확인]");
						Log.d("","\n"+"[상태 : 활성]");
						Log.w("//===========//","================================================");
						Log.d("---","---");
						state_result = true;
					}
				}
				catch (Exception e){
					e.printStackTrace();
				}
			}
			else {
				Log.d("---","---");
				Log.e("//===========//","================================================");
				Log.d("","\n"+"[A_State > getBleGpsStateCheck() 메소드 : 블루투스 기능 활성 확인]");
				Log.d("","\n"+"[상태 : 블루투스 기능 비활성]");
				Log.e("//===========//","================================================");
				Log.d("---","---");
				//TODO [Alert 팝업창 알림 실시]
				getAlertDialog("[알림]",
						"블루투스 기능이 비활성 상태입니다.\n블루투스 기능을 활성화해야 정상 기능 사용이 가능합니다.",
						"확인", "취소", "");
			}
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
	return state_result;
}

[팝업창 호출 및 인텐트 이동]

//TODO [AlertDialog 팝업창 호출 메소드 정의 실시]
public void getAlertDialog(String header, String content, String ok, String no, String normal){
	//TODO 타이틀 및 내용 표시
	final String Tittle = header;
	final String Message = content;

	//TODO 버튼 이름 정의
	String buttonNo = no;
	String buttonYes = ok;
	String buttonNature = normal;

	//TODO AlertDialog 팝업창 생성
	new AlertDialog.Builder(A_State.this)
			.setTitle(Tittle) //[팝업창 타이틀 지정]
			//.setIcon(R.drawable.tk_app_icon) //[팝업창 아이콘 지정]
			.setMessage(Message) //[팝업창 내용 지정]
			.setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
			.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					// TODO [메시지 내용에 따라 분기 처리 실시]
					if(Message.contains("블루투스") && Message.contains("비활성")){
						goBleSettingsIntent(); //TODO [블루투스 설정창 이동 실시]
					}
					else if(Message.contains("GPS") && Message.contains("비활성")){
						goGpsSettingsIntent(); //TODO [GPS 기능 설정창 이동 실시]
					}
				}
			})
			.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
				}
			})
			.setNeutralButton(buttonNature, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
				}
			})
			.show();
}

//TODO [안드로이드 시스템 블루투스 설정창 이동]
public void goBleSettingsIntent(){
	try {
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[BeaconScan > goBleSettingsIntent() 메소드 : 블루투스 설정창 인텐트 이동 실시]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		Intent go_ble = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
		go_ble.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
		startActivity(go_ble);
		overridePendingTransition(0, 0);
	}
	catch (Exception e){
		e.printStackTrace();
	}
}

//TODO [안드로이드 시스템 GPS 설정창 이동]
public void goGpsSettingsIntent(){
	try {
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[BeaconScan > goGpsSettingsIntent() 메소드 : 위치 권한 설정창 인텐트 이동 실시]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		Intent go_gps = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
		go_gps.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
		startActivity(go_gps);
		overridePendingTransition(0, 0);
	}
	catch (Exception e){
		e.printStackTrace();
	}
}

/* =========================== */

/* =========================== */

[결과 출력]

/* =========================== */

 

반응형
Comments