위치기반 서비스가 사용가능한지 어떻게 확인하나요?

조회수 1455회

안드로이드 앱을 개발하고 있는데요. GPS가 작동하는지 안하는지 어떻게 체크할수있는지 모르겠어요. 지금 true, false로 작동하는지 알수있는 메소드가 필요한데 뭐가있을까요? false일때 gps서비스를 사용 가능하게 만드는 다이얼로그를 띄우려고 하거든요.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    아래 코드처럼 하시면 위치기반 서비스와 네트워크가 현재 가능한지 아닌지 확인할수있습니다.

    LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
    boolean gps_enabled = false;
    boolean network_enabled = false;
    
    try {
        gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    } catch(Exception ex) {}
    
    try {
        network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    } catch(Exception ex) {}
    
    if(!gps_enabled && !network_enabled) {
        // 유저에게 알린다.
        AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        dialog.setMessage(context.getResources().getString(R.string.gps_network_not_enabled));
        dialog.setPositiveButton(context.getResources().getString(R.string.open_location_settings), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                    // TODO Auto-generated method stub
                    Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    context.startActivity(myIntent);
                    //get gps
                }
            });
        dialog.setNegativeButton(context.getString(R.string.Cancel), new DialogInterface.OnClickListener() {
    
                @Override
                public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                    // TODO Auto-generated method stub
    
                }
            });
        dialog.show();      
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)