我已经读到这适用于某些手机 - 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);
}
如果你真的想知道哪些手机实现了这一点,你应该在一些基准应用程序中添加一个测试,并希望能及时得到一些结果。