【问题标题】:Is is possible to block android location from using 3G to get location, get only from gps?是否可以阻止 android 位置使用 3G 获取位置,仅从 gps 获取?
【发布时间】:2015-11-10 10:56:50
【问题描述】:

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

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 坐标?或者至少检查他们来自哪里,所以我知道是否接受?

【问题讨论】:

  • 你试过了吗? LocationServices.FusedLocationApi.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, yourLocationListener);
  • for: LocationServices.FusedLocationApi.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);我得到:无法解决此方法。

标签: android google-maps gps location locationlistener


【解决方案1】:

这是来自 LocationRequest 的文档:

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

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

LocationManager

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

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

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

【讨论】:

  • 我需要在我的应用程序中使用地理围栏,因此我将 LocationServices 与 LocationRequest 一起使用。位置管理器没有地理围栏
  • 感谢您的编辑!但它仍然对我没有帮助,因为它从我的网络(3G、4G 等)获取位置,这将从它的提供商那里获取位置,但是在地下,并且互联网有中继器,它会把我扔到地铁出口的尽头,离我家2-3公里。但是,精度仍然很小,大约 30-60m。 (在那个 68% 的置信半径内。PRIORITY_HIGH_ACCURACY 已经设置好了。但是如果它不能从 GPS 中获取位置,它将从网络中获取。(我想尝试让它忽略这些位置。最好根本不获取位置,然后假)
  • 我刚刚查看了 Location API 文档。有一个 getProvider() 方法。未设置时可能会返回 null,但我认为值得一试。
猜你喜欢
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 2017-08-20
相关资源
最近更新 更多