현재 대학교에서 진행하고 있는 프로젝트에서 앱쪽을 담당하고 있다.
앱의 기능 중에는 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. 두 지점간의 거리를 계산한다.
이를 이용해 오차가 얼마이상 나지 않으면 (반경) 비교에 사용할 수 있다.
data binding 실습 (단 방향, 양 방향 통신) (0) | 2023.07.04 |
---|---|
디자인 패턴 MVC, MVP 그리고 MVVM 학습 (0) | 2023.07.03 |
안드로이드 Manifest에 대해 (0) | 2023.04.02 |
안드로이드 앱, 액티비티, 프래그먼트 생명주기 공부 (0) | 2023.03.18 |
앱에 데이터를 저장하는 방법 (0) | 2023.02.19 |
댓글 영역