카테고리 없음

[안드로이드 짤막공부] 23.09.05

winterry 2023. 9. 6. 00:19

1. 위치 기반 서비스를 구현하기 위해서 구글의 FusedLocationProvider를 사용하는데, 자꾸 lastLocation 값이 이상한 곳으로 뜨는 문제가 있었다. 가상 머신에서만 유독 그런 오류가 생겨서 AVD 세팅 문제인 거 같아서 좀 헤맸다.

 아무래도 AVD가 처음 구동되면 내가 설정해 둔 좌표로 기기가 제대로 인식되고 있지 않는 상태인 거 같았다. 현재 위치 기반으로 시간대를 자동으로 설정하게 해 두었는데 시간대가 맞지 않는 걸 보면..

 

 그래서 부팅 이후 AVD 설정 내에서 set location을 다시 하고 디바이스 내에서 위치 기능을 껐다가 킨 후, 구글맵에 들어가서 현재 위치가 제대로 뜨는 걸 확인했다. 이후 앱을 재실행했는데 그럼에도 lastLocation의 위도와 경도 값이 이상하게 잡히고 있었다.

 아무래도 현재 기기의 위치 정보와 구글 FusedLocationProvider가 제공하는 위치 정보에 간극이 있는 거 같아, 좀 찾아보니 내가 생각했던 거만큼 단순한 프로세스로 위치 정보를 제공하는 게 아닌 거 같았다.

 단순히 GPS가 이용될 때마다 값을 캐싱해 두었다 제공하는 게 아니라 셀룰러 네트워크, Wi-Fi 등의 정보를 통합적으로 활용하여 자체적인 보정 및 추정을 더해 사용자의 위치를 제공하고 있는 듯했다.

 아무래도 부팅 시에 디바이스 위치가 미국 어딘가로 뜨다 보니, 단시간에 한국으로 이동하는 게 비정상적인 데이터라고 판단했을 수도 있다는 생각이 들었다. 아니면 데이터가 반영되는 딜레이가 좀 있다던지.

 

그래서 AVD를 부팅하고 구글 서비스들이 제대로 켜져 있는지 확인하고 위치 설정 후에 Wi-Fi도 몇 번 껐다 켜고 위치를 사용하는 앱들도 간격을 좀 두고 몇 번 껐다 켜서 관련 데이터를 좀 누적시키며 시간을 보냈다.

 이후 테스트 중이던 앱을 재실행하니 그제야 설정해 둔 위치값을 받아와 정상작동했다. 실제 기기로 테스트할 땐 문제가 없었지만 가상 환경에서는 문제가 생길 수 있는 부분들이 있음에 주의해야겠다.