Android中的融合位置提供程序

我正在使用熔合位置提供程序开发应用程序。 我有个疑问。 为了定期获取位置,它使用requestLocationUpdates()。 但是从哪个来源获得WIFI或GPS或networking的位置。 在我的应用程序中,只有在WiFi处于开启状态时,才会定期获取位置信息。 当WiFi处于closures状态时,它不能得到位置(它应该从其他来源获取位置,不pipe是GPS还是networking),但是不能获取位置,或者我必须为GPS和networking编写监听器。 我不知道是什么问题。 谁能帮我。

而且,只有当所有提供商(Wifi,GPS,networking)可用或其他。

public void checkPlay(){ int resp = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); if (resp == ConnectionResult.SUCCESS) { locationClient = new LocationClient(this, this, this); locationClient.connect(); } else { Toast.makeText(this, "Google Play Service Error " + resp, Toast.LENGTH_LONG).show(); } } public void onConnected(Bundle arg0) { // TODO Auto-generated method stub if (locationClient != null && locationClient.isConnected()) { locationRequest = LocationRequest.create(); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationRequest.setInterval(100); locationClient.requestLocationUpdates(locationRequest, this); } } public void onLocationChanged(Location location) { // TODO Auto-generated method stub try { if (location != null) { lat = location.getLatitude(); long = location.getLongitude(); } } catch (Exception e) { Log.d(Fots.TAG, "GpsTrackService.mGpsLocationListener.onLocationChanged", e); } } 

Solutions Collecting From Web of "Android中的融合位置提供程序"

融合API提供3个位置提供者。

  1. 高准确率
  2. BALANCED_POWER
  3. NO_POWER

HIGH_ACCURACY模式使用所有位置提供商,但是,它优先考虑位置提供商,并包括GPS和位置提供商。 定位精度大约在10米范围内。

BALANCED_POWER模式排除GPS位置提供商列表,并使用其他提供商,包括手机信号塔,wifi等。在这种情况下,定位精度约为40米。

NO_POWER不使用任何位置提供程序,而是从其他应用程序获取位置的被动模式。 准确度可能是一英里或更多。 它完全基于最近由其他应用程序获取的位置。

如果您在示例中使用PRIORITY_HIGH_ACCURACY,则将使用所有可用的来源(wifi,cell,gps和内部传感器)。 如果你关掉wifi,并在室内,你可能无法获得一个GPS锁(一般来说,当你靠近一个窗口时,除了在某些地区,GPS不能在室内工作)。 如果wifi,cell和gps不可用(或者是因为它们在设置中被closures或者它们在您的特定位置不可用),它将不会返回一个位置(单独的内部传感器不足以创build一个从零开始的位置)。

如果你在室内,GPS可能无法工作。 所以它会回落到无线/三angular测量。