Приложение использует API сервисов Google Play, чтобы узнать местоположение пользователя и проверить, находится ли устройство внутри или за пределами определенной области радиусом 50 м. Приложение использует PRIORITY_HIGH_ACCURACY и интервал 1 минута. Так я создаю GoogleApiClient:google play services location api иногда дают неправильное расположение
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
В onConnected обратного вызова:
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
и
MyLocationListener.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationListener);
Мое приложение также фильтровать адреса на основе точности (если точность> 200 мт Я отбрасывать его) и времени (если он слишком старый, я отбрасываю его).
Приложение работает отлично, за исключением некоторых конкретных областей, где иногда он возвращает неправильные местоположения, обновляя около 500 метров от реального местоположения, и эти неправильные местоположения всегда находятся в одном и том же месте, в нескольких шагах от Cell Tower.
В этих областях я получаю комбинацию неправильных и правильных местоположений, и мое приложение считает, что устройство иногда находится внутри, а иногда и вне зоны интереса.
Когда я получаю обновление местоположения, я жду других 3 подряд, чтобы подтвердить позицию. Также я фильтрую местоположение, точно так же, как и предыдущее. Это означает, что когда я получаю эти ошибки, я получаю 4 неправильных места в строке, каждая из которых немного отличается от остальных.
Есть ли способ предотвратить такое поведение? Может ли это быть вызвано Cell Tower?
Итак, поскольку с помощью google-сайта apis невозможно отфильтровать поставщика ячеек, было бы лучше использовать старое местоположение apis и слушать только провайдера gps (если это не вопрос батареи)? – AleCat83
У вас все еще будут случайные всплески, но это может быть более точно. Сотовые башни не повлияли бы на это. Вы можете попробовать и посмотреть, работает ли он лучше. Вы также можете попробовать фильтровать существующие местоположения (вы уже отфильтровываете низкоточные, вы также можете отфильтровывать большие переходы или, по крайней мере, большие переходы, которые не подтверждаются следующим обновлением). –
Фактически, когда я получаю обновление местоположения, я жду других 3 подряд, чтобы подтвердить позицию. Также я фильтрую местоположение, точно так же, как и предыдущее. Это означает, что когда я получаю эти ошибки, я получаю 4 неправильных места в строке, каждая из которых немного отличается от других. – AleCat83