Android位置管理器问题

时间:2011-04-19 05:24:37

标签: android gps location status

从以下代码中,我获取当前位置。

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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

获得修复后,请使用Location.getProvider()了解使用的提供商。

使用此elaborate article来确定哪个LocationProvider最佳。