Android GPS точность - PullRequest
       3

Android GPS точность

4 голосов
/ 05 сентября 2011

Я хотел бы использовать точную позицию GPS в моем приложении. Поэтому я следовал простому учебнику (основное использование LocationManager, явно признанный поставщик GPS, запрашиваю обновления 0 мс, 0 м) и создал приложение. Меня совершенно не впечатлила точность и скорость обновления. Это было медленно и лучшая точность была 24 метра, но в среднем 96.

На том же телефоне, из того же места, я запускаю широко известную СТАТУС GPS . И я был поражен, увидев, насколько точным было исправление. 4-6 метров, последовательно.

Итак, я отключил GPS Status и запустил свое приложение - я вижу точность 6 метров, но через несколько секунд это 24, 56, 90, 128 .... И колеблется около 96.

Теперь мне интересно: как это возможно? Есть ли уловки для повышения точности? !!

У кого-нибудь есть хорошие примеры / учебники?


это не помогает

Позвольте мне повторить: я получаю и распечатываю ВСЕ обновления. Итак, я вижу поток локаций с точностью.

Я вижу колебания, я вижу лучшие результаты, и это никогда не лучше, чем 12 метров.

Теперь в том же месте я запускаю GPS Status => и вижу, как точность достигает 4 метров!

Сначала я подумал: ха, GPS-код статуса, просто делит точность

Но, похоже, дело не в этом, потому что когда я включил свое приложение и получил последнее известное положение, оно действительно с точностью 4!

И начать деградировать до лучшего случая 12.

Резюме: одинаковое hw, одинаковые условия, разные приложения => разная точность!

Итак, мой вопрос: есть какие-нибудь хитрости? Какие-нибудь дополнительные команды? Какие-то специальные настройки мощности? Есть ли отношение к "как тяжело ваше приложение"?

относится к: Android GPS. Слушатель местоположения не хочет получить исправление: (

Ответы [ 3 ]

1 голос
/ 24 августа 2013

Google выпустил приятный API на своем недавнем мероприятии Google IO 2013:

https://developers.google.com/events/io/sessions/324498944

Вы должны проверить это и посмотреть, как вы можете минимизировать свой код.

обратите внимание, что для этого необходимо, чтобы на устройстве было приложение play store.

этот метод имеет много преимуществ по сравнению с использованием обычных датчиков местоположения (батарея, скорость, точность, ...)

0 голосов
/ 28 июня 2018

Наилучшая точность, которую вы можете получить с GnssMeasurement, но трудно кодировать. Android 7+ У меня Doodgee Shot Dual (очень не популярный китайский смартфон) и рабочий. https://developer.android.com/reference/android/location/GnssMeasurement https://developer.android.com/guide/topics/sensors/gnss (официальный список поддержки).

GNNS (GPS / ГЛОНАСС / GALILEO / ...) LocationManager, (0 мс, 0 м) - не работает, через некоторое время (1-20 с) вы получите такую ​​же координацию (если вы останетесь на одном месте) - точность составляет 3-10 м. С LocationManager вы не получаете «сырые» данные GNNS из физического модуля, но рассчитываются с помощью Android API. С GnssMeasurement вы можете получить его.

0 голосов
/ 24 августа 2013

Как насчет этого?

-установленная точность + заданная высокая мощность:

try{
    locator = new GeoLocator(this);
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.addGpsStatusListener(new GPSStatusManager(locationManager));
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setPowerRequirement(Criteria. POWER_HIGH);
    bestProvider = locationManager.getBestProvider(criteria, true);
    Bundle bundle = new Bundle();
    //I copied the next two lines out of some tutorial hoping that they would help boost my gps, but I'm really not sure what they do
    boolean xtraInjection=locationManager.sendExtraCommand(LocationManager.GPS_PROVIDER,
                                          "force_xtra_injection",bundle);
    boolean timeInjection=locationManager.sendExtraCommand(LocationManager.GPS_PROVIDER,
                                          "force_time_injection",bundle);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0.0f, locator);
}catch(Exception e){}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...