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

标签 java-me gps

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

最佳答案

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

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

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

  • 还有第三种选择:从最后一个已知的 GPS 位置集成来自手机中 MEMS 芯片组的加速度。这可能在某些条件下工作......

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

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

    关于java-me - 如何在移动设备上在室内使用 GPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036645/

    相关文章:

    java - 在 Android 设备中切换 Wifi 状态

    java - 在运行时更改 JTable 引用 - 未出现在 GUI 中

    design-patterns - 如何编写布局管理器?

    java-me - 在 Java 中不要让显示器进入待机状态

    android - MathFP 库的使用

    java - Java 中的 ECEF 到 lla (lat,lon,alt)

    Android:计算两个位置之间距离的最佳方法

    java - GPS 和网络定位 android

    windows-phone-7 - Windows Phone 8 平台上的 GPS 错误行为

    java - 是否可以在 J2me 中使用 java SE 库?