首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何知道WIFI或2G/3G移动台在Android系统中的定位模式?

如何知道WIFI或2G/3G移动台在Android系统中的定位模式?
EN

Stack Overflow用户
提问于 2012-05-17 07:51:52
回答 2查看 3.3K关注 0票数 2

我们知道Android有两种定位模式: GPS和网络。如果我们使用网络,那么Android可以使用WIFI或2G/3G蜂窝塔来定位。没有全球定位系统,我们可以简单地使用LocationManager.NETWORK_PROVIDER获取位置数据。但是,我们如何才能知道这种模式是WIFI还是2G/3G移动台呢?Android不为WIFI和手机塔提供单独的提供商。

我想了个办法。但我不确定这是否正确。请回顾并提出意见:

  1. 检查我是否能得到一个WIFI热点列表。如果列表中没有任何内容,则必须使用蜂窝塔。如果存在一些WIFI热点,并且精度很高(

,<=100m),则可能使用WIFI。如果精度较低,是否仍在使用蜂窝塔?

据我所知,WIFI定位的精度相对较高。但是它的正常精度范围是多少呢?另一个问题是,Android同时使用WIFI和手机塔吗?如果是这样的话,那么在我的申请中,我可以认为它使用的是WIFI,而不是手机塔。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-18 01:19:25

这是正确的,Android并没有给出一种方法来确定如何计算网络位置。网络提供商的原则是收集设备上的所有相关数据,然后将其全部发送到Google服务器,在那里计算您的位置并将其发回给您。我不确定,但网络位置也可能使用加速度计/陀螺仪/罗盘数据来提高定位的准确性,特别是当您连续计算位置时。所以我相信它可以同时使用手机塔和Wifi信息。

你的准确性方法在大多数情况下应该有效,但不是100%可靠。

另一种可能是关闭wifi,计算第一个位置修复,然后再打开它,再试一次。通过比较这两个位置及其准确性估计,您可能可以猜到wifi对当前位置的位置引擎的影响。

出于好奇,你为什么要用这个?

票数 3
EN

Stack Overflow用户

发布于 2013-01-28 08:57:46

实际上,有办法做到这一点。这不仅是记录在案的,因此也可能在没有通知的情况下发生变化。您可以通过网络位置提供程序获得使用的位置估计方法,更新额外的数据。

代码语言:javascript
运行
复制
Bundle extras = location.getExtras();
if (extras.containsKey("networkLocationType")) {
    String type = extras.getString("networkLocationType");
    if (type .equals("cell")) {
        // Cell (2G/3G/LTE) is used.
    } else if (type .equals("wifi")) {
        // Wi-Fi is used.
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10631811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档