紧急呼叫对于设备而言至关重要且必不可少,因为它们必须在满足全球各种运营商和监管要求的同时,为 Android 用户提供服务。Android 框架为用户提供快速且安全的紧急呼叫体验。
Android 10 通过使用来自 SIM 卡、网络、调制解调器和数据库的详细紧急号码列表,改进了对本地 Android 平台中紧急呼叫功能、维护和更新的支持。Android 10 还支持基于紧急服务类型(例如警察、消防或救护车)的紧急呼叫。Android 10 通过在 TelephonyManager API 中共享来自多个订阅的紧急号码,改进了对多 SIM 卡设备的支持。
在搭载 Radio HAL 1.4 的 Android 10 中,紧急呼叫得到了改进,方法是在 HAL 接口中将紧急呼叫与正常呼叫分开,以优化紧急呼叫路径,并允许设备拨打 Android 数据库中配置的相应紧急号码。
实现
要实现紧急呼叫和紧急号码功能,请实现以下 TelephonyManager
和硬件接口 API。
TelephonyManager API
实现以下 API
- 实现
getEmergencyNumberList
,以根据紧急号码来源(包括语言区域、SIM 卡、默认设置、调制解调器、Android 数据库和网络)获取用于紧急呼叫的有效紧急号码。对于每个紧急号码,指定相应的紧急服务类别,例如警察、救护车和消防。 - 实现
isEmergencyNumber
,以识别电话号码是否为紧急号码。 - 实现
isPotentialEmergencyNumber
,如果某个号码与任何紧急号码的起始数字相同,则将其识别为紧急号码。
紧急号码来源的值包括:
EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING
:号码来自网络信号EMERGENCY_NUMBER_SOURCE_SIM
:号码来自 SIM 卡EMERGENCY_NUMBER_SOURCE_DATABASE
:号码来自平台维护的数据库EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG
:号码来自调制解调器配置EMERGENCY_NUMBER_SOURCE_DEFAULT
:默认情况下可用的号码。号码 112 和 911 必须始终可用。当没有 SIM 卡时,000、08、110、999、118 和 119 必须可用。如需了解详情,请参阅 3GPP TS 22.101 中的第 10 节:紧急呼叫。
紧急服务类别的值包括:
UNSPECIFIED
:一般紧急呼叫,所有类别POLICE
:警察AMBULANCE
:救护车FIRE_BRIGADE
:消防队MARINE_GUARD
:海岸警卫队MOUNTAIN_RESCUE
:山区救援MIEC
:手动发起的 eCall (MIeC)AIEC
:自动发起的 eCall (AIeC)
如需了解详情,请参阅 3GPP TS 22.101 中的第 10 节:紧急呼叫。
硬件接口 API
在 IRadio.hal
中实现 emergencyDial
。在 IRadioResponse.hal
中实现 emergencyDialResponse
,以发送包含响应类型、序列号和错误信息的响应。
要报告当前紧急号码列表,请在 IRadioIndication.hal
中实现 currentEmergencyNumberList
。在 types.hal
中实现 EmergencyNumber
,其中包含有关紧急号码的信息,包括号码地址、移动国家/地区代码 (MCC)、移动网络代码 (MNC)、紧急服务类别、紧急统一资源名称 (URN) 和 紧急号码来源。
要指明如何处理紧急呼叫,请使用 EmergencyCallRouting
。可以根据需要使用紧急路由或正常呼叫路由请求紧急呼叫。如果此值为 UNKNOWN
,则路由将根据实现来决定。
验证
要验证您的实现,请运行以下 CTS 和 VTS 测试。
CTS 测试
VTS 测试
参考资料
如需了解有关相关技术规范和标准的更多信息,请参阅:
- 3GPP TS 22.101,第 10 节:紧急呼叫
- 3GPP TS 24.008,第 9.2.13.4 节:紧急号码列表
- 3GPP TS 23.167,第 6 节:功能说明
- 3GPP TS 24.503,第 5.1.6.8.1 节:常规
- RFC 5031:紧急服务和其他常用服务的统一资源名称 (URN)