2013-02-19 124 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