从以下代码中,我获取当前位置。
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不稳定,你能指导我如何判断网络上的跳跃。
答案 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最佳。