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

Niv*_*vek 4 gps java-me

我是移动应用程序的新手.基本上我想在室内获取用户的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();
Run Code Online (Sandbox Code Playgroud)

Sté*_*ane 21

GPS基于从发射卫星到接收器的距离估计.您的GPS接收器(通常)需要来自至少4颗卫星的信号才能计算其位置.在开阔天空条件下L1频带的信号电平大约达到-130dBm.商用接收机,例如集成在移动电话中的接收机,能够跟踪低至-160dBm的卫星.在此阈值下,接收器无法使用该信号.这30dB的余量允许从诸如树叶,玻璃窗,甚至光墙等障碍物中进行一些衰减,但是几个建筑物楼层几乎可以完全屏蔽来自几乎所有方向的信号,从而使GPS完全无法使用.即使衰减允许接收器使用信号来计算其位置,所达到的准确度可能会赢得'

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

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

还有第三种选择:将来自MEMS chpset的加速度与最后已知的GPS位置进行整合.这可能在某些条件下有效......

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

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


Dan*_*llo 7

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