본문 바로가기
Programing/android

[android studio] 현재위치 가져오기, Location , LocationManager

by Benedictus711 2021. 10. 5.
728x90

앱에서 위도와 경도의 값을 가져올 방법이다.

폰에서 GPS나 근처기기연결을 통해 위도와 경도를 가져올 수 있었다.

 

1. 권한 설정

먼저 AndroidManifest.xml에 아래 권한을 추가해 준다.

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

 

구글  developers에 의하면 해당 권한의 기능은 아래와 같다

정밀도 수준은 요청하는 권한에 따라 다릅니다.
ACCESS_COARSE_LOCATION
기기 위치 추정치를 약 1.6km 이내로 제공합니다.

ACCESS_FINE_LOCATION
최대한 정확한 기기 위치 추정치를 제공합니다.
일반적으로 50m 이내이며 몇 미터 혹은 더 정확한 경우도 있습니다.
이 권한은 일부 연결 작업(예: 저전력 블루투스(BLE)를 통해 근처 기기에 연결)에 필요합니다.

 

백그라운드 위치 액세스가 필요한 경우 아래 권한도 추가해 주어야 한다.
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

 

 

2. 위치 가져오기

 

위치를 받아야 하는 구간 혹은 앱 시작시 등 위치를 가져와야 할 부분에

아래 코드를 이용하여 위도와 경도를 받아오면 될 것이다.

 

LocationManager를 이용하여 현재 위치정보를 받아 필요한 값을 사용하면 된다.

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//마지막 위치 받아오기
Location loc_Current = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

cur_lat = loc_Current.getLatitude(); //위도
cur_lon = loc_Current.getLongitude(); //경도

 

해당 변수를 이용하여 위치나 거리 계산에 사용하면 될 듯 하다.

받아올수있는 값은 위도, 경도 외 고도,정확도 등 여려정보를 담고 있으니 필요에 따라 이용하면 될 것 같다.

 

참고로 마지막 위치를 받아오는 구간에서 GPS_PROVIDER는 GPS를 이용하는 만큼 정확도는 높지만

야외에서만 가능하다.

 

실내에서는 NETWORK_PROVIDER를 사용하여 WIFI같은 네트워크를 이용해서 위치를 추정한다.

그만큼 정확도는 낮아진다.

728x90

댓글