我是移动应用程序的新手。基本上我想在室内获取用户的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();
答案 0 :(得分:21)
GPS基于从发射卫星到接收器的距离估计。您的GPS接收器(通常)需要来自至少4颗卫星的信号才能计算其位置。在开阔天空条件下L1频带的信号电平大约达到-130dBm。商用接收机,例如集成在移动电话中的接收机,能够跟踪低至-160dBm的卫星。在此阈值下,接收器无法使用该信号。这30dB的余量允许从诸如树叶,玻璃窗,甚至光墙等障碍物中进行一些衰减,但是几个建筑物楼层几乎可以完全屏蔽来自几乎所有方向的信号,从而使GPS完全无法使用。即使衰减允许接收器使用信号来计算其位置,所达到的精度可能还不足以满足您的目标应用(信号衰减会降低精度)。
另一方面,Skyhook(在许多移动平台上实施)等Wi-Fi定位系统通常能够计算建筑物内部的位置,但这种方法面临两个主要缺点:
还有第三种选择:从最后已知的GPS位置整合移动电话中MEMS chpset的加速度。这可能在某些条件下有效......
总之,手机中的室内定位没有现成的解决方案,但有些正在研究这个主题(例如http://www.polestar.eu/en/node/111/y)
编辑:我忘了提到基于蜂窝塔的定位,只要手机对蜂窝网络进行了有效的数据校正,就可以使用。这种方法的准确性足以给出移动电话所在的城市。
答案 1 :(得分:7)
不幸的是,GPS从未打算在室内工作。实际上,大多数消费者GPS传感器除非能够清晰地看到天空,否则无法获得有效的GPS定位。即使是高层建筑和茂密的树木也可能造成重大问题。
答案 2 :(得分:2)
有无线接入点的数据库,因此您可以从范围内的接入点获得一个非常好的主意:http://gadgets.boingboing.net/2008/10/22/google-gears-adds-wi.html http://www.skyhookwireless.com/
答案 3 :(得分:2)
我认为JSR 179支持开箱即用的基于网络的定位,因为Google Maps是一个具有此功能的Java应用程序。但根据the Sony Ericsson developer forum和诺基亚开发人员论坛上的一些帖子,看起来最好的选择是[{3}},并使用look up the cell id yourself via system properties之类的查询服务。
在Nokias上,似乎可以直接通过JSR 179进行基于网络的定位工作,尽管它涉及改变手机设置。
设置
菜单 - >设置 - >手机设置 - >常规 - >定位 - >定位服务器
到supl.nokia.com(粘贴自opencellid.org)。这将启用基于网络的定位。有关可用的位置方法,请参阅nokia dev forums。