これが一部の電話で機能することを読みました-Google nexus電話はそれらの1つです。
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);
}
どの携帯電話がこれを実装しているかを本当に知りたい場合は、何らかのベンチマーク アプリにテストを追加し、うまくいけば時間内に結果が得られるようにする必要があります。