如何在Android中获取正确的小区ID和位置区域码?

9
我找到了很多获取基站编号和位置区域码的代码,我使用下面的代码来获取基站编号和位置区域码。
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。我该如何解决这个问题?


嗨,我使用来自网址http://sunil-android.blogspot.in/2013/01/convert-celllocation-to-real-location.html的代码来获取位置信息,在Airtel方面它可以正常工作,但在Reliance方面却无法正常工作。据我所知,这意味着在Reliance情况下我得到的位置区域码和小区ID是不正确的。有什么帮助吗? - User10001
有许多应用程序可以显示正确的小区ID,但我的代码在3G SIM卡上无法工作。 - User10001
你使用 cid = cellLocation.getCid() & 0xffff; 在你的 relience-sim 上得到了什么结果? - sschrass
2个回答

1
以下主题中突出显示了解决方案:Android: 所有运营商都无法使用CellID? 简而言之,在3G网络中获取到的getCid()数字需要用0xffff进行掩码处理。以下是代码片段:
GsmCellLocation cellLocation = (GsmCellLocation)telm.getCellLocation();

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

希望这有所帮助。

0

基站ID和位置区域码(LAC)根据网络不同而异。正如您所提到的,您正在使用两个不同网络的SIM卡,因此您将获得不同的基站ID和LAC ID,它们将不相同。因为一个运营商的基站ID将与其他网络不同,因为不同网络使用了两个不同的基站,并且它们已经相应地分配了这两个ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接