3

我可以使用GsmCellLocation对象获取我的网络单元 ID。但是当我使用 CDMA、3G、HSDPA 或 UMTS 时……我无法获得 Cell ID。使用GsmCellLocation.getCid()3G 连接检索称为 LCID(逻辑通道 ID)的东西,它不是 Cid。我用来获取 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 cell 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 回答