使用LocationManager时,为什么打开Wifi但未连接会帮助网络定位?

幻想地

对于SO来说,这可能是不合时宜的,如果是的话,我道歉(并乐意接受关闭的标记),但是我在弄清楚为什么当WIFI开启但未连接到任何接入点(在我的android设备上)时遇到了问题使用时,大大提高了网络提供商的准确性LocationManager如果不启用它,则一般的网络定位结果距离我当前的位置大约1英里。而且,大多数时候返回的lat / lng值是不同的,因此甚至没有请求一次并只是将结果缓存在lastKnownLocation()

显然,我同时使用GPS和网络提供商来对最终用户的位置(当两者都不可用时)进行适当的修复,并使用时间戳来确定哪个是最新的。

我已经搜索过google,并提出了各种答案,例如:“它确实如此”和“它的魔力”-坦白地说,这几乎没有用。我不希望对内部工作原理进行深入的描述,只是要比“它确实起作用”或“这就是它的工作原理”稍低一些。

要求的代码

// first get location from network provider //
            if(isNetworkEnabled)
            {
                locationManager.requestLocationUpdates(
                        LocationManager.NETWORK_PROVIDER, 
                        MIN_TIME_FOR_UPDATES, 
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, 
                        this);
                Logging.Debug("GPSTracker", "Network");
                if(locationManager != null)
                {
                    netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if(netLocation != null)
                    {
                        latitude = netLocation.getLatitude();
                        longitude = netLocation.getLongitude();
                        speed = netLocation.getSpeed();
                    }
                }
            }

            // if gps is enabled get lat/lng using that as well //
            if(isGPSEnabled)
            {
                if(gpsLocation == null)
                {
                    locationManager.requestLocationUpdates(
                            LocationManager.GPS_PROVIDER, 
                            MIN_TIME_FOR_UPDATES, 
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, 
                            this);
                    Logging.Debug("GPSTracker", "GPS Enabled");

                    if(locationManager != null)
                    {
                        gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if(gpsLocation != null)
                        {
                            latitude = gpsLocation.getLatitude();
                            longitude = gpsLocation.getLongitude();
                            speed = gpsLocation.getSpeed();                             
                        }
                    }
                }
            }

非常感谢任何见解。谢谢。

亚历克斯·维恩

Android,Apple和其他公司可以访问庞大的数据库,在其中可以查找Wlan-Device-Id(WLAN路由器的Mac地址)以纬度/经度坐标。
因此,当您的手机检测到“已知” WLAN时,它可以:
-查找Wlan-id的本地缓存以进行协调,或者如果您的Internet连接处于活动状态,
则它可以通过以下方式连接并查询Wlan ID的坐标数据库。

剩下的问题是它们在哪里具有您的WLAN-id的坐标?
连接到WLAN时激活GPS可能是第一次。

SkyHook就是这样一家提供数据的公司。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的wifi会随机断开连接?

来自分类Dev

为什么VPN会阻止登录到公共wifi的连接?

来自分类Dev

使用ADO打开连接时,为什么Excel文件会打开?

来自分类Dev

当我使用代理连接网络时,为什么Google可以知道我的位置?

来自分类Dev

使用工具时,Kali会从WiFi断开连接

来自分类Dev

初次打开tmux时,为什么窗口会高亮显示?

来自分类Dev

连接笔记本电脑时,会显示神秘的WiFi网络

来自分类Dev

为什么我的 VPN 服务在我的蜂窝网络上工作,但在我使用住宅 Wifi 时却没有?

来自分类Dev

为什么在使用网络共享时特定网站会强制在桌面浏览器上使用移动界面?

来自分类Dev

为什么通过网络连接而不是ByteArray使用InputStream?

来自分类Dev

连接到WiFi时强制在Android上使用蜂窝网络连接

来自分类Dev

当wifi没有互联网连接并且打开了移动数据时,为什么IAsyncResult.AsyncWaitHandle.WaitOne返回false?(XAMARIN)

来自分类Dev

为什么删除已声明但未使用的变量会导致程序提前终止?

来自分类Dev

宏运行完毕后,为什么从VBA打开Access实例时为什么会退出?

来自分类Dev

当对每个请求使用session_regenerate_id()时,为什么打开新标签会导致先前标签中的页面注销?

来自分类Dev

为什么在同一网络中使用动态DNS进行端口转发时连接失败

来自分类Dev

为什么重塑我的数据会完全改变Keras中完全连接的神经网络的行为?

来自分类Dev

当从鹦鹉螺打开文件时,为什么gedit会继续随机打开新实例?

来自分类Dev

当从鹦鹉螺打开文件时,为什么gedit会继续随机打开新实例?

来自分类Dev

为什么Android无法与RN-41 Roving网络设备打开连接?

来自分类Dev

如何使用wicd连接到WiFi网络?

来自分类Dev

如何使用wicd连接到WiFi网络?

来自分类Dev

使用Mac Terminal连接到WiFi网络

来自分类Dev

当我可以从 CLI 连接时,为什么不能从网络管理器连接 OpenVPN?

来自分类Dev

为什么在iOS中打开套接字连接时无需打开新线程

来自分类Dev

AFNetworking有时无法使用某些WiFi网络连接

来自分类Dev

如何使用python打开wifi连接?

来自分类Dev

WIFI Intel Corporation Wireless-AC 9260 的更多问题:检测到网络但未连接

来自分类Dev

为什么在缓慢的网络上工作时,mysql workbench编辑器会如此缓慢?

Related 相关文章

  1. 1

    为什么我的wifi会随机断开连接?

  2. 2

    为什么VPN会阻止登录到公共wifi的连接?

  3. 3

    使用ADO打开连接时,为什么Excel文件会打开?

  4. 4

    当我使用代理连接网络时,为什么Google可以知道我的位置?

  5. 5

    使用工具时,Kali会从WiFi断开连接

  6. 6

    初次打开tmux时,为什么窗口会高亮显示?

  7. 7

    连接笔记本电脑时,会显示神秘的WiFi网络

  8. 8

    为什么我的 VPN 服务在我的蜂窝网络上工作,但在我使用住宅 Wifi 时却没有?

  9. 9

    为什么在使用网络共享时特定网站会强制在桌面浏览器上使用移动界面?

  10. 10

    为什么通过网络连接而不是ByteArray使用InputStream?

  11. 11

    连接到WiFi时强制在Android上使用蜂窝网络连接

  12. 12

    当wifi没有互联网连接并且打开了移动数据时,为什么IAsyncResult.AsyncWaitHandle.WaitOne返回false?(XAMARIN)

  13. 13

    为什么删除已声明但未使用的变量会导致程序提前终止?

  14. 14

    宏运行完毕后,为什么从VBA打开Access实例时为什么会退出?

  15. 15

    当对每个请求使用session_regenerate_id()时,为什么打开新标签会导致先前标签中的页面注销?

  16. 16

    为什么在同一网络中使用动态DNS进行端口转发时连接失败

  17. 17

    为什么重塑我的数据会完全改变Keras中完全连接的神经网络的行为?

  18. 18

    当从鹦鹉螺打开文件时,为什么gedit会继续随机打开新实例?

  19. 19

    当从鹦鹉螺打开文件时,为什么gedit会继续随机打开新实例?

  20. 20

    为什么Android无法与RN-41 Roving网络设备打开连接?

  21. 21

    如何使用wicd连接到WiFi网络?

  22. 22

    如何使用wicd连接到WiFi网络?

  23. 23

    使用Mac Terminal连接到WiFi网络

  24. 24

    当我可以从 CLI 连接时,为什么不能从网络管理器连接 OpenVPN?

  25. 25

    为什么在iOS中打开套接字连接时无需打开新线程

  26. 26

    AFNetworking有时无法使用某些WiFi网络连接

  27. 27

    如何使用python打开wifi连接?

  28. 28

    WIFI Intel Corporation Wireless-AC 9260 的更多问题:检测到网络但未连接

  29. 29

    为什么在缓慢的网络上工作时,mysql workbench编辑器会如此缓慢?

热门标签

归档