搭载 Android 11 或更高版本发布的设备可以为多个公共陆地移动网络 (PLMN) 提供支持。Android 11 在小区识别 API 中加入了多种方法,用于获取有关小区支持的 PLMN 的信息,以便区分蜂窝网络服务提供商和网络运营商。
多 PLMN 支持为移动网络运营商 (MNO) 提供了灵活性,使其能够广播多个身份。这主要是为了支持多个 MNO 使用通用硬件或信号塔的共享协议。在多 PLMN 场景中,当设备选择使用特定信号塔注册时,它会选择用于该注册的 PLMN,这会将设备的配置文件锁定到该 PLMN,以用于所有后续通信。getRegisteredPlmn
方法可检索设备的已注册 PLMN。
实现
为了支持在运行 Android 11 或更高版本的设备上实现多 PLMN,请在 IRadio
中的以下位置实现函数。
IRadio.hal 和 IRadioResponse.hal
在 Radio 1.5 HAL 中,为了支持多 PLMN,设备注册的网络信息与之前的版本相比,报告方式有所不同。首先,注册的 PLMN (RPLMN) 会单独报告,因为在多 PLMN 小区中,RPLMN 可能不是主 PLMN-ID。而且在 CellIdentity
结构中,小区会提供一个主 PLMN-ID 和一个附加 PLMN-ID 列表。RPLMN 必须是主 PLMN-ID 或在 CellIdentity
结构中指示的附加 PLMN-ID 之一。
Radio 1.5 HAL 中的更改会影响 IRadio.hal
中的以下两个 HAL 方法(以及 IRadioResponse.hal
中对应的响应方法)。
getDataRegState_1_5
和getDataRegStateResult_1_5(RegStateResult result)
getVoiceRegState_1_5
和getVoiceRegStateResult_1_5(RegStateresult result)
types.hal
在 types.hal
中实现以下内容
ClosedSubscriberGroupInfo
:可选地包含在每个CellIdentity
实例中。此结构用于提供小区所属的闭合用户组的详细信息(如果有)。这通常用于识别小型小区,例如个人 LTE 设备。它也可以用于诸如 CBRS LTE 之类的部署中。CellIdentityLte
:支持附加 PLMN-ID 列表。CellIdentityWcdma
:支持附加 PLMN-ID 列表。CellIdentityTdscdma
:支持附加 PLMN-ID 列表。RegStateResult
:包含更新的CellIdentity
结构和一个用于指示 RPLMN 的字段。
验证
要测试您的实现,请在注册到多运营商无线接入网 (MORAN) 或多运营商核心网 (MOCN) 时,运行以下 CTS 测试:CellInfoTest
。