我是移动应用程序的新手。基本上我想在室内获取用户的 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),因此
返回的位置非常近似
并且不能用于任何应用程序。
还有第三种选择:从最后一个已知的 GPS 位置集成来自手机中 MEMS 芯片组的加速度。这可能在某些条件下工作......
总而言之,目前还没有现成的手机室内定位解决方案,但有些人正在研究这个主题(例如 http://www.polestar.eu/en/node/111/y)
编辑:我忘了提及基于蜂窝塔的定位,只要手机具有对蜂窝网络的事件数据校正,就可以使用。这种方法只能准确到给出手机所在的城市。
关于java-me - 如何在移动设备上在室内使用 GPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036645/