android – 当使用LocationManager时,为什么有Wifi但没有连接帮助网络位置?

这可能是SO的主题,如果是这样我道歉(并乐意接受关闭的标志),但我有问题找出WIFI打开时的原因,但没有连接到任何接入点(在我的 Android设备上),它大大提高了使用LocationManager时网络提供商的准确性.如果没有它,一般网络位置结果距离我当前位置大约1英里.此外,大多数时候返回的lat / lng值是不同的,所以它甚至没有请求一次并且只是在lastKNownLocation()中缓存结果

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

搜索过谷歌,并提出了各种答案,例如:“它只是做”和“它的魔力” – 说实话,这是毫无用处的.我不想深入描述内部工作,只是略低于“它只是做”,或“它是如何工作的”.

请求的代码

// 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,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-Adress)到lat / lon坐标.
因此,当您的手机检测到“已知”WLAN时,它可以:
– 查找Wlan-id的本地缓存以进行协调,或者如果您有互联网连接,它可以通过该数据库连接并查询Wlan id的坐标.

仍然是他们拥有WLAN-id坐标的问题?
可能是您第一次在连接WLAN时激活GPS.

SkyHook就是提供这种数据的公司.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...