2011-04-19 68 views
1

從下面的代碼中,我得到當前位置。Android位置管理器問題

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); 

獲取位置後,我吸取谷歌地圖的位置重疊,並從位置提供我決定位置重疊的顏色。以下代碼決定了位置提供程序的基礎上的顏色。

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不穩定,我該如何決定網絡上的跳躍。

回答

3

這已被回答。您需要添加兩個不同的位置偵聽器。一個用於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); 
+0

我怎麼能決定哪個提供商提供的位置? – Siddiqui 2011-04-19 05:34:43

+0

@Arman你基本上都添加了兩個聽衆,其中一個會選擇你的位置。裏諾的回答有一個很好的指導。一探究竟。 – Hades 2011-04-19 06:03:05

1

當你得到一個解決方法,使用Location.getProvider()知道使用了哪個供應商。

使用此elaborate article來決定哪個LocationProvider是最好的。