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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    location.getAccuracy();

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        相关资源
        最近更新 更多