如何在移动设备上室内使用GPS?

5

我是一名新手,想要获取用户在室内的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();

4
嗯,GPS在室内无法使用... 它基本上需要直接朝向卫星才能工作。 - Robin Day
看一下这个:http://www.walletpop.com/blog/2010/02/01/gps-inside-the-mall-location-based-services-will-guide-you-to-d/ - Özgür
4个回答

21

GPS基于卫星发射到您接收器的范围估计。通常情况下,您的GPS接收器需要至少来自4颗卫星的信号才能计算其位置。在开阔的天空条件下,L1频段的信号强度约为-130dBm。商用接收器(例如集成在移动电话中的接收器)可以跟踪卫星信号到-160dBm。在此门槛以下,接收器无法使用信号。这个30dB的余量允许一些障碍物(如树叶、玻璃窗甚至轻质墙壁)的衰减,但是几层楼高的建筑完全掩盖了几乎所有方向的信号,使GPS完全不可用。即使衰减允许接收器使用信号计算其位置,所实现的精度可能无法满足您的目标应用程序(由信号衰减降低精度)。

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

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

还有第三种选择:将移动电话中MEMS芯片组的加速度集成到最后已知的GPS位置中。在某些条件下,这可能有效...

总之,在移动电话中,没有现成的室内定位解决方案,但是有些人正在研究此问题(例如http://www.polestar.eu/en/node/111/y

编辑:我忘记提到基于蜂窝塔的定位,只要手机与蜂窝网络保持活动数据校准,就可以使用该方法。这种方法仅足以提供手机所在城市的准确位置。


7

很遗憾,GPS系统从未被设计用于室内使用。事实上,大多数消费者级别的GPS传感器无法获得有效的GPS定位,除非它们可以清晰地看到天空。即使高层建筑和密集的树木也可能造成严重问题。


你好,感谢您的快速回复。但是例如,移动设备中的内置应用程序,如E71地图或移动版谷歌地图。这些应用程序如何能够在我室内时检测到您的位置? - Nivek
当移动设备无法获取有效的GPS信号时,大多数设备会执行以下操作:1.使用基站三角定位http://en.wikipedia.org/wiki/Mobile_phone_tracking#Network_Based; 2.使用上次获取的GPS位置。 - Daniel Vassallo

2

2
我认为JSR 179本身支持基于网络的定位,因为Google Maps是一个具有这种功能的Java应用程序。但根据Sony Ericsson开发者论坛和一些在Nokia开发者论坛上的帖子,看起来你最好是通过系统属性自行查找单元ID,并使用像opencellid.org这样的查找服务。

在Nokia手机上,似乎可以直接通过JSR 179使基于网络的定位正常工作,尽管这涉及改变手机设置。

设置

菜单->设置->电话设置->常规->定位->定位服务器

将文本粘贴自 诺基亚开发者论坛,以启用基于网络的定位功能。有关可用的位置方法,请参阅S60中的位置方法

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接