如何获得LTE网络的LAC和Cell id

时间:2017-06-08 01:44:19

标签: java android lte cellid

我正在使用GsmCellLocation获取3G网络的LAC和小区ID,代码如下:
mCid = gmsCellLocation.getCid()& 0xFFFF的;
mLac = gmsCellLocation.getLac();
是否有任何库或公式如何获得/计算LTE网络(4G)的正确LAC和小区ID?感谢。

2 个答案:

答案 0 :(得分:0)

我希望这可以帮到你:

public class MobileInfoRecognizer {

    public String getCellInfo(CellInfo cellInfo) {
            String additional_info;
            if (cellInfo instanceof CellInfoGsm) {
                CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo;
                CellIdentityGsm cellIdentityGsm = cellInfoGsm.getCellIdentity();
                additional_info = "cell identity " + cellIdentityGsm.getCid() + "\n"
                        + "Mobile country code " + cellIdentityGsm.getMcc() + "\n"
                        + "Mobile network code " + cellIdentityGsm.getMnc() + "\n"
                        + "local area " + cellIdentityGsm.getLac() + "\n";
            } else if (cellInfo instanceof CellInfoLte) {
                CellInfoLte cellInfoLte = (CellInfoLte) cellInfo;
                CellIdentityLte cellIdentityLte = cellInfoLte.getCellIdentity();
                additional_info = "cell identity " + cellIdentityLte.getCid() + "\n"
                        + "Mobile country code " + cellIdentityLte.getMcc() + "\n"
                        + "Mobile network code " + cellIdentityLte.getMnc() + "\n"
                        + "physical cell " + cellIdentityLte.getPci() + "\n"
                        + "Tracking area code " + cellIdentityLte.getTac() + "\n";
            } else if (cellInfo instanceof CellInfoWcdma){
                CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfo;
                CellIdentityWcdma cellIdentityWcdma = cellInfoWcdma.getCellIdentity();
                additional_info = "cell identity " + cellIdentityWcdma.getCid() + "\n"
                        + "Mobile country code " + cellIdentityWcdma.getMcc() + "\n"
                        + "Mobile network code " + cellIdentityWcdma.getMnc() + "\n"
                        + "local area " + cellIdentityWcdma.getLac() + "\n";
            }
            return additional_info;
    }
}

答案 1 :(得分:0)

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> cellInfoList = telephonyManager.getAllCellInfo();
for (int i = 0; i < cellInfoList.size(); i++) {
    if (cellInfoList.get(i) instanceof CellInfoLte) {
        CellInfoLte cellInfoLte = (CellInfoLte) cellInfoList.get(i);
        mCid = cellInfoLte.getCellIdentity().getCi();
        mLac = cellInfoLte.getCellIdentity().getTac();
    }
}

请注意方法名称,对于LTE,它是getCi。另外,getTac用于LTE,而不是getLac。有关更多信息,请参见this答案。