본문 바로가기
Programming 개발은 구글로/JAVA[Android]

[안드로이드] GPS 정보로 현재 위치 찾기

by 40대직장인 2022. 5. 23.

GPS 정보로 현재 위치 찾기

 

우선 GPS Location 정보를 가져오도록 하겠습니다.

 

※ 위치정보 또한 위험 권한에 속하므로 권한 체크를 해주셔야 합니다.

 

1. 안드로이드 GPS 정보 가져오기

 1.1 AndroidManifest.xml에 권한 등록하기

 

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

 1.2 위치 관리자 객체 참조하기

 

Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

 1.3 Location Listener 구현

 : Location Listener는 위치정보를 전달할 때 호출되므로 onLocationChanged() 메서드 안에서 위치 정보 처리.

 

    final LocationListener gpsLocationListener = new LocationListener() {
        public void onLocationChanged(Location location) {

            String provider = location.getProvider();
            double longitude = location.getLongitude();
            double latitude = location.getLatitude();
            double altitude = location.getAltitude();

            txtResult.setText("위치정보 : " + provider + "\n" +
                    "위도 : " + longitude + "\n" +
                    "경도 : " + latitude + "\n" +
                    "고도  : " + altitude);
        }

        public void onStatusChanged(String provider, int status, Bundle extras) {
        }

        public void onProviderEnabled(String provider) {
        }

        public void onProviderDisabled(String provider) {
        }
    };

 

 1.4 Location 정보 업데이트

  - Location 정보를 원하는 시간, 거리마다 갱신해줍니다.

 

    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, gpsLocationListener);
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, gpsLocationListener);

 

 

이제 위도, 경도 값을 받아왔으니 현재 위치를 찾도록 하겠습니다.

 

2. 현재 위치 찾기

현재 위치는 Geocoder 클래스를 이용하여 주소 변환(위도, 경도 -> 주소)하면 됩니다.

 2.1 Location 권한 설정

 : AndroidManifest.xml에 권한 등록하기

 

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

 2.2 Geocoder 객체 생성하기

 

Geocoder g = new Geocoder(this);

 2.3 Address 객체의 메서드 이용하여 정보 추출

 : toString(), getCountryName(), getLatitude(), getLongitude(), getPostalCode(), getPhone() 메서드 사용.

 

    try {
    	address = g.getFromLocation(lat, lng, 10);
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    if (address != null) {
        if (address.size() == 0) {
            txt.setText("위치 찾기 오류");
        } else {
            Log.e("위치",address.get(0).toString());
            txt.setText(address.get(0).getAddressLine(0));
        }
    }

 2.4 위치 정보(Log) 확인

 

Address[addressLines=[0:"대한민국 대구광역시 수성구 월드컵로13길"],feature=월드컵로13길,
 admin=대구광역시,sub-admin=null,locality=null,thoroughfare=null,postalCode=null,countryCode=KR,
 countryName=대한민국,hasLatitude=true,latitude=35.8358357,hasLongitude=true,longitude=128.6820708,
 phone=null,url=null,extras=null], Address[addressLines=[0:"대한민국 대구광역시 수성구 대흥동"]

 

 

 

댓글