04.07.2023

Что делать если не работает GPS на Android. Как в андроиде проверить gps самостоятельно


Ориентирование на незнакомой местности, как в огромном мегаполисе или небольшом городке, так и в деревне, в открытом поле на сегодняшний день в основном осуществляется при помощи смартфона. Человеку намного проще купить телефон с встроенным GPS-модулем, чем разбираться с картами, спрашивать у незнакомых людей дорогу. Ввел координаты – вот тебе и полный маршрут от точки А до точки Б. Но не каждый человек может разобраться с современными гаджетами, особенно, если ранее не пользовался подобными устройствами.

В этом материале мы расскажем, как провести настройку GPS на Андроиде, какие программы можно и нужно использовать для навигации и что делать, если GPS перестанет корректно работать!

GPS – помощь или панацея для пользователя?

Прежде чем перейти к описанию правильных настроек, стоит упомянуть об этой системе, а именно, о ее преимуществах и недостатках. Как вы знаете, система геопозиционирования позволяет любому человеку узнать свое местоположение, где бы он ни находился. Но при этом можно выделить два негативных фактора:

  1. Если вы часто используете опцию GPS на своем Андроиде, то увидите, что заряд аккумулятора тратится довольно быстро.
  2. Система GPS постоянно следит за вашим перемещением, причем все данные, как ни странно, хранятся под вашей учетной записью в Google. У них даже есть специальный сервис, с помощью которого можно просмотреть, где вы находились в определенное время, какие места посещали, в каких странах были и многое другое. И кто знает, что еще остается у компании Google при использовании данного модуля…

Первоначальная настройка

И так, вы приобрели телефон с встроенным GPS или вам подарили родственники. Как произвести его настройку? В принципе, по умолчанию служба отключена и для настройки нужно лишь активировать ее. Для этого заходите в пункт «Настройки» и находите вкладку «Мое местоположение» и обязательно разрешите системе доступ к геоданным на вашем смартфоне. Также активируйте пункты «По координатам сети» , «По спутникам GPS» .

В дальнейшем вам нужно будет лишь на стартовом экране вашего устройства сделать тап вниз, чтобы появилось меню быстрого доступа и активировать службу GPS. Там же обычно находятся и кнопки, вкладки для работы с беспроводными сетями, мобильными сетями, яркостью телефона. Также на рабочий стол можно выносить отдельные виджеты, чтобы управлять службами.

В операционной системе Android, как правило, по умолчанию установлена программа для определения местоположения. Это могут быть, например, Google Карты или Яндекс Карты, в зависимости от разработчиков. Несмотря на то, что все телефоны на Андроиде изначально проходят сертификацию от Google, программное обеспечение дополняется уже компаниями, которые используют эту операционную систему в своих телефонах.

Настройка GPS на телефонах с процессором Media Tek

Если вы не в курсе, все модели телефонов на базе Android разрабатываются и комплектуются различными процессорами. На сегодняшний день одной из ведущих компаний является Media Tek, которая предоставляет процессоры разной комплектации для смартфонов. У нее же используется собственная технология для корректной и стабильной работы GPS-модулей.

Выше мы описывали стандартные настройки GPS, которые присутствуют практически в каждом смартфоне. Если ваш аппарат работает на чипсете от Media Tek, то дополнительно в настройках будет пункт «Вспомогательные данные GPS EPO». Активируйте данную вкладку и зайдите в меню «Параметры EPO». Зашли? Отлично! Теперь активируйте вкладку «Автозагрузка». Причем, если в момент настройки у вас будет возможность подключиться к интернету, можно будет сразу скачать специальные данные, которые предоставляют информацию о положении спутников. Для этого в данном меню вам нужно будет в самом низу нажать кнопку «Загрузить» и дождаться окончания загрузки файлов.

Настройка GPS для продвинутых пользователей

Внимание! Этот подраздел подразумевает не только настройку, но и ускорение работы GPS в целом на вашем смартфоне. Дело в том, что на скорость и точность определения вашего текущего положения влияет информация о спутниках, а именно, об их расположении. Как правило, в большинстве смартфонов эти данные устарели ввиду давнего обновления ПО или операционной системы.

Еще одна причина – китайские телефоны. В таких аппаратах по умолчанию прописаны настройки о расположении спутников для своей страны, соответственно, используя GPS в России, модуль GPS работает намного дольше, потому что данные в нем прописаны некорректно.

Замечали ли вы когда-нибудь, что ваше местоположение определяется 5-10 минут? Обычно мы списываем это на «производительность телефона», но, отнюдь, это далеко не так! Что же делать в таком случае? Предлагаем вам произвести настройку GPS на своем Андроиде с небольшим «хаком».

Ситуация с медленной работой GPS решается с технологией A-GPS. Ее суть заключается в следующем: на специальных серверах хранятся данные о положении спутников и с помощью интернета ваш смартфон может подключиться к ним и получить всю информацию за считанные секунды. Благодаря этим данным GPS подключается намного быстрее и определяет ваше местоположение точнее.

Но, как и говорилось ранее, в некоторых моделях смартфонов, в особенности, китайских, по умолчанию прописаны данные для своего региона. Чтобы их изменить, нужно найти файл gps.conf !

Как работать с файлом gps.conf! Вы можете изменить данные в этом файле в ручную или скачать уже готовый для конкретной страны. Если вам не хочется заморачиваться, то скачайте его для своей страны по ссылке —

Если же вы собираетесь редактировать gps.conf самостоятельно, то найдите в интернете инструкции, в которых описана каждая строчка, за что она отвечает. Для редактирования нужно будет воспользоваться приложением Root Explorer и права Root.

Внимание! Файл находится в директории /system/etc . Как только вы его замените или отредактируете в ручном режиме, сохраните все изменения и загрузите себе приложение GPS Test. Это специальная утилита, с помощью которой можно очистить все старые записи о спутниках и проверить корректность работы GPS. Просто установите ее, запустите и нажмите вкладку AGPS, перезагрузив после этого смартфон. Как только ваш телефон будет перезапущен, еще раз откройте программу и проверьте скорость определения местоположения.

Режимы работы модуля GPS в Андроиде

И последний, не менее важный пункт, который касается режимов работы GPS. В каждом смартфоне есть отдельные настройки для данной технологии, которые можно выставить по своему усмотрению.

Зайдите в «Настройки» на своем телефоне и выберите вкладку «Местоположение». Учтите, что в разных версиях Android пункты меню могут немного отличаться. Далее кликните пункт «Режим работы». У вас будет их три:

  1. «По всем источникам»
  2. «По координатам сети»
  3. «По спутникам GPS»

Теперь конкретно по каждому пункту!

Первый режим «По всем источникам». Система GPS будет автоматически подключаться ко всем возможным сетям, а именно: беспроводные Wi-Fi точки, мобильные сети, спутники. Это, как раз-таки, и есть технология A-GPS, которая обеспечивает наивысшую точность полученных данных и повышенную скорость работы. Но при этом не стоит забывать и про минусы! Заряд аккумулятора в этом режиме будет расходоваться намного быстрее!

Второй режим «По координатам сети». В основном использует информацию только от точек доступа и вышек. Но при этом корректность определения вашего местоположения немного искажается. Примерно на несколько метров, иногда десятки метров.

Третий режим «По спутникам GPS». Полностью деактивирует A-GPS технологию. Ваш смартфон будет определять местоположение только при помощи спутников. Причем, если вы зайдете в какое-нибудь здание, то связь будет потеряна или временно прервана.

Какой режим использовать – решать только вам. Если вам нужно точно определить координаты или местоположение, то активируйте первый пункт. Если же заряда батареи мало, но при этом нужно хоть как-то определить, где вы находитесь, то активируйте последний пункт.

Как видите, настройка GPS может быть осуществлена разными методами и способами, в зависимости от версии Андроид, программного обеспечения, производителя. Со временем на форумах появляется все большее количество разнообразных приложений и «хаков» для усиления работы GPS, внедрения дополнительных опций в свой смартфон. Следите за обновлениями и тестируйте!

Системы навигации на мобильных устройствах () в последнее время стали необходимы не только для автомобилистов, но и для пешеходов, благодаря их хорошей способности строить пешие маршруты.

Но достаточно многим пользователям приходится сталкиваться с тем, что не работает или работает плохо система GPS на Андроид.

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

Определение

Что же такое GPS? Это система навигации – строго говоря, GPS/ГЛОНАСС представляет собой навигационный модуль, который позволяет пользоваться множеством приложений, использующих навигацию.

Неполадки

Но в некоторых случаях в работе такого модуля могут обнаруживаться те или иные неполадки. Характер их различен, но они одинаково мешают работать с системой:

  • Полная невозможность определить местоположения;
  • Неточное определение местоположения;
  • Медленное обновление данных или полное отсутствие обновления (например, вы передвигаетесь в пространстве или разворачиваетесь, а указатель на карте не меняет своего положения долгое время).

Большинство неполадок могут исчезать самостоятельно при перезапуске или при перемещении в другую зону карты .

Но если такого не происходит, то нужно знать, чем они вызваны и как их устранить.

Возможные причины

Вызывать неполадки такого рода может достаточно много причин. Но все их можно разделить на две большие группы – это неполадки аппаратные и неполадки программные.

Об аппаратных неполадках говоря тогда, когда недочет присутствует собственно в физическом модуле навигации, а о программных – когда что-то неверно настроено в программном обеспечении смартфона или планшета.

Важно! Неполадки программного типа достаточно легко настраиваются и устраняются самостоятельно. Когда же речь идет о аппаратных поломках, лучше доверить дело сервисному центру, так как для неспециалиста процесс починки может быть достаточно сложным. И есть риск ухудшить ситуацию.

Аппаратные

Одна из самых распространенных проблем возникает при первом запуске модуля , то есть, когда вы впервые запускаете приложение, использующее GPS, на новом смартфоне.

В течение 15-20 минут геолокация может не работать, ничего происходить не будет, местоположение не определится.

При первом запуске это нормальное состояние, но в дальнейшем такое повторяться не должно.

Сходная ситуация может возникнуть в том случае, если вы проехали значительное расстояние, например, переместились в другую страну или регион, с выключенным модулем навигации.

В этом случае, при первом его запуске на новом месте, ему также потребуется время «подумать».

Неполадка может иметь место и при запуске на большой скорости, например, во время езды на автомобили – в этом случае модуль будет «притормаживать» первое время после включения.

Учитывайте, что в зданиях именно – навигация внутри помещения осуществляться не будет.

Ваше примерное местоположение в здании определяется с помощью расположения зон беспроводного интернета и вышек сотовых операторов, но не ГЛОНАСС.

Программные

Модуль ГЛОНАС можно отключить через настройки телефона, часто на новых моделях он не включен по умолчанию.

Потому многие новички, не привыкшие использовать Андроид, не включают его перед началом использования приложений с навигацией.

Кстати, такого типа оповещает пользователя о том, что ему необходимо включить навигацию.

Неточное определение местоположения бывает связано с особенностями зоны. Не во всех зонах система работает одинаково хорошо из-за особенностей работы спутников.

Имеются «слепые» зоны, которые навигатор пропускает или определяет не точно. Бороться с этим невозможно.

Устранение

Устранение неполадок, обычно, бывает довольно простым.

Но если после принятия всех перечисленных мер проблема не устранилась, возможно, что дело в неисправности модуля и он требует замены в условиях сервисного центра.

Аппаратные

Способов «лечения» подвисания программы после первого запуска навигационного модуля не существует.

Пользователю необходимо просто подождать около 15-20 минут после первого запуска приложения – за это время электронные составляющие устройства навигации настроятся на текущие условия работы и местоположение определится.

Именно поэтому сразу после покупки телефона рекомендуется запустить этот модуль для настройки, чтобы не ждать в ситуации, когда он понадобится срочно.

Программные

Включить навигацию на смартфоне достаточно просто. Чаще всего, приложение «спрашивает» само, включить ли навигацию, в случае, когда она отключена.

Тогда необходимо нажать на «ДА» или «ОК» во всплывшем окне, и приложение само включит геолокацию.

Если же такого уведомления не появилось, включите ее вручную, следуя алгоритму:

1 На разблокированном экране, на рабочем столе выдвиньте меню , сделав скользящее движение от верхней границы экрана вниз;

2 Появится меню с основн6ыми настройками устройства – в нем найдите иконку Геоданные/Передачагеоданных/Геолокация/Определение местоположения или т. п.;

3 Нажмите на нее, чтобы значок стал активным .

tracker example (15)


Если вам не нужно обновление в тот момент, когда исправление потеряно, вы можете изменить решение Stephen Daye таким образом, что у вас есть метод, который проверяет, присутствует ли исправление.

Поэтому вы можете просто проверить его, когда вам нужны данные GPS, и вам не нужен этот GpsStatus.Listener.

«Глобальные» переменные:

Private Location lastKnownLocation; private long lastKnownLocationTimeMillis = 0; private boolean isGpsFix = false;

Это метод, который вызывается внутри «onLocationChanged ()», чтобы запомнить время обновления и текущее местоположение. Кроме того, он обновляет «isGpsFix»:

Private void handlePositionResults(Location location) { if(location == null) return; lastKnownLocation = location; lastKnownLocationTimeMillis = SystemClock.elapsedRealtime(); checkGpsFix(); // optional }

Этот метод вызывается всякий раз, когда мне нужно знать, есть ли исправление GPS:

Private boolean checkGpsFix(){ if (SystemClock.elapsedRealtime() - lastKnownLocationTimeMillis < 3000) { isGpsFix = true; } else { isGpsFix = false; lastKnownLocation = null; } return isGpsFix; }

В моей реализации я сначала запускаю checkGpsFix (), и если результат верен, я использую переменную «lastKnownLocation» в качестве моей текущей позиции.

Как проверить текущее состояние приемника GPS? Я уже проверил метод LocationListener onStatusChanged но почему-то кажется, что он не работает, или просто неправильная возможность.

В основном мне просто нужно знать, мигает ли значок GPS в верхней части экрана (нет реального исправления) или сплошной (исправление доступно).

Итак, давайте попробуем сочетание всех ответов и обновлений и сделаем что-то вроде этого:

  • Добавьте разрешение ACCESS_FINE_LOCATION к вашему манифесту
  • Получить экземпляр системы LocationManager
  • Создайте GpsStatus.Listener который реагирует на GPS_EVENT_SATELLITE_STATUS
  • Зарегистрировать слушателя с помощью LocationManager с помощью addGpsStatusListener

Приемник GPS может быть примерно таким:

GpsStatus.Listener listener = new GpsStatus.Listener() { void onGpsStatusChanged(int event) { if (event == GPS_EVENT_SATELLITE_STATUS) { GpsStatus status = mLocManager.getGpsStatus(null); Iterable sats = status.getSatellites(); // Check number of satellites in list to determine fix state } } }

API-интерфейсы немного неясны о том, когда и какая информация GPS и спутников предоставляется, но я думаю, что идея состоит в том, чтобы посмотреть, сколько спутников доступно. Если он ниже трех, то вы не можете исправить. Если это больше, тогда у вас должно быть исправление.

Вероятно, пробная версия и ошибка позволяют определить, как часто Android сообщает информацию о спутниках и информацию о каждом объекте GpsSatellite .

Возможно, я ошибаюсь, но кажется, что люди, похоже, идут не по теме

мне просто нужно знать, мигает ли значок gps в верхней части экрана (нет фактического исправления)

Это легко сделать с помощью

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); boolean gps_on = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

Чтобы узнать, есть ли у вас надежное исправление, все становится немного сложнее:

Public class whatever extends Activity { LocationManager lm; Location loc; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lm = (LocationManager) getSystemService(LOCATION_SERVICE); loc = null; request_updates(); } private void request_updates() { if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { // GPS is enabled on device so lets add a loopback for this locationmanager lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, locationListener); } } LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Each time the location is changed we assign loc loc = location; } // Need these even if they do nothing. Can"t remember why. public void onProviderDisabled(String arg0) {} public void onProviderEnabled(String provider) {} public void onStatusChanged(String provider, int status, Bundle extras) {} };

Теперь, когда вы хотите узнать, исправлены ли вы?

If (loc != null){ // Our location has changed at least once blah..... }

Если вы хотите быть фантазией, у вас всегда может быть тайм-аут с использованием System.currentTimeMillis () и loc.getTime ()

Работает надежно, по крайней мере, на N1 с 2.1.

новый член, к сожалению, не смог прокомментировать или проголосовать, однако поступок Стивена Дейэ выше был идеальным решением для той же проблемы, с которой я искал помощь.

небольшое изменение на следующую строку:

< 3000;

IsGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < (GPS_UPDATE_INTERVAL * 2);

в основном, поскольку я создаю медленную игру, и мой интервал обновления уже установлен на 5 секунд, как только сигнал gps отключается на 10+ секунд, то есть в нужное время, чтобы что-то выпустить.

cheers mate, потратил около 10 часов, пытаясь решить это решение, прежде чем я нашел ваш пост:)

сталкивайтесь с подобной проблемой во время работы над моим проектом MSc, кажется, что ответ Дейэ ошибочно сообщил «нет исправления», пока устройство остается в статическом месте. Я немного изменил решение, которое, похоже, отлично работает для меня в статическом месте. Я не знаю, как это повлияет на батарею, поскольку это не моя главная проблема, но вот как я это сделал, повторно запросив обновления местоположения, когда время исправить.

Private class MyGPSListener implements GpsStatus.Listener { public void onGpsStatusChanged(int event) { switch (event) { case GpsStatus.GPS_EVENT_SATELLITE_STATUS: if (Global.getInstance().currentGPSLocation != null) { if((SystemClock.elapsedRealtime() - mLastLocationMillis) < 20000) { if (!hasGPSFix) Log.i("GPS","Fix Acquired"); hasGPSFix = true; } else { if (hasGPSFix) { Log.i("GPS","Fix Lost (expired)"); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener); } hasGPSFix = false; } } break; case GpsStatus.GPS_EVENT_FIRST_FIX: Log.i("GPS", "First Fix/ Refix"); hasGPSFix = true; break; case GpsStatus.GPS_EVENT_STARTED: Log.i("GPS", "Started!"); break; case GpsStatus.GPS_EVENT_STOPPED: Log.i("GPS", "Stopped"); break; } } }

После нескольких лет работы с GPS на мобильных устройствах Windows я понял, что концепция «потерять» GPS-фиксацию может быть субъективной. Чтобы просто слушать, что говорит GPS, добавление NMEAListener и разбор предложения скажут вам, было ли исправление «действительным» или нет. См. http://www.gpsinformation.org/dale/nmea.htm#GGA . К сожалению, с некоторыми GPS-устройствами это значение будет колебаться взад и вперед даже во время обычного хода работы в области «хорошего исправления».

Таким образом, другим решением является сравнение времени UTC местоположения GPS с временем телефона (конвертируется в UTC). Если они отличаются от разницы во времени, вы можете предположить, что потеряли позицию GPS.

Я знаю, что это немного поздно. Однако почему бы не использовать NMEAListener, если вы хотите узнать, есть ли у вас исправление. Из того, что я прочитал, NMEAListener предоставит вам предложения NMEA, и оттуда вы выберете правильное предложение.

Предложение RMC содержит статус фиксации, который является либо A для OK, либо V для предупреждения. Предложение GGA содержит Fix Quality (0 недействительных, 1 GPS или 2 DGPS)

Я не могу предложить вам какой-либо java-код, поскольку я только начинаю работать с Android, но я сделал библиотеку GPS в приложениях C # для Windows, которые я собираюсь использовать с Xamarin. Я только наткнулся на эту тему, потому что искал информацию о провайдере.

Из того, что я до сих пор читал о объекте Location, мне не все так нравится в таких методах, как getAccuracy () и hasAccuracy (). Я привык извлекать из предложений NMEA предложения HDOP и VDOP, чтобы определить, насколько точны мои исправления. Его довольно часто встречаются, чтобы иметь исправить, но иметь паршивый HDOP, который означает, что ваша горизонтальная точность не очень хороша. Например, сидя на своем столе, отлаживая внешнее Bluetooth-устройство GPS, сильно противостоящее окну, вы, скорее всего, получите исправление, но очень плохое HDOP и VDOP. Поместите устройство GPS в цветочный горшок снаружи или что-то подобное или добавьте внешнюю антенну в GPS и сразу получите хорошие значения HDOP и VDOP.

так много сообщений...

GpsStatus.Listener gpsListener = new GpsStatus.Listener() { public void onGpsStatusChanged(int event) { if(event == GpsStatus.GPS_EVENT_FIRST_FIX){ showMessageDialog("GPS fixed"); } } };

добавив этот код, с addGpsListener ... showMessageDialog ... просто показывает стандартное диалоговое окно со строкой

сделал работу отлично для меня:) Большое спасибо: =) (sry для этого поста, еще не смог проголосовать)

Как разработчик SpeedView: GPS-спидометр для Android, я должен был попробовать все возможные решения этой проблемы, все с тем же отрицательным результатом. Давайте повторим, что не работает:

  1. onStatusChanged () не получает вызова в Eclair и Froyo.
  2. Просто подсчет всех доступных спутников, конечно, бесполезен.
  3. Проверка того, что какой-либо из спутников возвращает true для usedInFix (), также не очень полезен. Система явно теряет исправление, но продолжает сообщать, что в ней все еще используется несколько сатов.

Итак, вот единственное рабочее решение, которое я нашел, и тот, который я фактически использую в своем приложении. Скажем, у нас есть этот простой класс, который реализует GpsStatus.Listener:

Private class MyGPSListener implements GpsStatus.Listener { public void onGpsStatusChanged(int event) { switch (event) { case GpsStatus.GPS_EVENT_SATELLITE_STATUS: if (mLastLocation != null) isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000; if (isGPSFix) { // A fix has been acquired. // Do something. } else { // The fix has been lost. // Do something. } break; case GpsStatus.GPS_EVENT_FIRST_FIX: // Do something. isGPSFix = true; break; } } }

ОК, теперь в onLocationChanged () мы добавим следующее:

@Override public void onLocationChanged(Location location) { if (location == null) return; mLastLocationMillis = SystemClock.elapsedRealtime(); // Do something. mLastLocation = location; }

Вот и все. В принципе, это линия, которая делает все это:

IsGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

Конечно, вы можете настроить значение миллиса, но я бы предложил установить его около 3-5 секунд.

Это действительно работает, и хотя я не смотрел исходный код, который рисует собственный значок GPS, это приближается к репликации его поведения. Надеюсь, это поможет кому-то.

Если вам просто нужно знать, есть ли исправление, то проверьте последнее известное местоположение, предоставленное GPS-приемником, и проверьте значение.getTime (), чтобы узнать, сколько лет прошло. Если это достаточно недавно (например, несколько секунд), у вас есть исправление.

LocationManager lm = (LocationManager)context.getSystemService(LOCATION_SERVICE); Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); // Get the time of the last fix long lastFixTimeMillis = loc.getTime();

И, наконец, сравнить это с текущим временем даты (в UTC!). Если это достаточно недавно, у вас есть исправление.

Я делаю это в своем приложении и до сих пор так хорошо.

Ну, в результате каждый рабочий подход приведет к этому (также относится к устаревшему GpsStatus.Listener):

Private GnssStatus.Callback mGnssStatusCallback; @Deprecated private GpsStatus.Listener mStatusListener; private LocationManager mLocationManager; @Override public void onCreate() { mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); if (checkPermission()) { mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_UPDATE_INTERVAL, MIN_DISTANCE, this); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { mGnssStatusCallback = new GnssStatus.Callback() { @Override public void onSatelliteStatusChanged(GnssStatus status) { satelliteStatusChanged(); } @Override public void onFirstFix(int ttffMillis) { gpsFixAcquired(); } }; mLocationManager.registerGnssStatusCallback(mGnssStatusCallback); } else { mStatusListener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { switch (event) { case GpsStatus.GPS_EVENT_SATELLITE_STATUS: satelliteStatusChanged(); break; case GpsStatus.GPS_EVENT_FIRST_FIX: // Do something. gpsFixAcquired(); break; } } }; mLocationManager.addGpsStatusListener(mStatusListener); } } private void gpsFixAcquired() { // Do something. isGPSFix = true; } private void satelliteStatusChanged() { if (mLastLocation != null) isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < (GPS_UPDATE_INTERVAL * 2); if (isGPSFix) { // A fix has been acquired. // Do something. } else { // The fix has been lost. // Do something. } } @Override public void onLocationChanged(Location location) { if (location == null) return; mLastLocationMillis = SystemClock.elapsedRealtime(); mLastLocation = location; } @Override public void onStatusChanged(String s, int i, Bundle bundle) { } @Override public void onProviderEnabled(String s) { } @Override public void onProviderDisabled(String s) { }

Примечание: этот ответ представляет собой комбинацию ответов выше.

Значок GPS, похоже, меняет свое состояние в соответствии с принятыми вещательными намерениями. Вы можете сами изменить свое состояние с помощью следующих примеров кода:

Сообщать, что GPS включен:

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); intent.putExtra("enabled", true); sendBroadcast(intent);

Сообщать, что GPS получает исправления:

Intent intent = new Intent("android.location.GPS_FIX_CHANGE"); intent.putExtra("enabled", true); sendBroadcast(intent);

Сообщите, что GPS больше не получает исправления:

Intent intent = new Intent("android.location.GPS_FIX_CHANGE"); intent.putExtra("enabled", false); sendBroadcast(intent);

Сообщать, что GPS отключен:

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); intent.putExtra("enabled", false); sendBroadcast(intent);

Пример кода для регистрации приемника:

// MyReceiver must extend BroadcastReceiver MyReceiver receiver = new MyReceiver(); IntentFilter filter = new IntentFilter("android.location.GPS_ENABLED_CHANGE"); filter.addAction("android.location.GPS_FIX_CHANGE"); registerReceiver(receiver, filter);

Получив эти трансляции, вы можете заметить изменения в статусе GPS. Однако вы будете уведомлены только в случае изменения состояния. Таким образом, невозможно определить текущее состояние с использованием этих намерений.

Установка интервала времени для проверки исправления не является хорошим выбором. Я заметил, что onLocationChanged не вызывается, если вы не двигаетесь .. что понятно, поскольку местоположение не меняется:)

Лучше всего было бы:

  • проверить интервал на последнее полученное местоположение (в gpsStatusChanged)
  • если этот интервал составляет более 15 с заданной переменной: long_interval = true
  • удалите приемник местоположения и добавьте его снова, обычно после этого вы получаете обновленную позицию, если местоположение действительно доступно, если нет - вы, вероятно, потеряли место
  • в onLocationChanged вы просто установите long_interval на false.

Хотя выше есть огромный пул решений, никто не упоминал com.koushikdutta.ion: https://github.com/koush/ion

Он также асинхронен и очень прост в использовании:

Ion.with(context) .load("http://example.com/thing.json") .asJsonObject() .setCallback(new FutureCallback() { @Override public void onCompleted(Exception e, JsonObject result) { // do stuff with the result or error } });

Навигационные приложения, установленные на смартфонах с операционной системой Андроид, дают возможность пользователям прокладывать автомобильные, велосипедные или пешие маршруты, а также следить за собственным местоположением на карте.

Мобильные устройства с установленными GPS/ГЛОНАСС чипами пользуются особым спросом среди потенциальных покупателей. Но, иногда случается так, что GPS на Андроиде не работает. В этом случае следует разобраться, в чем основная причина поломки и как настроить модули, чтобы они корректно отрабатывали поставленные перед ними задачи.

Основные причины сбоя GPS модуля

Если не работает GPS на Андроиде, следует проверить, не отключен ли модуль навигации в телефоне. Такую ошибку чаще всего допускают начинающие пользователи, которые не успели до конца разобраться с принципами работы Android смартфонов.

Для того, чтобы справиться с данной проблемой, следует пальцем сдвинуть вниз верхнюю шторку, которая скрывает различные ярлычки и уведомления. Найдите в предложенном меню пункт ”Местоположение” и активируйте его . Когда он станет активным, его цвет изменится на зеленый, голубоватый и так далее.


Активируйте GPSна Андроиде для поиска своего местоположения

После того, как пункт ”Местоположение” станет активным, можно приступать к запуску самой навигационной программы.

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

В качестве примера можно отметить приложение ”Навител”, которое сообщает пользователям о том, что у них отсутствует подключение GPS модулей.


Может быть такое, что пользователь активировал геолокацию в настройках смартфона, установил все необходимые навигационные приложения, но положительных результатов так и не последовало.

В этом случае причина может скрываться в банальной нетерпеливости. При первом запуске GPS/ГЛОНАСС модулей следует подождать не менее 15-ти минут. За это время смартфон сможет обработать информацию о том, какие спутники активны в данной местности. Остальные запуски навигационной программы будут происходить намного быстрее.

Похожая проблема может возникнуть и в том случае, если вы приехали в другой город или в другую страну с выключенным телефоном и решили воспользоваться геолокацией. Следует подождать 10-15 минут, чтобы смартфон, работающий на Андроиде, смог просчитать свое месторасположение. Такое поведение называется ”холодным стартом”.

Итак, выше перечислены основные причины, почему не работает GPS на Андроиде. Но они не ограничивают перечень всех возможных неисправностей. Следует отметить еще несколько факторов, в связи с которыми может отсутствовать работоспособность GPS модулей:

  1. Пользователь старается выполнить “холодный старт” во время движения транспортного средства. Не стоит так поступать. Нужно остановиться, выйти из машины, желательно на максимально открытую местность, и попробовать еще раз активировать GPS модули.
  2. Не работает GPS на Андроиде не только во время поездки в машине, но и внутри зданий.
  3. Есть определенные зоны, где прием сигналов затруднен. Это может быть обусловлено наличием в непосредственной близости скал, высоких построек и так далее. В этом случае следует отыскать максимально высокий участок и попытаться отыскать спутники, взобравшись на него.

Если навигация не стала работать после активных попыток ее настройки, то нужно обратиться за помощью к профессионалам, работающим в сервисном центре. Такое положение дел явно указывает на наличие внутренних поломок. И еще, если идти к специалистам в сервисный центр нет времени, то попробуйте сбросить установки телефона до заводских настроек.

Проверять качество приема сигналов со спутников можно с помощью приложения GPS Test от Chartcross Limited. Если GPS чип исправен и включена геолокация, то на экране появится карта неба с указанием расположений активных спутников.


Как настроить GPS модуль на смартфоне?

Многие пользователи интересуются, как настроить на Andrid GPS модули. Какие-то конкретные варианты настроек в этом случае отсутствуют. Но, при желании, можно немного поэкспериментировать, используя стандартные методы обнаружения. Существуют следующие факторы работы обнаружения местоположения:

  • Высокая точность. При таком параметре обнаружение местоположения происходит с помощью всех возможных беспроводных модулей. Здесь используются не только GPS/Глонасс, но и Wi-Fi, телефонная сеть.
  • Экономичный режим. Поиск местоположения происходит посредством мобильных сетей и модуля Wi-Fi.
  • Только GPS модули. Как понятно из названия, поиск места происходит только с помощью спутников.

Для того, чтобы указать используемый метод обнаружения положения человека в пространстве, следует зайти в меню ”Настройки-Геоданные” . Не забывайте для работы с GPS навигацией установить функциональный и удобный в использовании софт. Для этого можно скачать с сети бесплатные приложения или воспользоваться платными продуктами ведущих мировых компаний.


Вывод

В заключение стоит отметить, что если не работает GPS на Андроиде, не следует отчаиваться. Возможно, вы слишком торопитесь, не позволяя приложению установить связь со спутниками.

Если проблема не будет решена после выполнения базовых условий, нужно обратиться за помощью в сервисный центр.

Post Views: 68

Подпишитесь:

Многие владельцы телефонов на операционной системе «Андроид» сталкиваются с проблемой, когда встроенный GPS-модуль отказывается находить gps спутники или находит их, но не может подконнектиться. Причин такого поведения модуля может быть несколько, рассмотрим основные:

Неправильно прописаны параметры соединения к спутникам в файле настроек;

Установлен модуль A-GPS, который часто не находит спутники на телефоне самостоятельно;

Модуль нерабочий.

Хотелось бы разобрать проблему с A-GPS (Assisted GPS) модулем, так как китайские телефоны, на которых он стоит в 98% случаев, пользуются сейчас огромной популярностью и вытесняют мировых брендов с рынка.

Как работает A-GPS?

Основное отличие от стандартного GPS-модуля в том, что он соединяется не только со спутниками, но и с вышками мобильных операторов, чем существенно улучшает качество определения местонахождения. При включении данной функции телефон зачастую не может сам соединиться со спутниками gps и ему требуется «Полный рестарт», даже если он был только включен. Это проблема не самих китайских телефонов, а именно модуля A-GPS, который по сравнению с GPS стоит копейки, поэтому и работает соответствующе. Разберемся, как настроить gps на андроиде.

Как определить, A-GPS или GPS модуль стоит на телефоне?

Если у вас телефон с двумя симками и китайского производства, у вас с вероятностью 99.9% стоит A-GPS. Но чтобы убедиться в этом, можно зайти в инженерное меню. С него и начнется исправление вопроса неработающего соединения со спутниками.

Для входа в инженерное меню нужно набрать следующий номер в телефоне: *#*#3646633#*#*. Если комбинация не сработала, можно попробовать ввести *#15963#* или *#*#4636#*#*, однако, в данном случае меню у вас может отличаться.

После ввода фразы вы автоматически попадаете в инженерное меню и увидите окно следующего содержания:

Вам нужно переместиться влево, листая страницы настроек до вкладки «Location».

Теперь выберите первый пункт «Location Based Servise» (Базовые настройки определения местонахождения). Если у вас имеется вкладка A-GPS, значит, следуйте дальнейшим настройкам. В ином случае данная статья вам мало чем поможет.

Настройка GPS на андроид

Если у вас есть вкладка A-GPS, сразу перейдите на нее. У вас должно быть окно следующего вида:

Сравните настройки со своими, при необходимости подкорректируйте, согласно скринам:

Если все прописано верно, можете возвращаться на один уровень назад до выбора пунктов «Location» и перейдите на «YGPS».

Здесь вы видите, что ваш модуль gps не находит спутники, вернее находит, но не соединяется из-за неправильного включения:

Вам нужна вкладка «Information». В ней будут проводиться основные манипуляции.

Как вы видите, статус стоит «UNANVAILABLE», а TTFF зависает на вечном поиске. Сколько бы вы ни ждали, ничего не изменится.

Суть исправления вечного поиска в том, чтобы сделать полный сброс «Full», а затем, спустя 2-3 секунды нажать на «A-GPS Restart». Т.е. вы сбрасываете зависший процесс поиска на ноль, затирая тем самым все предварительно заданные настройки, и сразу же перезагружаете модуль. Не успевая подхватить стандартную конфигурацию (неправильную), модуль с чистого листа находит все спутники.

Спустя секунд 10-20 на вкладке «Satellites» вы увидите сигналы спутников, а еще через полминуты модуль удачно подсоединится к ним.

Поиск делался с 1-й стороны дома, на балконе соответственно, на втором полушарии ничего не найдено. На дороге у вас найдет все спутники.