最近,我试图使用Android设备获取相邻小区的信息。我也试过很多牌子的android手机,比如三星、htc。结果是Htc可以获得相邻小区的信息。我使用的函数是TelephonyMananger.getNeiboringCellInfo()。但是正如Android API的文档所说,当我想要得到3G基站的小区id和信号强度时,我只能得到信号强度值,所有相邻的cell id都是-1。所以我改变了我的方法。但是当我使用TelephonyManager.getAllCellInfo()时,该方法总是返回一个空对象。以前有人问过这个问题,答案是这个方法的实现总是返回null。在这里,我的问题是,我们是否可以获得3G基站的邻区信息?我们能像getNeighboringCellInfo()一样自己实现getAllCellInfo()方法吗?那么我们有没有别的办法来获取3G邻区信息呢?
发布于 2014-07-28 18:27:11
Android提供了三种获取手机信息的方式:
API /UMTS和CDMA /UMTS仅限于当前(服务)的cell.
getNeighboringCellInfo:GSM/UMTS,将获得相邻小区,但不是在所有devices
onCellInfoChanged:上都支持所有网络类型都支持但需要API17,并非在所有设备上都支持此外,前两个不会返回MCC/MNC (国家/地区和运营商代码),您需要从TelephonyManager单独获取。
getNeighboringCellInfo只会给你一个标识符: GSM的LAC/CID对,或者UMTS的PSC。( PSC在细胞的直接环境中是独一无二的。)
onCellInfoChanged可能不会返回所有单元格类型。这取决于设备-一些将使用onCellLocationChanged用于GSM/UMTS小区,并通过onCellInfoChanged仅报告LTE小区。
在这里,您在很大程度上取决于设备(或其ROM)。您唯一可以依赖的是,第一个和第三个方法的组合将使您获得服务单元。
如果上述任何一种方法都不起作用,那么应用程序就无能为力了。您需要构建自己的ROM,可能还需要RIL驱动程序,甚至基带固件。在这三层中的任何一层上,开发人员都可能认为将附近的单元报告给上层是不值得的。
发布于 2013-07-25 17:42:36
一些电话不支持getNeighboringCellInfo(),像许多三星电话(盖乐世S3,盖乐世Nexus等)。我不认为对此有解决方案。因为错误不是来自Android操作系统。所以你换了另一个版本的Android或者使用其他功能都不会起作用。
https://stackoverflow.com/questions/17788175
复制相似问题