Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 477
#1

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

09.01.2014, 22:54. Просмотров 2074. Ответов 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?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 22:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос GPS_PROVIDER и доступность GPS (Программирование Android):

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

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

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

GPS трекер
Здравствуйте! Вот пишу диплом, завтра надо сдавать на проверку. Помогите...

Прослушка GPS
Добрый день Регистрирую прослушку на доступность GPS так: ...

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

3
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
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);
1
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 477
10.01.2014, 11:17  [ТС] #3
Спасибо. Попробую.
Но остается вопрос, почему бы не запускать оба слушателя?
Как показала практика, если отвечает слушатель GPS_PROVIDER, то NETWORK_PROVIDER все равно молчит.
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
07.05.2014, 11:07 #4
2 angryrobot: допустим до запуска программы GPS включен. Прослушка сработает только если изменяется статус GPS. Как при запуске программы узнать статус GPS?
У меня он почему всегда выключен(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 11:07
Привет! Вот еще темы с решениями:

Gps и расстояние
Вопрос такой, можно ли по координатам которые записываются раз в 5 минут...

GPS Tracker
Функционал: шлёт GPS координаты по UDP. Струкутра: Activity - запускает и...

GPS service
Написал сервис для работы GPS однако при попытке вытащить данные просто выдаёт...

GPS координаты
public void onCreate(Bundle savedInstanceState) { ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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