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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
#1

GPS_PROVIDER и доступность GPS - Программирование Android

09.01.2014, 22:54. Просмотров 1599. Ответов 3
Метки нет (Все метки)

Имеется такой код запуска слушателей для провайдеров GPS_PROVIDER и NETWORK_PROVIDER:
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
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
 
            // getting GPS status
            isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
 
            // getting network status
            isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
 
            if (!isGPSEnabled && !isNetworkEnabled) {
                // no network provider is enabled
            } else {
                this.canGetLocation = true;
 
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BY_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        if (locationManager != null) {
                            location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
 
                // second get location from Network Provider
                if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BY_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    if (locationManager != null) {
                        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
Если GPS включен, запустятся оба слушателя. А если GPS недоступен, то только NETWORK_PROVIDER. При этом если после выполнения этого кода включить GPS-приемник, то GPS_PROVIDER все равно не будет прослушиваться.
Как лучше сделать? Проверять, доступен ли GPS и если недоступен, то не запускать слушатель GPS_PROVIDER, но использовать ресивер для события включения GPS (и запуска слушателя) или не заморачиваться и запускать оба слушателя не зависимо от доступности в момент запуска GPS?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 22:54     GPS_PROVIDER и доступность GPS
Посмотрите здесь:

GPS Location (GPS_PROVIDER) как получить координаты - Программирование Android
Всем привет. Столкнулся с такой проблемой , может еще кто то сталкивался да знает что да как . Вообщем тестя получение latitude и...

Проверить включён ли GPS - Программирование Android
Привет всем! Подскажите пожалуйста как проверить включён ли GPS или нет? Желательно примером - буду благодарен!

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

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

GPS android studio - Программирование Android
Помогите что здесь за ошибка может быть : locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); Вот код : ...

Android + GPS + SMS + PC - Программирование Android
Всем привет, друзья, подскажите, Я никогда прежде не сталкивался особо с программированием под Java, да и с Android(программами в...

Координаты gps (структура) - Программирование Android
создал в разделе про телефоны, может если есть лучший- не знаю. не нашел. вопрос такой: gps координаты видны в виде -широта долгота...

Обмануть датчики GPS - Программирование Android
Добрый день! Подскажите, пожалуйста, можно ли (и пишет ли кто-то) программы для датчиков GPS, передающие на спутник "обманные" данные -...

Получить координаты GPS - Программирование Android
Привет. На андройде не проходит строчку locationManager = (LocationManager)activity.getSystemService(LOCATION_SERVICE); Вызывается...

Поворот изображения (GPS) - Программирование Android
Добрый день Пытаюсь сделать вот что, на canvas рисую изображение относительно своих координат, которые беру с GPS. Хотелось бы...

GPS. Определение местонахождения - Программирование Android
Пытаюсь получить текущее местонахождение. На устройстве включил GPS. В манифесте прописл: <uses-permission...

GPS + растровая карта - Программирование Android
Добрый день Как привязать gps координаты к растровой карте? Карту сделал банально скриншотом из карт Гугл. Я так думаю надо сделать...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
10.01.2014, 10:00     GPS_PROVIDER и доступность GPS #2
Я рекомендую вам зарегистрировать бродкаст ресивер который будет мониторить доступность провайдеров и внутри него уже решать какой использовать. Сделать это можно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                LocationManager lm = (LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE);
                StringBuffer text = new StringBuffer("Настройки поменялись\n");
                text.append("GPS_PROVIDER доступен: ")
                .append(lm.isProviderEnabled(LocationManager.GPS_PROVIDER))
                .append("\nNETWORK_PROVIDER доступен: ")
                .append(lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER));
                Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
            }
        };
        IntentFilter filter = new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION);
        registerReceiver(receiver, filter);
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
10.01.2014, 11:17  [ТС]     GPS_PROVIDER и доступность GPS #3
Спасибо. Попробую.
Но остается вопрос, почему бы не запускать оба слушателя?
Как показала практика, если отвечает слушатель GPS_PROVIDER, то NETWORK_PROVIDER все равно молчит.
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
07.05.2014, 11:07     GPS_PROVIDER и доступность GPS #4
2 angryrobot: допустим до запуска программы GPS включен. Прослушка сработает только если изменяется статус GPS. Как при запуске программы узнать статус GPS?
У меня он почему всегда выключен(
Yandex
Объявления
07.05.2014, 11:07     GPS_PROVIDER и доступность GPS
Ответ Создать тему
Опции темы

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