2013-02-19 120 views
2

我可以使用GsmCellLocation對象獲取我的網絡單元ID。但當我在CDMA,3G,HSDPA或UMTS .....我無法獲得小區ID。使用帶有3G連接的GsmCellLocation.getCid()檢索稱爲LCID(邏輯信道ID)的不是Cid的東西。我使用的代碼得到如下所示的GSM小區ID:我在CDMA連接時如何獲得網絡小區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信息?

回答

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()); 
     } 
+0

最好在java中使用operator instanceof。如果(GsmCellLocation的單元格)... – ofskyMohsen 2017-07-09 04:33:55