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

Posted

技术标签:

【中文标题】android - 即使没有可用的互联网,也会调用 onLocationChanged【英文标题】:android - onLocationChanged is called even when there is not internet available 【发布时间】:2017-03-01 07:42:53 【问题描述】:

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

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

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

现在,奇怪的是 - 即使我将手机置于飞行模式,onLocationChanged(Location location) 也会被调用!没有互联网,我仍然可以获取位置更新.. 这怎么可能?这些更新可靠且准确吗?

【问题讨论】:

【参考方案1】:

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

蜂窝网络。 周围的 Wi-Fi 网络。 周围的蓝牙信标。 全球定位系统。

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

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

location.getAccuracy();

这是位置的精确度,以米为单位。

编辑:让我添加一些您可能会感兴趣的要点:

如果没有任何其他无线电的帮助,GPS 第一次定位真的很慢。您可能需要 分钟 才能看到第一个位置。 GPS 需要清晰的天空视野才能接收信号。所以在室内是行不通的。 与其他技术相比,GPS 是一种更耗电的定位方式。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于android - 即使没有可用的互联网,也会调用 onLocationChanged的主要内容,如果未能解决你的问题,请参考以下文章

即使数据存在并出现在表中,jQuery 数据表也会显示“表中没有可用数据”[重复]

Android运行时权限即使没有权限也会通过

即使我的代码没有更改,也会出现“Android 资源链接失败”

即使没有更改联系人,也会调用内容观察者

即使在使用 LENGTH_INDEFINITE 后 Snackbar 也会关闭

即使该组件的道具或状态没有改变,也会调用 React shouldComponentUpdate()