我已閱讀了這部作品在某些手機 - 谷歌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並希望及時得到了一定的成果。
請提供設備模型(任何Android版本),其中'getPsc()'返回正確的值。即使需要使用反射的解決方案也是受歡迎的。 –
我可以確認cellLocation.getPsc()是在連接到UMTS的Nexus 4上報告的(使用上面的代碼)。也爲getNeighboringCellInfo。 –