自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 AOSP 的变更。
多运营商网络支持
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
搭载 Android 11 或更高版本的设备可以提供对多个公共陆地移动网络 (PLMN) 的支持。Android 11 的 Cell Identification 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 必须是 CellIdentity
结构中提供的主要 PLMN-ID 或其他 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
。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-26。
[null,null,["最后更新时间 (UTC):2025-03-26。"],[],[],null,["# Multi-operator network support\n\nDevices launching with Android 11 or higher can provide\nsupport for multiple public land mobile networks (PLMNs). Android\n11 includes methods in the\n[cell identification APIs](https://developer.android.com/reference/android/telephony/CellIdentity)\nto get information about a cell's supported PLMNs to distinguish between\ncellular service providers and network operators.\n\nMulti-PLMN support provides flexibility to mobile network operators (MNOs) by\nallowing them to broadcast multiple identities. This is primarily required to\nsupport sharing agreements where common hardware or towers are used by multiple\nMNOs. In a multi-PLMN scenario, when a device chooses to register using a\nparticular tower, it selects the PLMN to use for that registration, which locks\nthe device's *profile* to that PLMN for all ensuing communication. The\n[`getRegisteredPlmn`](https://developer.android.com/reference/android/telephony/NetworkRegistrationInfo#getRegisteredPlmn())\nmethod retrieves the registered PLMN for the device.\n\nImplementation\n--------------\n\nTo support multi-PLMN on devices running Android 11\nor higher, implement the functions in the following locations in\n[`IRadio`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/radio/1.5/).\n\n### IRadio.hal and IRadioResponse.hal\n\nIn the Radio 1.5 HAL, to support multi-PLMN, information about the network the\ndevice registers on is reported differently than previous versions. First, the\nregistered PLMN (RPLMN) is reported separately because on multi-PLMN cells, the\nRPLMN might not be the primary PLMN-ID. And in the `CellIdentity` structures,\nthe cell provides a primary PLMN-ID and a list of additional PLMN-IDs. The RPLMN\nmust be the primary PLMN-ID or one of the additional PLMN-IDs indicated in the\n`CellIdentity` structure.\n\nThe changes in the Radio 1.5 HAL impact the following two HAL methods in\n[`IRadio.hal`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/radio/1.5/IRadio.hal)\n(and their corresponding response methods in\n[`IRadioResponse.hal`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/radio/1.5/IRadioResponse.hal)).\n\n- `getDataRegState_1_5` and `getDataRegStateResult_1_5(RegStateResult\n result)`\n- `getVoiceRegState_1_5` and `getVoiceRegStateResult_1_5(RegStateresult\n result)`\n\n### types.hal\n\nImplement the following\nin [`types.hal`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/radio/1.5/types.hal):\n\n- `ClosedSubscriberGroupInfo`: Included optionally with every `CellIdentity` instance. This structure is used to provide details about the closed subscriber group to which a cell belongs, if any. This is commonly used to identity *small cells* such as personal LTE devices. It can also be used in deployments such as CBRS LTE.\n- `CellIdentityLte`: Supports a list of additional PLMN-IDs.\n- `CellIdentityWcdma`: Supports a list of additional PLMN-IDs.\n- `CellIdentityTdscdma`: Supports a list of additional PLMN-IDs.\n- `RegStateResult`: Includes an updated `CellIdentity` structure and a field to indicate the RPLMN.\n\nValidation\n----------\n\nTo test your implementation, run the following CTS test:\n[`CellInfoTest`](https://android.googlesource.com/platform/cts/+/3c3d33a/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java)\nwhile registered to a multi-operator radio access network (MORAN) or\nmulti-operator core network (MOCN)."]]