차근차근/Android

안드로이드 gps 상태 체크

예쁜꽃이피었으면 2015. 1. 8. 11:15

검색어 : 안드로이드 gps on off 체크

안드로이드 gps 상태 체크


LocationManager.GPS_PROVIDER : GPS 신호를 사용

LocationManager.NETWORK_PROVIDER : 3G , Wi-fi 로 신호




[ Android ] 무선 인터넷과 GPS 상태 확인 법

http://gogorchg.tistory.com/96

//인터넷에 연결돼 있나 확인

ConnectivityManager connect = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);

if ( 

connect.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == 

NetworkInfo.State.CONNECTED ||

 connect.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() ==

NetworkInfo.State.CONNECTED ) {

isInternetEnabled = true;

} else {

isInternetEnabled = false;

}

if (myLocationManager == null) {

myLocationManager = (LocationManager)getSystemService(

         Context.LOCATION_SERVICE);

}

// 시스템 > 설정 > 위치 및 보안 > 무선 네트워크 사용 여부 체크.

isInternetGPSEnabled = myLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

// 시스템 > 설정 > 위치 및 보안 > GPS 위성 사용 여부 체크.

isGpsEnabled = myLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

출처 : http://roter.pe.kr/216




GPS 사용 유/무 확인하기 – LocationManager::isProviderEnabled()

http://plaboratory.org/archives/251


LocationListener의 onProviderDisabled() 메소드를 이용하여 GPS의 사용 유/무 확인은 LocationManager에서 최소 한 번은 위치 정보를 요청했을 때 (requestLocationUpdates()) 만 사용이 가능하다. 그러나 LocationManager의 isProviderEnabled(String provider) 메소드를 이용하면 LocationListener 구현이나 별도로 LocationManager의 위치 정보 요청 없이 바로 GPS 수신 상태를 확인할 수 있다.

  1LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  2
  3 if(!locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
  4   // GPS가 꺼져있을 시 앱이 수행할 작업 코드
  5 }

isProviderEnabled() 메소드는 리턴값으로, GPS가 켜져있으면 true, 아니면 false를 반환한다.


GPS 사용 유/무 확인하기 – LocationListener::onProviderDisabled()

http://plaboratory.org/archives/245


아임인, 네이버지도 등  GPS를 사용하는 어플리케이션의 경우 현재 디바이스가 GPS 기능을 사용하고 있는지 여부를 확인해서, GPS가 꺼져있는 경우 사용자가 이를 켤 수 있도록 유도해야한다. (물론, 사용자 선택에 따라 GPS를 사용하지 않고도 이용이 되도록 한다.)

 

 

어플리케이션에서 직접적으로 GPS를 켤 수 있게 설정은 하지 못하므로 위와 같이 ‘설정’ 버튼을 누르면 ‘위치 설정’ 으로 가서 사용자로 하여금 켤 수 있도록 해야한다.

 

  1 @Override
  2 public void onProviderDisabled(String provider) {
  3   new AlertDialog.Builder(MainActivity.this)
  4                  .setMessage(“GPS가 꺼져있습니다.\n ‘위치 서비스’에서 ‘Google 위치 서비스’를 체크해주세요”)
  5                  .setPositiveButton(“설정”,new DialogInterface.OnClickListener() {
  6                    // 설정 창을 띄운다
  7                   Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
  8                    startActivity(intent);
  9                  });
 10                  .setNegativeButton(“취소”null).show();
 11 }

 

LocationListener를 구현할 때, onProviderDisabled() 메소드를 오버라이드를 해주면 된다. onProviderDisabled() 메소드는 프로바이더가 꺼져있을 때, 즉 디바이스에서 GPS 설정이 안되있을 경우 호출이 되는데, 위와 같이 메소드가 호출됬을 때 AlertDialog를 띄어줘서 ‘설정’ 버튼을 누르면 인텐트로 설정 액티비티를 호출해주면 된다.




http://www.androes.com/79


지도를 비롯 위치정보를 이용한 서비스 개발시 유용한 팁 한가지 알려드립니다.


그것은 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);
    }
    

2010/10/06 - [Andro. Dev] - 안드로이드 GPS 상태체크
2010/09/08 - [Andro. Dev] - 안드로이드 실시간 네트워크 확인하는 방법 - ConnectivityManager
2010/09/09 - [Andro. Dev] - 안드로이드 getLocalActivityManager & Dialog 사용시 에러 해결방법
2010/09/06 - [Andro. Etc] - Manifest 파일내 permission 정보
2010/09/01 - [Andro. Dev] - 안드로이드 Map ApiKey 발급하는 방법
2010/09/01 - [Andro. Dev] - 안드로이드 MapView에서 줌 배율 문제
2010/10/06 - [Andro. Dev] - 안드로이드 위치 주소정보 가져오는 방법





http://[Android] GPS 설정 체크

http://jinmanp.tistory.com/entry/Android-GPS-%EC%84%A4%EC%A0%95-%EC%B2%B4%ED%81%AC

지도 서비스 이용시 GPS 설정을 하지 않으면 현재 위치 기능을 이용할 수 없다.

앱 실행시 GPS 설정이 되어 있지 않으면 설정 화면으로 이동하게 해주는 코드..

해당 함수를 원하는 위치에서 콜 해주면 된다.

앱에서 자동으로 설정해주면 더 좋겠지만 개인정보 때문에 구글에서 막아둔 것 같다

//GPS 설정 체크
   private boolean chkGpsService() {
    
    String gps = android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
      
    Log.d(gps, "aaaa");  
    
    if (!(gps.matches(".*gps.*") && gps.matches(".*network.*"))) {
   
     // GPS OFF 일때 Dialog 표시 
     AlertDialog.Builder gsDialog = new AlertDialog.Builder(this); 
     gsDialog.setTitle("위치 서비스 설정");   
     gsDialog.setMessage("무선 네트워크 사용, GPS 위성 사용을 모두 체크하셔야 정확한 위치 서비스가 가능합니다.\n위치 서비스 기능을 설정하시겠습니까?"); 
     gsDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       // GPS설정 화면으로 이동 
       Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
       intent.addCategory(Intent.CATEGORY_DEFAULT); 
       startActivity(intent); 
      } 
     })
     .setNegativeButton("NO", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
       return;
      }
     }).create().show();
     return false;
    
    } else { 
     return true; 
    } 
   }

반응형