Android Location Manager Проблема - PullRequest
       8

Android Location Manager Проблема

1 голос
/ 19 апреля 2011

Из следующего кода я получаю текущее местоположение.

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
GlobalLocation = locationManager.getLastKnownLocation(provider);
locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);

После получения местоположения я рисую накладные местоположения на карте Google, и от поставщика местоположения я определяю цвет накладываемых местоположений. Вот следующий код, который определяет цвет на основе поставщика местоположения.

    Serviceprovider = GlobalLocation.getProvider();
    if(Serviceprovider.equals("network"))
    {
         positionOverlay.iColor = 2;
    }//End if
    else if(Serviceprovider.equals("gps"))
    {
         positionOverlay.iColor = 1;
    }//End else if

На улице все работает нормально, но проблема в том, что если я использую свое приложение в помещении, где GPS не стабилен. Провайдер не использует network. Провайдер сети выполняет только если GPS выключен. Не могли бы вы дать мне понять, как я могу решить проблему перехода по сети, если GPS не стабилен.

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

На это уже отвечали раньше.Вам нужно добавить двух разных слушателей местоположения.Один для GPS и один с использованием положения сети.Слушатель местоположения на основе сотовой сети.

GPS будет работать только на открытом воздухе, но сотовая сеть будет работать везде, где есть сигналы, однако она не так точна, как GPS.

locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
            locationListener = new MyLocationListener();
            locationListener2 = new MyLocationListener();               
            locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 0, 0, locationListener);
            locationManager.requestLocationUpdates(locationManager.NETWORK_PROVIDER, 0, 0, locationListener2);
1 голос
/ 19 апреля 2011

Получив исправление, используйте Location.getProvider(), чтобы узнать, какой поставщик был использован.

Используйте эту подробную статью , чтобы решить, какой LocationProvider является лучшим.

...