3

オブジェクトを使用してネットワーク セル ID を取得できGsmCellLocationます。しかし、CDMA、3G、HSDPA、または UMTS を使用している場合、セル ID を取得できません。3G 接続でを使用するGsmCellLocation.getCid()と、Cid ではない LCID (論理チャネル ID) と呼ばれるものが取得されます。以下に示すGsmセルIDを取得するために使用したコード:

private PhoneStateListener mPhoneLocationListener = new PhoneStateListener() {
    public void onCellLocationChanged(CellLocation location) {
                    TelephonyManager tm  = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);                      
           GsmCellLocation location2 = (GsmCellLocation) tm.getCellLocation();
           cellId = location2.getCid();
    }
}

しかし、行を変更すると:

GsmCellLocation location2 = (GsmCellLocation) tm.getCellLocation();

に :

CdmaCellLocation location2 = (CdmaCellLocation) tm.getCellLocation();

デバイスを CDMA にのみ接続するように強制している場合でも、にCastExceptionキャストできないという例外がスローさGsmCellLocationCdmaCellLocationます。

では、どうすれば 3g セル ID 情報を取得できますか?

4

2 に答える 2

0

このようなことを試してください

CellLocation cl = tm.getCellLocation();
        GsmCellLocation gsmLoc;
        CdmaCellLocation cdmaLoc;
        try {
            gsmLoc = (GsmCellLocation) cl;
            System.out.println(gsmLoc.getCid());
        } catch (ClassCastException e) {
            cdmaLoc = (CdmaCellLocation) cl;
            System.out.println("Base station ID - "+ cdmaLoc.getBaseStationId());
        }
于 2013-12-18T15:51:55.723 に答える
0

CDMA には Cell ID がありません。代わりに、3 つの識別子があります。

  1. SID - システム ID
  2. NID - ネットワーク ID
  3. BID - 基地局 ID

詳細については、OpenCellID wiki の次のページを参照してください: http://wiki.opencellid.org/wiki/Public:CDMA

于 2017-07-09T04:32:00.647 に答える