gpt4 book ai didi

Android API 17 TelephonyManager.getAllCellInfo() 和 TelephonyManager.getNeighboringCellInfo()

转载 作者:行者123 更新时间:2023-11-29 01:51:26 33 4
gpt4 key购买 nike

最近我在尝试使用 Android 设备获取相邻小区的信息。而且我试过很多品牌的安卓手机,比如三星,htc。结果只是Htc可以得到邻区信息。我使用的函数是 TelephonyMananger.getNeiboringCellInfo()。但是正如Android API的文档所说,当我想获取3G基站的cell id和信号强度时,我只能获取信号强度值,而所有相邻的cell id都是-1。所以我改变了我的方法。但是当我使用 TelephonyManager.getAllCellInfo() 时,该方法总是返回一个空对象。之前有人问过这个问题,答案是这个方法的执行总是返回null。在这里,我的问题是我们是否可以获取3G基站的邻区信息?我们是否可以像 getNeighboringCellInfo() 一样自己实现 getAllCellInfo() 方法?还有其他方法可以获取3G邻区信息吗?

最佳答案

Android 提供了三种获取手机信息的不同方式:

  • onCellLocationChanged:GSM/UMTS 和 CDMA,仅限于当前(服务)小区。
  • getNeighboringCellInfo:仅限 GSM/UMTS,将获取相邻小区,但并非所有设备都支持
  • onCellInfoChanged:支持所有网络类型,但需要 API 17,并非所有设备都支持

此外,前两个不会返回 MCC/MNC(国家和运营商代码),您需要从 TelephonyManager 单独获取。

getNeighboringCellInfo 只会为您提供一个标识符:GSM 的 LAC/CID 对,或 UMTS 的 PSC。 (PSC 在细胞的直接环境中是独一无二的。)

onCellInfoChanged 可能不会返回所有单元格类型。这取决于设备 - 有些设备将使用 onCellLocationChanged 用于 GSM/UMTS 小区,并通过 onCellInfoChanged 仅报告 LTE 小区。

在这里,您几乎完全受制于设备(或其 ROM)。您唯一可以依赖的是第一种和第三种方法的组合将为您提供服务小区。

如果上述方法之一不起作用,则应用程序无能为力。您需要构建自己的 ROM,可能还需要构建 RIL 驱动程序甚至基带固件。在这三层中的任何一层上,开发人员可能已经决定向上层报告附近的小区是不值得的。

关于Android API 17 TelephonyManager.getAllCellInfo() 和 TelephonyManager.getNeighboringCellInfo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17788175/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com