Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
#1

GPS. Определение местонахождения - Программирование Android

26.11.2013, 16:42. Просмотров 878. Ответов 4
Метки нет (Все метки)

Пытаюсь получить текущее местонахождение.
На устройстве включил GPS.
В манифесте прописл:
XML
1
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class MyActivity extends Activity {
 
    private LocationManager myLocationManager;
    private LocationListener myLocationListener;
    private TextView myLatitude, myLongitude;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.main);
 
        myLatitude = (TextView) findViewById(R.id.Latitude);
        myLongitude = (TextView) findViewById(R.id.Longitude);
 
        myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        myLocationListener = new MyLocationListener();
 
        myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener);
 
        //Get the current location in start-up
        Location location = myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        myLatitude.setText(String.valueOf(location.getLatitude()));
 
    }
 
    private class MyLocationListener implements LocationListener {
 
        @Override
        public void onLocationChanged(Location argLocation) {
            myLatitude.setText(String.valueOf(argLocation.getLatitude()));
            myLongitude.setText(String.valueOf(argLocation.getLongitude()));
        }
 
        public void onProviderDisabled(String provider) {
        }
 
        public void onProviderEnabled(String provider) {
        }
 
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    }
}
Но getLastKnownLocation в строке 23 возвращает null.
Пробовал убрать строки 23 и 24 и ждать возникновение события onLocationChanged, но оно не возникает.
В чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 16:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос GPS. Определение местонахождения (Программирование Android):

Определение местонахождения (название населенного пункта) - Программирование Android
Всем привет. Мне надо реалозовать местонахождение планшета на карте, только мне надо получить не координаты, и название населенного пункта....

Список городов и определение местонахождения по координатам - Программирование Android
Всем доброго времени суток! Подскажите, где можно найти акутуальный на текущий день, обновляемый список городов России и стран СНГ и как...

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

Не определение GPS координат - Программирование Android
ОФФТОП: В первоначальной версии все работу наладить удалось, но захотелось структурировать код. Сейчас задача вернуть все в...

gps и 2 устройства - Программирование Android
Доброго времени суток! У меня вопрос возможно ли сделать так чтобы программа находила другие устройства с этой же программой по gps. А...

GPS service - Программирование Android
Написал сервис для работы GPS однако при попытке вытащить данные просто выдаёт 0 класс реализующий работу c GPS: package...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
26.11.2013, 20:03 #2
Цитата Сообщение от Slon747 Посмотреть сообщение
Но getLastKnownLocation в строке 23 возвращает null.
Если location не был определён до этого ниразу - вернёт null, всё верно.

Цитата Сообщение от Slon747 Посмотреть сообщение
В чем может быть проблема?
GPS включён? Это может занять достаточно долго. Попробуйте изменить
Java
1
LocationManager.GPS_PROVIDER
на
Java
1
 LocationManager.NETWORK_PROVIDER
В этом случае будет использоваться навигация по wifi и сотовой сети, что быстрее в разы.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
26.11.2013, 22:46  [ТС] #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
GPS включён? Это может занять достаточно долго. Попробуйте изменить
Java
1
LocationManager.GPS_PROVIDER
на
Java
1
 LocationManager.NETWORK_PROVIDER
В этом случае будет использоваться навигация по wifi и сотовой сети, что быстрее в разы.
Включал и GPS и WiFi, ходил вокруг офиса , ничего не происходило.
Но после того, как изменил GPS_PROVIDER на NETWORK_PROVIDER тут-же сработало событие!
Спасибо!

Добавлено через 47 минут
Почитал про NETWORK_PROVIDER.
This provider determines location based on availability of cell tower and WiFi access points. Results are retrieved by means of a network lookup.
Я правильно понял, что если нет wifi, то работает через сотовую связь?
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
27.11.2013, 12:27 #4
Цитата Сообщение от Slon747 Посмотреть сообщение
Я правильно понял, что если нет wifi, то работает через сотовую связь?
Всё верно. Но сами посмотрите на точность (параметр accuracy вроде). Оно будет довольно большим (что есть не хорошо), т.е. разброс довольно высок (особенно для сотовых сетей). Можете сделать круче. Использовать Network provider до тех пор, пока не включится GPS provider.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
27.11.2013, 17:05  [ТС] #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
Всё верно. Но сами посмотрите на точность (параметр accuracy вроде). Оно будет довольно большим (что есть не хорошо), т.е. разброс довольно высок (особенно для сотовых сетей).
Действительно, разброс очень большой.

Цитата Сообщение от YuraAAA Посмотреть сообщение
Можете сделать круче. Использовать Network provider до тех пор, пока не включится GPS provider.
Спасибо. Попробую так.

Но мне не дает покоя вопрос. С вышками сотовой связи все понятно. Но каким образов wifi влияет на геолокацию?
Может провайдер возвращает физический адрес?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2013, 17:05
Привет! Вот еще темы с ответами:

Обман с GPS - Программирование Android
Добрый день. Работаю в такси. Задача следующая: Рассчет стоимости заказа идет по километражу, на основе GPS Как сделать чтобы...

GPS трекер - Программирование Android
Здравствуйте! Вот пишу диплом, завтра надо сдавать на проверку. Помогите пожалуйста! Дело горит! Надо реализовать отслеживание себя и...

GPS координаты - Программирование Android
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

Прослушка GPS - Программирование Android
Добрый день Регистрирую прослушку на доступность GPS так: BroadcastReceiver receiver = new BroadcastReceiver() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.11.2013, 17:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru