如何在Android中获取正确的手机信号ID和位置区域代码?

时间:2013-07-23 07:00:54

标签: android

我找到了很多代码来获取cell-id和位置区域代码,我使用下面的代码来获取cell-id和位置区域代码。

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();

int cid = cellLocation.getCid();
int lac = cellLocation.getLac();

问题是,当我使用airtel-sim卡时,它工作正常并给出cell-id = 4331和loc = 610。但是当我使用relience-sim卡时,它会给出错误的结果cell-id = 11541和loc = 18823。我怎么解决这个问题?

2 个答案:

答案 0 :(得分:0)

解决方案在以下主题中突出显示:Android: CellID not available on all carriers?

简而言之,您需要屏蔽getCid()在使用0xffff的3G网络时获得的数字。以下是一个片段:

GsmCellLocation cellLocation = (GsmCellLocation)telm.getCellLocation();

new_cid = cellLocation.getCid() & 0xffff;
new_lac = cellLocation.getLac() & 0xffff;

希望有所帮助

答案 1 :(得分:0)

基于网络,小区ID和LAC ID是不同的,正如您所提到的,您正在使用不同网络的两个不同的SIM,因此您将获得不同的小区和区域,这些不同。因为一个运营商的小区ID将与其他网络不同,因为两个不同的塔用于不同的网络,并且它们相应地分配了两个ID。