有可能阻止Android位置使用3G获取位置,只能从gps获取?

时间:2015-11-10 10:56:51

标签: android google-maps gps location locationlistener

这就是我启动位置监听器的方式:

LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, REQUEST, this, Looper.getMainLooper());

我的请求如下:

public LocationRequest REQUEST = LocationRequest.create().setInterval(PS_MEDIUM_REQ_TIME).setFastestInterval(PS_MEDIUM_REQ_TIME)
        .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

问题是当我进入地铁时,没有gps信号,它从网络中获取数据。而3G等通过中继器工作,因此它将我的位置扔到最近的数据塔。我更希望它只是不给位置,在这种情况下,导致我的位置在几公里远的地方投掷是不可接受的情况。 所以我的问题是:是否可以强制它只接受gps坐标?或者至少从他们来的地方检查,所以我知道是否接受?

1 个答案:

答案 0 :(得分:3)

这是来自LocationRequest的文档:

  

应用程序无法指定LocationClient使用的确切位置源(如GPS)。

但是在使用LocationManager时,您可以请求指定位置提供者的位置更新,例如LocationManager.GPS_PROVIDER。

请参阅LocationManager

由于您需要使用FusedLocationProviderApi,因此您可能希望使用Location.getAccuracy()方法拒绝或接受位置读数。精度为68%置信半径。值越小意味着精度越高。准确度越高,使用GPS获取的可能性越大。

还有一个Location.getProvider()方法,如果已设置,则返回提供程序。如果未设置提供程序,则返回null。

此外,您可以使用LocationRequest.setPriority(int)并使用LocationRequest.PRIORITY_HIGH_ACCURACY作为参数,以确保您只获得最准确的读数。