Я работаю над приложениями для отслеживания gps в Android. Вот моя архитектура кода:
- BackgroundSyncService: класс службы, который используется для получения обновления местоположения. Здесь GoogleApiClient инициализируется и реализует другие методы, связанные с местоположением.
- AppRunCheckerReceiver: класс BroadcastReceiver, который проверяет, работает ли мой
BackgroundSyncService
или нет в промежутке времени. Если он остановится, начнется. - GpsEnableReceiver: BroadcastReceiver будет срабатывать, если статус gps изменился. Он проверит, работает ли мой
BackgroundSyncService
или нет в промежутке времени. Если он остановится, начнется. - InternetConnectionStateReceiver: BroadcastReceiver будет срабатывать при изменении статуса Интернета. Он проверит, работает ли мой
BackgroundSyncService
или нет в промежутке времени. Если он остановлен, он начнется.
В моей службе BackgroundSyncService
я инициализирую GoogleApiClient следующим образом:
public void setLocationLocationRequest() {
try {
googleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).addApi(com.google.android.gms.location.LocationServices.API).build();
locationRequest = new LocationRequest();
locationRequest.setInterval(3000);
locationRequest.setFastestInterval(3000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
googleApiClient.connect();
} catch (Exception e) {
}
Здесь четким является LocationRequest.PRIORITY_HIGH_ACCURACY
и интервал
locationRequest.setInterval(3000)
вот код реализации GoogleApiClient.
Этот раздел информации GPS приложения содержит параметр долготы широты и точности
Мои результаты: в onLocationChanged(Location location)
я проверяю точность объекта Location таким образом: location.getAccuracy()
. Здесь, если точность составляет менее 50 метров, я принимаю ее.
В 85% случаев он работает как шарм. Он отправляет мне точное местоположение из GPS. Но в 15% случаев он посылает мне неточное местоположение, как более> 300 метров.
15-процентное устройство - это недорогой мобильный бренд в Китае.
Мои вопросы:
- Как я могу сделать уровень точности около 99%. Есть ли проблемы в моей архитектуре кода?
- Точность GPS зависит от конфигурации устройства? если ДА, то что я могу сделать для устройства с низкой конфигурацией?
- Как работает Uber, Go-JEK и т.д., Работает на всех устройствах? Есть ли у них дополнительное кодирование только для GPS?
- Мое выражение для Бангладеш. Здесь интернет медленный. Это оказывает негативное влияние на точность GPS?
Заранее спасибо за эту тему. А также извините за плохой английский.