这就是我启动位置监听器的方式:
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坐标?或者至少从他们来的地方检查,所以我知道是否接受?
答案 0 :(得分:3)
这是来自LocationRequest的文档:
应用程序无法指定LocationClient使用的确切位置源(如GPS)。
但是在使用LocationManager时,您可以请求指定位置提供者的位置更新,例如LocationManager.GPS_PROVIDER。
由于您需要使用FusedLocationProviderApi,因此您可能希望使用Location.getAccuracy()方法拒绝或接受位置读数。精度为68%置信半径。值越小意味着精度越高。准确度越高,使用GPS获取的可能性越大。
还有一个Location.getProvider()方法,如果已设置,则返回提供程序。如果未设置提供程序,则返回null。
此外,您可以使用LocationRequest.setPriority(int)并使用LocationRequest.PRIORITY_HIGH_ACCURACY作为参数,以确保您只获得最准确的读数。