2012-05-16 125 views
4

我成功获取了GsmCellLocation和相关的cid和lac信息,但服务小区的PSC(主扰码)总是以初始值-1返回。 任何人都可以获得服务细胞的真实PSC值?使用GsmCellLocation的getPsc()始终返回-1

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

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

+0

请提供设备模型(任何Android版本),其中'getPsc()'返回正确的值。即使需要使用反射的解决方案也是受欢迎的。 –

+0

我可以确认cellLocation.getPsc()是在连接到UMTS的Nexus 4上报告的(使用上面的代码)。也为getNeighboringCellInfo。 –

回答

1

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

+1

我知道这一点。在我测试过的设备上的** UMTS **网络上,getPsc()总是返回“-1”。 –

+0

你有清单中的ACCESS_COARSE_LOCATION权限吗? – pawelzieba

+0

是的,我确实有这个权限。 –

0

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

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

通过查看Android源代码(GsmServiceStateTracker.java),它看起来像这个功能是可选的,并且很可能没有在许多手机上实现。您要查找的信息是作为来自GSM调制解调器的未经请求的消息发送的,并且它没有用于其他任何内容(据我所知可以从android源中看到),而不是从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); 
} 

如果你真的想找出手机实现这一点,你应该测试添加到some benchmark app并希望及时得到了一定的成果。

+0

你知道它是哪个版本的Nexus吗? Nexus S/Galaxy Nexus/Nexus 7? –

+0

我怀疑这个功能可以在Nexus'手机上使用,而不是在平板电脑上使用,因为它没有电话功能。我没有任何这些手机,所以我可以测试。 :( – wojciii

+0

有没有一种方法可以从无线电日志中获取PSC?我只能在无线电日志中看到LAC和CID。是否还打印了PSC? –