【问题标题】:How to use GPS indoors on a mobile device?如何在移动设备上在室内使用 GPS?
【发布时间】:2010-01-10 09:59:09
【问题描述】:

我是移动应用程序的新手。基本上我想在室内获取用户的 GPS 坐标。 我在户外检测移动设备没有问题,只有在室内时才会给我带来问题。 我试过设置精度,但没有用。

有解决办法吗?

这是我的代码:

new Thread()
{

    public void run()
    {
        try
        {
            Criteria cr= new Criteria();
            cr.setHorizontalAccuracy(1000);
            LocationProvider lp= LocationProvider.getInstance(cr);

            Location l = lp.getLocation(60);
            Coordinates c = l.getQualifiedCoordinates();

            if(c != null )
            {
                lat = c.getLatitude();
                lon = c.getLongitude();
            }
        }
        catch(Exception e)
        {
            System.out.println("Error");
        }
    }
}.start();

【问题讨论】:

标签: java-me gps


【解决方案1】:

GPS 基于从发射卫星到您的接收器的距离估计。您的 GPS 接收器(通常)需要来自至少 4 颗卫星的信号才能计算其位置。在开阔的天空条件下,L1 频段的信号电平大约达到 -130dBm。商业接收器,例如集成在手机中的接收器,能够跟踪低至 -160dBm 的卫星。在这个阈值之下,接收器不能使用信号。这 30dB 的余量允许一些障碍物(如树叶、玻璃窗、甚至轻质墙壁)的衰减,但有几层楼完全屏蔽了几乎所有方向的信号,使得 GPS 完全不可用。即使衰减允许接收器使用信号来计算其位置,所达到的精度也可能不足以满足您的目标应用(信号衰减会降低精度)。

另一方面,诸如 Skyhook 的 Wi-Fi 定位系统(在许多移动平台上实施)通常能够计算建筑物内的位置,但这种方法面临两个主要缺点:

  • 数据库覆盖率不 包括室内站点 (AFAIK),因此 返回的位置非常近似 并且无法用于任何应用程序。
  • Wi-Fi 定位算法基于使用信号电平对热点的范围估计,受室内障碍物(人、家具等)的影响很大。这会降低定位精度。

还有第三种选择:集成手机中 MEMS 芯片组的加速度,从最后已知的 GPS 位置开始。这可能在某些条件下有效...

总之,没有现成的手机室内定位解决方案,但有些人正在研究这个主题(例如http://www.polestar.eu/en/node/111/y

编辑:我忘了提到基于蜂窝塔的定位,只要手机对蜂窝网络进行有效的数据校正,就可以使用它。这种方法只能准确到给出手机所在的城市。

【讨论】:

    【解决方案2】:

    不幸的是,GPS 从未打算在室内工作。事实上,大多数消费者 GPS 传感器无法获得有效的 GPS 定位,除非它们能清楚地看到天空。即使是高层建筑和茂密的树木也可能造成严重问题。

    【讨论】:

    • 您好,感谢您的快速回复。但例如,移动设备中的那些内置应用程序,例如 E71 地图或移动版谷歌地图。即使我在室内,这些应用程序如何检测您的位置??
    • 大多数移动设备在无法获得有效 GPS 定位时会执行以下操作: 1. 使用信号塔三角测量en.wikipedia.org/wiki/Mobile_phone_tracking#Network_Based; 2. 使用上次获取的 GPS 位置。
    【解决方案3】:

    那里有 WiFi 接入点数据库,因此您可以从范围内的接入点中获得一个很好的想法:http://gadgets.boingboing.net/2008/10/22/google-gears-adds-wi.htmlhttp://www.skyhookwireless.com/

    【讨论】:

      【解决方案4】:

      我认为 JSR 179 支持开箱即用的基于网络的定位,因为 Google 地图是具有此功能的 Java 应用程序。但是根据the Sony Ericsson developer forum 和诺基亚开发者论坛上的一些帖子,看起来你最好的选择是look up the cell id yourself via system properties,并使用像opencellid.org 这样的查找服务。

      在诺基亚上,虽然它涉及更改手机设置,但似乎可以直接通过 JSR 179 使基于网络的定位工作。

      设置

      菜单->设置->电话设置。 -> 通用->定位->定位服务器

      至 supl.nokia.com(从 nokia dev forums 粘贴)。这将启用基于网络的定位。有关可用的定位方法,请参阅Location Methods in S60

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        • 2011-01-23
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多