Android中的融合位置提供程序

Raj*_*a45 9 gps android google-maps location-provider google-maps-android-api-2

我正在使用Fused Location Provider开发应用程序.我有个疑问.为了定期获取位置,它使用requestLocationUpdates().但是从哪个来源获取WIFI或GPS或网络的位置.在我的应用程序中,仅当WiFi处于开启状态时,它才会定期获取位置.当WiFi处于关闭状态时,它无法获得该位置(它应该从GPS或网络的其他来源获得位置.但它永远不会获得位置.或者我必须为GPS和网络编写听众).我不知道是什么问题.谁能帮我.

并且,它是否仅适用于所有提供商(Wifi,GPS,网络)或其他.

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

    }       
}
Run Code Online (Sandbox Code Playgroud)

mun*_*ikh 6

Fused API提供3个位置提供程序.

  1. 高精确度
  2. BALANCED_POWER
  3. NO_POWER

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

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

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


Dav*_*vid 2

如果您在示例中使用 PRIORITY_HIGH_ACCURACY,它将使用所有可用的源(wifi、手机、gps 和内部传感器)。如果您关闭 wifi 并且在室内,则可能无法获得 GPS 锁定(一般来说,GPS 在室内不起作用,除非在某些区域靠近窗户时)。如果 wifi、手机和 GPS 不可用(因为它们在设置中被关闭,或者它们在您的特定位置不可用),它不会返回位置(仅内部传感器不足以创建从头开始的位置)。