안드로이드 API GPS 상태체크
지도를 비롯하여, 안드로이드 기기의 위치정보를 이용한 서비스 개발을 할 때, 일반적으로 기기의 현재 위도(latitude), 경도(longitude) 값이 필요하다.
기기의 현재 위,경도 값을 알기 위해서는, 사용자가 위치정보 사용을 동의해야 한다.
만약 동의하지 않은 상태에서 위치 획득 관련 API호출한다면, exception을 던지게 되어있다.
만약 아래와 같은 UX flow를 구현하려 한다면, 아래 코드를 참고하자.
만약 아래와 같은 UX flow를 구현하려 한다면, 아래 코드를 참고하자.
GPS 사용동의 여부를 체크 후
if 미동의 : 'GPS 사용 동의 설정 화면으로 이동 하겠는가?' 다이얼로그 출력.
if 다이얼로그로 부터 '이동한다' 입력받을 경우 : GPS 설정 화면으로 이동.
if 다이얼로그로 부터 '이동한다' 입력받을 경우 : GPS 설정 화면으로 이동.
아래는 그 기능의 예제코드이다.
@Override
public void onCreate(Bundle savedInstanceState) {
...
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
alertCheckGPS();
}
...
}
private void alertCheckGPS() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Your GPS is disabled! Would you like to enable it?")
.setCancelable(false)
.setPositiveButton("Enable GPS",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveConfigGPS();
}
})
.setNegativeButton("Do nothing",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
// GPS 설정화면으로 이동
private void moveConfigGPS() {
Intent gpsOptionsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsOptionsIntent);
}
'개발자의 기록 노트 > Android' 카테고리의 다른 글
[안드로이드] 최신 Android 7.0 "누가" 출시 : 안드로이드 앱 개발자가 알아둬야 할 것들 (0) | 2016.09.23 |
---|---|
[안드로이드] 동적으로 다음페이지를 로딩하는 ListView 구현 (0) | 2012.02.26 |
[안드로이드] 안드로이드의 Process & Threads (0) | 2012.02.08 |
[안드로이드] 자이로스코프 이야기. 가속도센서 vs 자이로센서 비교 (3) | 2011.08.13 |
[안드로이드] 이미 생성해둔(Sqlite) DB를 앱에서 Load하여 사용하기 (0) | 2011.08.11 |
[안드로이드] 안드로이드에서 SQLite를 다뤄보자 (2) (0) | 2011.08.09 |