EnjoyLife

모의 위치 주입및 해제 본문

안드로이드 개발/모의위치(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()
    )
}