如何通过编程获取手机的物理信道配置

How to get the physical channel configuration of the cellphone via programming

我想获取5G NSA中主服务小区和辅服务小区的PCI,但是使用getAllCellInfo()似乎无法获取我想要的信息。看来我需要解析物理通道配置如下:

{{mConnectionStatus=PrimaryServing,...,mRat=LTE,...,mPhysicalCellId=123},
 {mConnectionStatus=SecondaryServing,...,mRat=NR,...}

有谁知道如何获取(实时)配置?或者我可以通过其他方式获得 PCI 吗?非常感谢!

关于PhysicalChannelConfig

获得PhysicalChannelConfig的唯一可能方法是通过TelephonyManager.registerTelephonyCallback method. You can for example pass an instance of TelephonyCallback.PhysicalChannelConfigListener,您将开始获得所需的东西。

请注意,需要权限Manifest.permission.READ_PRECISE_PHONE_STATE,因此您的应用需要是运营商特权应用的系统应用。

有人尝试调整此保护级别,可以看到当前状态here。但是从 Android 12 开始,如果您是普通开发人员,则无法获得 PhysicalChannelConfig

关于 PCI

如您所述,您有时可以通过 getAllCellInfo() 获得为 LTE 和 NR NSA 小区提供服务的 PCI。有时存在 PCI 的 CellInfoNr 实例。此行为特定于设备。

一般来说-Android不提供任何官方API您的要求。