0

当我覆盖上述函数并记录CellLocation时,我收到以下值

[425,56301,-1]

当我四处漫游时,上述值变为

[425,56302,-1][425,56303,-1]

这些值代表什么?我认为56301是 CellId。另外两个是什么?

4

1 回答 1

7

由于 CellLocation 可以是GsmCellLocationCdmaCellLocation,因此您必须查看这些类。

在您的情况下,您正在使用 GsmCellLocation 的实例,其“toString()”实现如下:

@Override
public String toString() {
    return "["+ mLac + "," + mCid + "," + mPsc + "]";
}

我们可以得出结论:

  • 425 - LAC - 位置区域代码- 标识您的终端当前所在的网络区域。蜂窝网络由小区组成(即一个基站处理一个小区),这些小区被分组到位置区域。每个区域都有它的标识符 - LAC。
  • 56302 - CID - 小区 ID - 为您的设备服务的小区的标识符。
  • -1 - PSC - 主扰码- 仅限 UMTS。

关于 LAC

位置区域是在蜂窝网络中定义的逻辑实体,用于减少网络中的信令流量。简而言之,位置区域是一组单元格。每个位置区域由 LAC 标识。

当您四处走动时,您的手机正在使用不同的基站。手机总是知道它可以使用哪个基站,因为手机经常测量信号电平。

例如:如果您在单元格 A 的范围内,然后您离开,并且一些新单元格将具有更好的范围,您的手机会立即注意到这一点。但是它不应该通知网络这个事实,因为它会产生大量的信令数据(服务小区经常被改变)。

另一方面,当有人试图给你打电话时会发生什么?网络必须通知您的手机。但它不知道手机在哪里。好吧,它可以向每个基站发送消息并通过无线电广播,但同样,这将是大量的信令流量。所以网络必须知道电话在这里。

所以,我们这里有两种力量:

  1. 手机不应该在每次 CID 更改时通知网络(因为大量的信令流量)
  2. 网络不应该在每个单元格中寻找电话(同样,大量的信令流量)。

位置区域是在这里找到良好平衡的一种方式。

  1. 手机不会在每次 CID 更改时通知网络,仅当位置区域 (LAC) 更改时。
  2. 网络不会在一个国家的每个小区中“寻呼”电话,而只会在给定位置区域的每个小区中“寻呼”电话。
于 2013-07-31T11:23:54.630 回答