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

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

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

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

26.11.2013, 16:42. Просмотров 823. Ответов 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 Убрать диалог о включении GPS и иконку GPS. Тихий запуск GPS
Определение местонахождения (название населенного пункта) Android
Android Не определение GPS координат
Список городов и определение местонахождения по координатам Android
Android GPS service
GPS Tracker Android
Android Работа с gps
Android Прослушка GPS
Android Обман с GPS
Android GPS трекер
Android Gps speed
Android GPS координаты

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
26.11.2013, 20:03     GPS. Определение местонахождения #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
Сообщений: 415
26.11.2013, 22:46  [ТС]     GPS. Определение местонахождения #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
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
27.11.2013, 12:27     GPS. Определение местонахождения #4
Цитата Сообщение от Slon747 Посмотреть сообщение
Я правильно понял, что если нет wifi, то работает через сотовую связь?
Всё верно. Но сами посмотрите на точность (параметр accuracy вроде). Оно будет довольно большим (что есть не хорошо), т.е. разброс довольно высок (особенно для сотовых сетей). Можете сделать круче. Использовать Network provider до тех пор, пока не включится GPS provider.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 415
27.11.2013, 17:05  [ТС]     GPS. Определение местонахождения #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
Всё верно. Но сами посмотрите на точность (параметр accuracy вроде). Оно будет довольно большим (что есть не хорошо), т.е. разброс довольно высок (особенно для сотовых сетей).
Действительно, разброс очень большой.

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

Но мне не дает покоя вопрос. С вышками сотовой связи все понятно. Но каким образов wifi влияет на геолокацию?
Может провайдер возвращает физический адрес?
Yandex
Объявления
27.11.2013, 17:05     GPS. Определение местонахождения
Ответ Создать тему
Опции темы

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