안드로이드 개발/모의위치(GPS)
모의 위치 주입및 해제
Aiden96
2025. 5. 15. 16:09
1.모의위치 주입
Android에서 모의 위치 API는 주로 LocationManager를 사용하여 테스트 목적으로 가짜 GPS 위치를 주입하는 데 사용됩니다. 이를 통해 개발자는 앱의 위치 기반 기능을 테스트할 수 있습니다. 주요 개념과 사용 방법은 다음과 같습니다:
1. 모의 위치 제공자 추가
addTestProvider 메서드를 사용하여 모의 위치 제공자를 추가합니다. 이 제공자는 GPS, 네트워크 등과 같은 실제 위치 제공자를 모방합니다.
private lateinit var locationManager: LocationManager
locationManager.addTestProvider(
LocationManager.GPS_PROVIDER, // GPS 제공자
false, false, false, false,
true, true, true,
ProviderProperties.POWER_USAGE_LOW,
ProviderProperties.ACCURACY_FINE
)
locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true)
val mockLocation = Location(LocationManager.GPS_PROVIDER).apply {
latitude = 37.7749 // 위도
longitude = -122.4194 // 경도
accuracy = 1f // 정확도
time = System.currentTimeMillis() // 현재 시간
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
elapsedRealtimeNanos = System.nanoTime()
}
}
locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, mockLocation)
2.모의 위치 해제
locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false)
locationManager.removeTestProvider(LocationManager.GPS_PROVIDER)
(실제 위치 업데이트)
private fun startRealLocationUpdates() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
) { return }
val request = LocationRequest.Builder(
Priority.PRIORITY_HIGH_ACCURACY,
5000L
).setMinUpdateDistanceMeters(1f).build()
fusedClient.requestLocationUpdates(
request,
locationCallback,
Looper.getMainLooper()
)
}