Карты Google Android используют GPS местоположение, а не сеть - PullRequest
0 голосов
/ 07 марта 2012

В моем приложении я хочу узнать местоположение пользователя и показать его на карте (google maps).В настройках андроид устройства вы можете проверить

  1. Использовать беспроводные сети
  2. Использовать спутники GPS

Когда пользователь запускает карту активности, я показываю диалогв котором пользователь может выбрать, получать свое текущее местоположение или нет.

Old code deleted

Если пользователь хочет получить свое местоположение, я проверяю, включен ли gps.Если нет, я запускаю настройки.Еще я пытаюсь получить местоположение.Но даже когда GPS активен и «использует беспроводные сети», он не получит местоположение.Есть ли решение, чтобы проверить, включен ли «Использовать беспроводные сети».Или какую часть моего кода мне нужно изменить, чтобы получить местоположение только по сигналу GPS?

Спасибо

ПРАВКА mycurrentcode:

boolean isGps = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
                boolean isNetwork = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

                if(!isGps && !isNetwork){
                    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    startActivity(intent);
                } else if(isGps && !isNetwork) {
                    String bestProvider = LocationManager.GPS_PROVIDER;
                    Location location = lm.getLastKnownLocation(bestProvider);


                    Toast.makeText(MapsTabActivitiy.this, "Location niet beschikbaar.", Toast.LENGTH_SHORT).show();
                } else if(!isGps && isNetwork) {
                    String bestProvider = LocationManager.NETWORK_PROVIDER;
                    Location location = lm.getLastKnownLocation(bestProvider);

                    if(location == null){
                        location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    } else if (location != null){
                        mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)));
                        mapcontroller.setZoom(15);
                    }
                }
                else {
                    Criteria criteria = new Criteria();
                    criteria.setAccuracy(Criteria.ACCURACY_FINE);
                    String bestProvider = lm.getBestProvider(criteria, false);
                    Location location = lm.getLastKnownLocation(bestProvider);

                    if(location == null){
                        location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    } else if (location != null){
                        mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)));
                        mapcontroller.setZoom(15);
                    }
                }

Поэтому я проверяю с помощью isProviderEnabled для GPS_PROVIDERИ NETWORK_PROVIDER.И с, если, иначе, если я изменю, как получить местоположение.Единственный случай, который мне нужно найти - это случай 2 (иначе if (isGps &&! IsNetwork) {}).Получить местоположение по сигналу GPS.

1 Ответ

0 голосов
/ 07 марта 2012

Вы получаете правильного поставщика, используя класс Criteria, но вы можете просто использовать LocationManager.GPS_PROVIDER для запроса обновлений местоположения, используя только GPS. Изменение

String bestProvider = lm.getBestProvider(criteria, false);

до

String bestProvider = LocationManager.GPS_PROVIDER;

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...