紧急呼叫对于设备而言至关重要,因为它们必须可供 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)