如何通过编程获取手机的物理信道配置
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您的要求。
我想获取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您的要求。