본문 바로가기
Development/Android

[안드로이드] 비행기모드 및 유심, 로밍 확인하기

by 푸민 2015. 9. 4.
반응형



안녕하세요 푸민입니다.

저번 포스팅에 네트워크 상태 체크하는 것에 이어 이번에는 비행기모드와 로밍상태를 확인해 볼까요


먼저 비행기 모드 확인은


 코드 

int result;

try {

if (android.os.Build.VERSION.SDK_INT > 16){

result = Settings.Global.getInt(

context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON);

}else{

result = Settings.System.getInt(

context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);

}

if(result != 0){

//여기가 비행기모드

}

else{

//비행기모드 아님 

}

} catch (Exception e) {

//비행기모드 아님

}


 설명 

int 값의 결과를 받을 변수 result 를 정의합니다. 비행기 모드를 체크할 수 있는 방법은 안드로이드 버전별로 나뉩니다. 16버전 즉 젤리빈 초기 버전보다 높다면 Settings 객체내의 Global 객체를 통해서 값을 들고오구요. 낮다면 Settings 객체의 System 객체를 통해서 들고옵니다. 결과값이 0이 아니라면 비행기모드라는 것입니다. 그 외에는 비행기 모드가 아닙니다.



다음으로는 유심을 확인해볼까요?


 코드 

TelephonyManager telephonyManager = 

(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

 

int simState = telephonyManager.getSimState();

if (simState == TelephonyManager.SIM_STATE_ABSENT || simState == TelephonyManager.SIM_STATE_UNKNOWN) {

//유심없음

} else {

//유심있음

}


 설명 

유심의 확인은 TelephonyManager 객체를 통해서 알수 있습니다. 해당 객체는 역시 Context 객체를 통해서 받아올 수 있습니다. TelephonyManager 객체의 getSimState() 를 통해 상태를 int 값으로 받습니다. 그리고 TelephonyManager 객체의 SIM_STATE_ABSENT SIM_STATE_UNKNOWN 을 통해서 확인해 볼 수 있습니다.



마지막으로 로밍 확인


 코드 

boolean isRoaming = telephonyManager.isNetworkRoaming();


 설명 

TelephonyManager 를 통해서 isNetworkRoaming() 을 통해서 boolean 값으로 알수 있습니다. 당연히 true 몇 로밍 상태인것이겠지요??

반응형

댓글