============问题描述============
各位大神: 如何将GPS,基站定位,WiFi定位有效集成到一起,让系统根据网络化境做出有效的定位方式,谢谢啦============解决方案1============
楼上说的对,实现locationlistener的onLocationChanged,onProviderDisabled,onProviderEnabled,onStatusChanged接口。============解决方案2============
但是基站定位和wifi定位(IP)还是需要第三方包依赖的啊,否则你就得自己搭建基站数据库,拿到所有基站的数据,ip也是一样,才能进行解析。============解决方案3============
如此 你就注册了两个 provider , GPS_PROVIDER & NETWORK_PROVIDER。 但是还是有问题 gps 精度高 可靠, 但是稳定性差 , network方式 速度快 但是不可靠 ,因为位置取决于你使用的代理等原因。至于你的初衷“系统根据网络化境做出有效的定位方式” ,这个可以做一个互动选择让用户自行选定 如果gps获得不了位置 使用网络位置,如果两种方式都有位置信息,且误差超过一定程度 ,让用户自行决定想使用哪个。 引用 9 楼 tomkan 的回复:private android.location.LocationManager mLocationManager; LocationListener [] mLocationListeners = new LocationListener[] { new LocationListener(android.location.LocationManager.GPS_PROVIDER), new LocationListener(android.location.LocationManager.NETWORK_PROVIDER) }; if (mLocationManager == null) { mLocationManager = (android.location.LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); } if (mLocationManager != null) { try { mLocationManager.requestLocationUpdates( android.location.LocationManager.NETWORK_PROVIDER, 1000, 0F, mLocationListeners[1]); } catch (SecurityException ex) { Log.i(TAG, "fail to request location update, ignore", ex); } catch (IllegalArgumentException ex) { Log.d(TAG, "provider does not exist " + ex.getMessage()); } try { mLocationManager.requestLocationUpdates( android.location.LocationManager.GPS_PROVIDER, 1000, 0F, mLocationListeners[0]); } catch (SecurityException ex) { Log.i(TAG, "fail to request location update, ignore", ex); } catch (IllegalArgumentException ex) { Log.d(TAG, "provider does not exist " + ex.getMessage()); } Log.d(TAG, "startReceivingLocationUpdates"); }