java获取范围内所有基站的CID、LAC和信号强度
目前,我正在用网络中的细胞对我的Android进行三边测量。这比我想象的还要准确。但没有我希望的那么准确。所以我想让更多的塔参与进来,而不是从GetNeighborringCellInfo获得的。我想得到范围内每个塔的细胞ID和信号强度。每一个网络运营商。有没有办法“ping”这些塔,让它们用cellID、Lac和signalstrength来回答?无论如何,这是可能的。 我可以扫描2G和3G(以及4G)并行设备吗?或者我可以通过编程在它们之间切换吗? 有什么建议吗?希望我足够清楚
# 1 楼答案
看来
TelephonyManager
和getNeighboringCellInfo()
就是你要找的下面是一个简单明了的例子:
确保在清单文件中包含所有必需的权限,例如
ACCESS_COARSE_LOCATION
或READ_PHONE_STATE
,这取决于您将使用的API,否则它将崩溃哦,顺便说一句,这只适用于2G。3G或更高版本不支持此类操作
# 2 楼答案
到目前为止,这是获取相邻小区信息的正确方法:
现在
你可以用
cellInfoWcdma.getCellIdentity().getLac()
找到LAC,同样地,也可以用cellInfoGsm
和cellInfoLte
找到LAC。请注意,CDMA不包含LAC。还要注意的是,LTE有TAC而不是LAC,除了它们的术语之外,它们是相似的你可以在^{中找到力量。LTE、GSM和CDMA也是如此。请注意,您可以
getLevel
、getDbm
或getAsuLevel
任何您感兴趣的内容对于CID,您可以将其作为
cellInfoWcdma.getCellIdentity().getCid()
,类似于LTE和GSM。请注意,LTE具有getCi
而不是getCid
。还请注意,它不适用于CDMA如果你对MCC和MNC感兴趣,你可以通过
cellInfoWcdma.getCellIdentity().getMccString()
for API Level>;=28,否则使用cellInfoWcdma.getCellIdentity().getMcc()
。请注意,您无法获得用于CDMA的MCC和MNC您可以创建自己的模型类,并通过创建它们的对象(我已经在这里发表了评论)来存储所需的所有值。将这些对象存储在列表中。别忘了向清单添加权限