본문 바로가기
Mobile/Kotlin

[Kotlin] GPS 정보 가져오기 예제

by C_Meaning 2023. 6. 16.
728x90

 

맵 관련 프로젝트를 진행하는 과정에서 gps 정보는 필수적입니다.

위치정보를 표현하는데에는 위도, 경도값이 필요한데, 이 값을 가져오는 예제입니다.

 

....
val Tag: String = this.javaClass.simpleName
    var latitude: Double = 0.0
    var longitude: Double = 0.0

    val gpsListener: LocationListener = object : LocationListener { //리스너 구현
        override fun onLocationChanged(location: Location) {
            latitude = location.latitude
            longitude = location.longitude

            Log.i(Tag, "위도 ($latitude) || 경도 ($longitude)")
        }

        override fun onProviderDisabled(provider: String) {
            super.onProviderDisabled(provider)
        }

        override fun onProviderEnabled(provider: String) {
            super.onProviderEnabled(provider)
        }

        override fun onLocationChanged(locations: MutableList<Location>) {
            super.onLocationChanged(locations)
        }
    }

    val gpsManager = getSystemService(LOCATION_SERVICE) as LocationManager

    override fun onDestroy() {
        super.onDestroy()

        gpsManager.removeUpdates(gpsListener) //위치정보 리스너 해제
    }

    fun getLocationInfo() {
        if (ActivityCompat.checkSelfPermission( //위치정보를 안전하게 가져오기 위한 퍼미션 체크
                this,
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.ACCESS_COARSE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            return
        }
		//gps매니저 객체를 통해 gps 값 요청하기. (2번째 인자는 interval, 3번째 인자는 거리간격, 4번째 인자는 리스너)
        gpsManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10f, gpsListener)
    }

    fun getLatitude(): Double {
        return latitude
    }

    fun getLongitude(): Double {
        return longitude
    }

 

728x90

'Mobile > Kotlin' 카테고리의 다른 글

[Kotlin] Dialog 만들기  (0) 2023.06.09
[Android] KakaoMap API 연동하기 위해 조치한 것들  (0) 2023.05.11

댓글