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

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

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

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

09.01.2014, 22:54. Просмотров 1697. Ответов 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 (Программирование Android):

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

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

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

Gps и расстояние - Программирование Android
Вопрос такой, можно ли по координатам которые записываются раз в 5 минут посчитать расстояние? Или это как-то по другому делать?

Gps speed - Программирование Android
Всем привет! есть простая задача получить текущюю скорость. Нагуглил метод getSpeed(), но так и не смог понять как с ним работать. На...

Работа с gps - Программирование Android
помогите пожалуйста! как получать скорость с помощью gps?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
10.01.2014, 10:00 #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
Сообщений: 423
10.01.2014, 11:17  [ТС] #3
Спасибо. Попробую.
Но остается вопрос, почему бы не запускать оба слушателя?
Как показала практика, если отвечает слушатель GPS_PROVIDER, то NETWORK_PROVIDER все равно молчит.
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
07.05.2014, 11:07 #4
2 angryrobot: допустим до запуска программы GPS включен. Прослушка сработает только если изменяется статус GPS. Как при запуске программы узнать статус GPS?
У меня он почему всегда выключен(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 11:07
Привет! Вот еще темы с ответами:

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

GPS Tracker - Программирование Android
Функционал: шлёт GPS координаты по UDP. Струкутра: Activity - запускает и останавливает сервис, отображает кол-во отправленных и...

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

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


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

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

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