多运营商网络支持

搭载 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_5getDataRegStateResult_1_5(RegStateResult result)
  • getVoiceRegState_1_5getVoiceRegStateResult_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