这可能是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 – 当使用LocationManager时,为什么有Wifi但没有连接帮助网络位置?的更多相关文章

  1. Android – 连接问题

    我有几个关于Android连接的问题,如果有人的话有任何见解会很棒.1)应用程序想要无线连接时的默认值是多少?如果wlan关闭或没有接入点周围是3g还是gprs?2)设备是否始终ip连接?3)是一个应用程序,例如浏览器只连接到一个IP地址?4)应用程序可以决定打开套接字的连接吗?5)最后,本机应用程序如何处理连接?

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

    可能是您第一次在连接WLAN时激活GPS.SkyHook就是提供这种数据的公司.

  3. 在Android上实施位置追踪

    我是Android开发的新手,想要构建第一个示例应用程序.我的目标是建立一个跟踪应用程序,将我当前的位置发送到远程服务器.我想使用收集的数据来计算我在知名的地方,如家庭或工作中花费了多少个小时.我应该使用哪种方法?GPS不是一个真正的选择,因为最有趣的地方是在室内,我没有GPS连接.我在Android4.0上工作.解决方法如您所说,GPS连接不会在室内工作,但估计您当前的位置非常有用.怎么样?

  4. VS Code开发React-Native及Flutter 开启无线局域网安卓真机调试问题

    这篇文章主要介绍了VS Code开发React-Native,Flutter 开启无线局域网安卓真机调试,需要的朋友可以参考下

  5. windows-server-2008 – 在Windows上通过IPSec VPN实现隔离的访客WLAN

    >好吧,我会让访客只能访问一台配置为代理/NAT到互联网的计算机.>如果你在某个地方有一个linux盒子,可以通过另一个方法将vlan通过另一个方法:UbuntuCommunity–VPNoverSSH

  6. windows – 笔记本电脑的主机名是否可以与其两个接口相关联?

    我在我的(非常小的,~110名学生)学校管理网络.我们有一台WindowsServer2008R2Standard服务器,我们使用的是Windows7Professional.我们有大约10个工作站和5台笔记本电脑,后者有时通过以太网连接,有时通过Wi-Fi连接.我注意到这会创建重复的DHCP租约,然后只有其中一个可以在DNS中注册–第二个只是失败.有没有办法解决这个问题,所以当我,例如ping笔

  7. Windows 7:通过不同的接口路由单个IP(wlan)

    丹尼斯嗯,我做的完全一样,Windows8坚持使用“LAN”网关…而不是“WLAN”网关.所以,不确定Windows是否“反复无常”:)或不;但我想这个命令应该是直接使用的.尝试了几种组合,例如不使用WLAN的特定IF或设置较低的METRIC或使用MASK…

  8. Ubuntu下配置AP热点(TX1配置热点)

    ubuntu使用ap-hotspot来创建WIFI热点一般的ubuntu以上过程走完手机可以顺利识别并连接上了。先移除hostapd64位ubuntu使用以下方式“sudoapt-markholdhostapd”将防止版本升级到有问题的版本。

  9. windows – 用于获取信号强度的WLAN API

    我正在使用WLANApi,即WlanGetAvailableNetworkList()来获取无线局域网调制解调器/USB数据卡的信号强度.如果有人有一些示例代码示例或某些信息,请发送给我.如果您使用的是Python,则有samplecodehere.如果您使用C,thedocumentation提供了一个很好的例子:

  10. c – boost :: asio无法连接到没有WLAN的localhost

    在我的电脑上,只有一个网络适配器,它是一个无线LAN适配器.我参与了一个小型的C项目,它使用boost::asio来连接localhost并做它的工作,一切都很好.但今天我发现如果我从互联网上断开WLAN,这个程序不起作用.boost::asio的解析器会抛出异常:并且错误消息是:请求的名称有效但没有数据找到了所请求的类型.ping到localhost就可以了.我感到困惑,本地网络程序是否需要互联网?

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部