Ошибка GPS_PROVIDER в приложении для Android

Я создал приложение для Android, чтобы получить местоположение. Я пытался использовать GPS_PROVIDER, он вернул ноль.. Но работает гладко, когда я использую NETWORK_PROVIDER.. Может ли кто-нибудь помочь мне исправить это?

Вот код

Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

Местоположение становится нулевым, когда я заменяю "NETWORK_PROVIDER" на "GPS_PROVIDER"..

Я добавил следующие три разрешения в манифест

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

person humandroid    schedule 21.10.2012    source источник
comment
Как выглядит ваш файл манифеста?   -  person smk    schedule 21.10.2012
comment
я добавил следующие три разрешения в манифест .ACCESS_MOCK_LOCATION/›   -  person humandroid    schedule 21.10.2012
comment
Ваше устройство должно быть подключено через WiFi, поэтому оно работает с NETWORK_PROVIDER.   -  person Lucifer    schedule 21.10.2012
comment
Кроме того, добавьте это базовое разрешение <uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission>   -  person Lucifer    schedule 21.10.2012
comment
@Lucifer ACCESS_GPS больше не используется. Насколько я знаю, это было до 1.0   -  person slybloty    schedule 21.10.2012


Ответы (3)


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

  1. Возможно, ваш GPS не активен. Попробуйте активировать GPS из setting menu => Location & Security => Check Use GPS Satellites.
  2. Возможно, вы сейчас находитесь в здании, где GPS не работает. Проверьте это, выйдя из здания. Это может происходить большую часть времени.
person Dharmendra    schedule 21.10.2012
comment
+1 да, согласен с вами, пожалуйста, покажите полный путь настройки в 1-м варианте, это было бы полезно для новых пользователей, таких как ОП. :) - person Lucifer; 21.10.2012

Согласно документации.

Если провайдер в данный момент отключен, возвращается null.

Убедитесь, что ваш GPS активен на устройстве, чтобы вы не получили null.

Редактировать:
Также попробуйте запустить requestLocationUpdates() с GPS_PROVIDER или дважды, а также с NETWORK_PROVIDER. LocationManager получает местоположение самым быстрым способом и прекращает поиск. Поскольку местоположение GPS извлекается медленнее, чем местоположение сети, оно останавливается сразу после того, как находит его, поэтому возвращает ноль для GPS.

person slybloty    schedule 21.10.2012
comment
NETWORK_PROVIDER не связан с GPS. - person slybloty; 21.10.2012
comment
GPS включен и работает нормально в моем здании. Я добавил ‹uses-permission android:name=android.permission.ACCESS_GPS›‹/uses-permission›. все равно не работает :( - person humandroid; 21.10.2012
comment
@BalaKrishna Я отредактировал ответ. Кроме того, ACCESS_GPS больше не используется, поэтому вы можете удалить его из файла манифеста. - person slybloty; 21.10.2012

Местоположение становится нулевым, когда я заменяю «NETWORK_PROVIDER» на «GPS_PROVIDER».

Чтобы решить эту проблему, убедитесь, что службы определения местоположения включены:

введите здесь описание изображения

помните документы:

Если провайдер в данный момент отключен, возвращается null.

Как вариант, вы можете использовать обоих провайдеров, если GPS отключен, проверьте провайдера сети:

...
 myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
 if(myLocation == null) {
            myLocation = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
 }

    if(myLocation != null) {
         //Get values for latitude and longitude!
    }
...
person Jorgesys    schedule 21.03.2018