4

cid と lac の情報を正常に取得GsmCellLocationして関連づけていますが、サービング セルの PSC (プライマリ スクランブリング コード) は常に初期化された値 -1 で返されます。サービング セルの実際の PSC 値を取得できる人はいますか?

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

必要なすべての権限を持っています。私の隣人リストも空を返しますが、現時点では問題ありません。

4

2 に答える 2

1

PSC は UMTS ネットワークでのみ使用できます。
ネットワーク タイプgetNetworkTypeNETWORK_TYPE_UMTSであるかどうかを確認しますNETWORK_TYPE_EDGE

于 2012-08-01T11:48:09.960 に答える
0

これが一部の電話で機能することを読みました-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);
}

どの携帯電話がこれを実装しているかを本当に知りたい場合は、何らかのベンチマーク アプリにテストを追加し、うまくいけば時間内に結果が得られるようにする必要があります。

于 2012-08-06T10:49:33.190 に答える