공부/안드로이드
안드로이드에서 GPS 사용 하는 방법
dofury
2023. 3. 26. 16:11
728x90
현재 대학교에서 진행하고 있는 프로젝트에서 앱쪽을 담당하고 있다.
앱의 기능 중에는 GPS를 통해 현재 위치랑 임의의 위치를 비교하는 기능을 필요로 한다.
그래서 한번 알아보고자 한다
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1. 처음에는 안드로이드 AndroidManifest.xml 에서 위치 권한을 받아야 한다.
GPS를 사용하기 위해서 우선적으로 해야하는 것이다.
val locationManager = getSystemService<Any>(Context.LOCATION_SERVICE) as LocationManager
2. 위치 서비스를 관리하는 LocationManager 객체를 생성한다.
val locationListener: LocationListener = object : LocationListener {
override fun onLocationChanged(location: Location?) {
// 위치 정보가 업데이트 될 때마다 호출됩니다.
}
override fun onStatusChanged(provider: String, status: Int, extras: Bundle) {}
override fun onProviderEnabled(provider: String) {}
override fun onProviderDisabled(provider: String) {}
}
3. 위치 정보를 받기 위해 LocationListener 인터페이스를 구현한 리스너 객체를 생성한다.
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
4. 위치 정보를 요청한다. 위치 제공자(provider)와 최소 업데이트 시간, 최소 거리 변화 등을 설정할 수 있다.
해당 예시의 경우 현재 위치를 1초마다 갱신한다.
val currentLocation: Location =
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
//현재 위치
val destinationLocation = Location("")
destinationLocation.setLatitude(37.123456)
destinationLocation.setLongitude(127.123456)
5. 임의의 위치를 설정한다.
val distance: Float = currentLocation.distanceTo(destinationLocation)
6. 두 지점간의 거리를 계산한다.
이를 이용해 오차가 얼마이상 나지 않으면 (반경) 비교에 사용할 수 있다.
728x90