Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用android罗盘、加速计和陀螺仪获取当前位置_Java_Android_Mobile_Gps - Fatal编程技术网

Java 使用android罗盘、加速计和陀螺仪获取当前位置

Java 使用android罗盘、加速计和陀螺仪获取当前位置,java,android,mobile,gps,Java,Android,Mobile,Gps,我对android编程还不熟悉。我知道如何使用GPS在室外环境中获取用户的位置 但是我面临着一个问题,那就是在一栋没有GPS的大楼里找到一个人的位置 我可以处理编码部分,但我需要了解如何使用指南针、加速计和陀螺仪数据或除GPS以外的任何其他传感器数据,以便在将指南针、加速计和陀螺仪数据传递到服务器后获取用户在建筑物内的当前位置。这里考虑建筑物内部的映射。 抱歉,如果这是一个愚蠢的问题。室内定位非常困难,如果不是今天不可能的话 有效的方法是在大楼的多个地方安装低能的蓝牙“信标”, 并将其用作信息。

我对android编程还不熟悉。我知道如何使用GPS在室外环境中获取用户的位置

但是我面临着一个问题,那就是在一栋没有GPS的大楼里找到一个人的位置

我可以处理编码部分,但我需要了解如何使用指南针、加速计和陀螺仪数据或除GPS以外的任何其他传感器数据,以便在将指南针、加速计和陀螺仪数据传递到服务器后获取用户在建筑物内的当前位置。这里考虑建筑物内部的映射。


抱歉,如果这是一个愚蠢的问题。

室内定位非常困难,如果不是今天不可能的话

有效的方法是在大楼的多个地方安装低能的蓝牙“信标”, 并将其用作信息。(参见ios信标)(但你必须自己管理,信标和建筑物内位置之间的关系)。

使用指南针、加速计和陀螺仪,您将不会取得(很大)成功: 在这篇文章中,我们非常详细地解释了为什么陀螺仪/加速计(Relative)导航无法工作,因为微小的误差会在2或3秒内累积,以至于您无法使用结果。这是由双重积分引起的,请参见23:30的视频

私人无线局域网(在您的建筑内)三角测量可以工作,但在(有限的)电话内不能工作,因为它不能向您提供无线局域网可视性和强度的信息。

您的智能手机中的内置GSM手机或Wlan位置还剩下什么供室内使用

还有一种方法:
评估建筑物的磁场

这是可行的,至少有一家公司在做这项工作,但你必须为每栋建筑校准这项工作。
但这更多的是一个研究主题,而不是一个众所周知的技术

进一步信息

听起来您打算使用基于上一次良好GPS定位的加速计数据执行此操作。我想你会发现这在手机上是不可行的。惯性导航中使用的加速计——例如飞机中的加速计——必须非常精确,并且经过高度校准,以将误差降至最低。即使如此,所有惯性系统都会随时间漂移。由于手机的精确度相对较低,这些错误会迅速累积,并很快使您的位置解决方案无法使用

没有全球定位系统,大多数手机仍然可以给你一个粗略的位置估计使用。这远不如GPS定位准确,但总比什么都没有好

另请参见关于室内定位的精彩讨论(此处也提到了惯性导航):