0

我想在没有互联网连接的情况下检测 Android 移动设备的位置。唯一的选择是,要使用附近蜂窝塔的信息,我想知道 TelephonyManager 类是否可以用于此(假设 Cells 的纬度和经度位置在数据库中可用)?

我知道 TelephonyManager.getNeighbouringCellInfo() 提供了一个 NeighbouringCellInfo 列表。

我的问题是,这个方法返回多少 NeighbouringCellInfo?并且可以使用此信息进行三角测量吗?

如果不能,我可以使用 SIM Toolkit 获取所需信息并执行三角测量吗?

请随时提供任何相关输入,因为这对我的程序非常有用。

4

1 回答 1

1

首先,你当然不能做三角测量。三角测量依赖于角度。我认为你的意思是三边测量。相比之下,三边测量依赖于距离。

要根据距离进行三边测量,您需要一个具有具体坐标的数据库,以及与这些坐标中的三个或更多坐标(在本例中为手机信号塔)的距离。但是,如果您查看 的文档NeighboringCellInfo,您会发现您没有获得远距离读数。你得到一个RSSI。RSSI 和距离之间的联系不是线性的,并且不是很好理解或很准确。它可能会因天线方向、天气条件等而有很大差异......因此,认为您将能够简单地选择三个小区并使用它们的相对 RSSI 来对用户进行三边测量,最终将证明非常容易出错(即,几乎大部分时间都是完全错误的)。除了这一切,我不相信getNeighboringCellInfo总能保证返回三个或更多的塔(你可以在这里查看低级代码的实现)。因此,我的判断是,你能做的最好的事情就是找出哪个塔的强度最高,然后说你有点“接近”它,我真的怀疑你能做得更好。

相反,我相信你已经想到了一个更好的选择,那就是使用 GPS,但我猜你有理由不想这样做。

我不确定您是否也知道,但TelephonyManager有一个实现也可以为您提供位置更新:here。

(顺便说一句,我曾经做过一个类似的三边测量项目,根据我的经验,没有高精度的接收器和测量,它就是行不通的。我也有原始的 RSSI 数据,即使在中短距离数据中也存在误差是非常不可接受的。)

于 2012-06-10T19:02:29.970 回答