Android 设备在使用网络提供商获取位置时是否需要互联网?我看到很少有文章说它可以在没有互联网的情况下工作,也很少有人说它需要互联网。
我正在更多地研究 Android 内部如何进行位置获取(而不是代码)。
文章说我们需要互联网:设备捕获手机 ID 和 wifi 热点并将其发送到谷歌服务器。谷歌服务器返回位置信息。这些文章说我们需要互联网来获取位置。
很少有文章说位置是使用蜂窝三角测量确定的,不需要互联网。
我已经尝试做测试来确认这一点。但测试结果令人困惑,无法从中推断出任何东西。
设备配置:我关闭了互联网、wifi 扫描和 GPS。这意味着设备只有蜂窝信号。 应用程序每分钟捕获一次位置。
测试结果一:
- 我无法使用上述设备配置获取位置。我运行了这个测试 15 分钟以上。
- 然后我打开了 3G 数据并获得了位置。
- 发布此消息后,我再次关闭了 3G,我仍然能够以不同的准确度获取位置。
测试用例 2:(续测试用例 1)
- 测试用例 1 后,我一直在办公室位置获取位置。
- 然后我回家了,当我检查地下室(-1 楼)的位置时,第一次读数的位置精度约为 900 米,第二次和进一步读数没有位置。这持续了 20 多分钟。
- 20 分钟后,我开始接收位置信息。
网络定位究竟是如何工作的。我更多地关注 Android 内部如何进行位置获取而不是代码。
所以这是我的问题:
- Does it pass cellid and wifi hotspots and get location (using internet)?
- Does it do cellular triangulation?
- Does it cache data and use accelerometer and compass to determine location without internet?
(尽管在 stackoverflow 中也有类似的问题。它们更多的是代码而不是 Android 内部工作。因此发布这个问题)
最佳答案
在为 Android 开发位置感知应用程序时,您可以利用 GPS 和 Android 的 Network Location Provider 获取用户位置。虽然 GPS 最准确,但它只能在室外工作,它会很快消耗电池电量,并且不能像用户希望的那样快速返回位置。
Android 的 Network Location Provider 使用手机信号塔和 Wi-Fi 信号确定用户位置
,以适用于室内和室外的方式提供位置信息,响应速度更快,并且使用更少的电池电量。要在您的应用程序中获取用户位置,您可以同时使用 GPS 和 Network Location Provider,或者只使用一个。
If you are using both NETWORK_PROVIDER and GPS_PROVIDER, then you need to request only the permission ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION includes permission only for NETWORK_PROVIDER
根据您使用的权限可能会给出不同的结果
检查这些 website和 strategies used by android for location
以Anil vk的评论为准
网络 –>(AGPS、CellID、WiFi MACID)
:该提供商根据手机信号塔和 WiFi 接入点的可用性来确定位置。通过网络查找检索结果。需要权限 android.permission.ACCESS_COARSE_LOCATION 或 android.permission.ACCESS_FINE_LOCATION。
答案是是的
它取决于来自手机信号塔的信号强度以获得准确的结果你可以看到这个website通过使用不同的方式解决准确性和电池耗电问题。
关于android - 网络位置提供商是否需要互联网来确定位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36760123/