getPsc()使用GsmCellLocation总是返回-1(getPsc() using Gsm

2019-09-17 06:26发布

我成功地获得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);

我把所有的权限必要的。 我的邻居列表返回空以及但这并不是目前关注的问题。

Answer 1:

PSC仅适用于UMTS网络。
检查网络类型getNetworkType如果它NETWORK_TYPE_UMTS而不是NETWORK_TYPE_EDGE



Answer 2:

我已阅读了这部作品在某些手机 - 谷歌Nexus手机就是其中之一。

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

通过查看Android源代码(GsmServiceStateTracker.java)看起来这个功能是可选的,很可能不是许多手机上实现。 您正在查找的信息从GSM调制解调器发送未经请求的消息,它不是用于别的(据我可以从Android源见)比返回的值getPsc()

我的意思是,为什么实现它,如果你不就得了。

我也试图扩大你的测试代码,以获取有关邻国也可用于获取他们的PSC值的单元信息。 这是行不通的,因为在命令用于获取相邻小区信息也没有在我的手机的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);
}

如果你真的想找出手机实现这一点,你应该测试增加了一些基准程序 ,并希望及时得到了一定的成果。



文章来源: getPsc() using GsmCellLocation always returns -1