即使没有可用的互联网,也会调用android - onLocationChanged

时间:2016-10-19 15:06:51

标签: android google-maps-android-api-2 updates android-location android-googleapiclient

我只是想知道这件事,因为它没有意义。

我有一个GoogleApiClient我连接,之后我使用

请求位置更新
LocationServices.FusedLocationApi.requestLocationUpdates(
googleApiClient, mLocationRequest, this);

现在,奇怪的是,即使我将手机置于飞机模式,也会调用onLocationChanged(Location location)!没有互联网,我仍然得到位置更新..这怎么可能?那些更新是否可靠和准确?

2 个答案:

答案 0 :(得分:0)

在常规情况下,位置是基于一个或多个传感器计算的。数据包括:

  • 移动网络。
  • 周围的Wi-Fi网络。
  • 周围的蓝牙信标。
  • GPS。

前3种方法要求无线电可以收听和广播无线电信号,但GPS只监听卫星广播的信号,因为它不会广播任何信号。 当您激活飞行模式时,您基本上是告诉设备停止广播任何类型的信号(为了避免干扰飞机),但是由于GPS芯片没有广播任何东西,因此可以预期继续收听卫星信号,因此,报告您设备当前位置。

您可以通过调用以编程方式检测位置对象的准确性:

location.getAccuracy();

以米为单位的准确度。

编辑:让我补充一些可能对您有用的重点:

  • 如果没有任何其他无线电的帮助,GPS首次修复非常慢。在您看到第一个位置之前,它可能需要分钟
  • GPS需要清晰的天空视野才能接收信号。所以它不适用于室内。
  • 与其他技术相比,GPS是获取定位的更耗电方式之一。

答案 1 :(得分:0)

如果没有互联网或任何更新,它会返回您最后知道的位置。所以即使在飞行模式下,你可能仍会得到它,它只会在新的位置更新后更改,这将在获得之前或可能需要互联网