4

我已成功获取GsmCellLocation相关的 cid 和 lac 信息,但服务小区的 PSC(主扰码)总是以初始化值 -1 返回。谁能获得服务小区的真实 PSC 值?

telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
psc = cellLocation.getPsc();
Log.d(TAG, "PSC = " + psc);

我拥有所有必要的权限。我的邻居列表也返回空,但目前这不是问题。

4

2 回答 2

1

PSC 仅在 UMTS 网络上可用。
检查网络类型getNetworkType是否NETWORK_TYPE_UMTS存在NETWORK_TYPE_EDGE

于 2012-08-01T11:48:09.960 回答
0

我已经读到这适用于某些手机 - Google nexus 手机就是其中之一。

我试图在我的 Motorolla Razr 上运行您的测试代码 - 它返回 -1。

通过查看 android 源代码 (GsmServiceStateTracker.java),看起来此功能是可选的,并且很可能未在许多手机上实现。您要查找的信息是作为来自 GSM 调制解调器的主动消息发送的,除了从getPsc().

我的意思是如果你不需要,为什么要实施它。

我还尝试扩展您的测试代码以获取有关相邻单元格的信息,这些信息也可用于获取其 PSC 值。它不起作用,因为用于获取相邻小区信息的 at 命令未在我手机的 GSM 调制解调器中实现。

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
Log.d(TAG, "cid = " + cellLocation.getCid());
Log.d(TAG, "lac = " + cellLocation.getLac());

int psc = cellLocation.getPsc();
Log.d(TAG, "PSC = " + psc);

List<NeighboringCellInfo> neighCell = null; 
neighCell = telephonyManager.getNeighboringCellInfo();  
for (int i = 0; i < neighCell.size(); i++) 
{
    NeighboringCellInfo thisCell = neighCell.get(i);  
    int CID = thisCell.getCid();  
    int RSSI = thisCell.getRssi();
    int PSC = thisCell.getPsc();
    Log.d(TAG, " "+CID+" - "+RSSI + " - " + PSC);
}

如果你真的想知道哪些手机实现了这一点,你应该在一些基准应用程序中添加一个测试,并希望能及时得到一些结果。

于 2012-08-06T10:49:33.190 回答