Android 9 引入了一个名为 ImsService 的新 SystemApi 接口,可帮助您实现 IP 多媒体子系统 (IMS)。ImsService API 是在 Android 平台与供应商或运营商提供的 IMS 实现之间明确定义的接口。
图 1. ImsService 概览
通过使用 ImsService 接口,IMS 实现者可以向平台提供重要的信号信息(例如 IMS 注册信息、基于 IMS 集成的短信以及 MmTel 功能集成),以提供语音通话和视频通话功能。ImsService API 也是一种 Android System API,这意味着您可以直接针对 Android SDK(而不是来源)构建这种 API。预安装在设备上的 IMS 应用也可以配置为可通过 Play 商店更新。
示例和来源
为了便于进行测试和开发,Android 在 AOSP 中提供了一个应用,它可以实现 ImsService API 的某些部分。您可以在以下位置找到该应用:/testapps/ImsTestService。
您可以在 ImsService 和该 API 的其他类中找到关于 ImsService API 的文档。
实现
ImsService API 是一种高级 API,它可以让您通过多种方式实现 IMS(具体取决于可用的硬件)。例如,根据 IMS 实现是完全在应用处理器上进行,还是部分或完全分流到调制解调器,实现也会发生相应的变化。Android 不提供用于分流到基带处理器的公共 HAL,因此您必须使用调制解调器的 HAL 扩展来进行所有的分流。
与较早的 IMS 实现之间的兼容性
尽管 Android 9 包含 ImsService API,但使用较早的 IMS 实现的设备无法支持该 API。对于这类设备,较早的 AIDL 接口和封装容器类已移至 android.telephony.ims.compat 命名空间。升级到 Android 9 后,旧款设备必须执行以下操作才能继续支持旧版 API。
更改 ImsService 实现的命名空间,以从 android.telephony.ims.compat 命名空间 API 进行扩展。
修改 AndroidManifest.xml 中的 ImsService 服务定义