https://blog.csdn.net/lipengshiwo/article/details/52133620
一)概念:
紧急呼叫(Emergency Call),所谓紧急呼叫是指用手机拨打112、110、119、120之类的报警或求救号码。
紧急呼叫在很多国家都有设立热线,目的是令求助人在遇到危急情况时求救,使用警察、消防或救护的紧急服务。每个国家的求救电话号码可能会有差异。求救电话一般都由3个数字组成,以便求助人记忆和拨打。有些国家有几个求救电话号码,联络不同提供紧急服务的部门。这些号码的紧急性使各国都规定它们可以使用任何当时可用的网络。
欧洲和使用全球移动通信系统的移动电话,其求救电话号码大多统一为112,且只要能接受到讯号即可拨打,即使自家电信业者无讯号,别家电信系统业者有讯号亦可使用;甚至电话内没有插入SIM卡亦可拨打。此外若移动电话有设定键盘密码锁者,112是惟一可以不经解键盘锁就可直接拨打的号码,以争取时效让紧急状态时任一只电话都可紧急救助。
在中国,紧急呼叫以语音服务平台的形式展现,移动和联通的语音服务平台的提示各不相同。
二)紧急号码分类:
根据3Gpp的协议规定, 紧急电话分为三种类型:
1. 112 和911 在任何情况下都是紧急电话, 不管终端是否有插入SIM 卡.
当不插入SIM 卡的时候, 000, 08, 110, 118,119 和999 这些号码是紧急号码, 这些号码是预制在手机中的
有一些紧急号码是预制在SIM卡里面的, 比如999 在UK, 118,110和119 在日本等等. 当终端不在这些区域, 拨打这些号码的时候, 会当成一般的电话拨出.
按技术实现分:
1)走紧急通道的紧急拨号:
即真紧急拨号,走的紧急拨号通道
2)走普通电话通道的紧急拨号:
即假紧急拨号,走的普通拨号,只是拨号界面被改为紧急拨号界面而已。
比如110就打110,而不是听到诸如“火警请拨119。。。”之类的。
按业务分:
1)无卡紧急号码:
不插SIM卡可以打的真紧急号码
2)有卡紧急号码:
插了SIM卡可以打的真紧急号码
3)有卡假紧急号码:
插了SIM卡,但必须以普通电话打出的紧急拨号(界面显示紧急拨号),
比如在国内遇歹徒你打110,要你打通了还听到“火警请拨119”估计你想死的心都有了。
3)有卡特殊假紧急号码:
插了SIM卡,但必须以普通电话打出的紧急拨号,但同时界面显示特定的名称,
比如110显示Police
(三)特别说明:
对于无卡紧急拨号,因为网络侧根据各国运营商不同略有区别,具体说明见下:
根据3GPP 24008协议规定:如果在没有卡的情况下,按照协议规定是可以通过IMEI号发起业务请求:
Normally, the mobile station will be identified by an IMSI or a TMSI. However, if none of these identifiers is available in the mobile station, then the mobile station shall use the IMEI for identification purposes.
但是网络是否接收,需要看网络侧设定
For the establishment of a MM connection for an emergency call when no other MM connection is established (e.g. for an emergency call initiated without a SIM/USIM no other MM connections can exist) the decision on whether or not to apply the security procedures shall be made by the network
也就是说,能否无卡发起紧急呼叫,主要是有网络决定的,看网络是否使用了secuirity procedures。
四)紧急号码拨打流程(MTK)详见:[FAQ02892]
简单流程:
紧急呼叫流程 AP层判断是否紧急电话 --》 modem层判断是否紧急通话 --》 modem建立通话 --》返回Intent --》 界面显示(紧急/普通)
五)MTK代码
(详见:[FAQ02892] 紧急号码的管理及客制化方法)
(1)AP层
核心代码及主要方法:
PhoneNumberUtils.java
isEmergencyNumber(String number) //是否紧急号码
isSpecialEmergencyNumber(String dialString) //是否假紧急号码
PhoneNumberExt.java
isCustomizedEmergencyNumber(...) //是否紧急号码
isCustomizedEmergencyNumberExt(...) //是否自定义紧急号码
isSpecialEmergencyNumber(String dialString)//是否假紧急号码
(2)Modem层
由此结构体定义
const kal_uint16 ecc_default_num[ ][ECC_CUSTOM_DEFAULT_ECC_LENGTH + 1] = {
{0x0039, 0x0031, 0x0031, 0x0000, 1}, /* 911 */
{0x0031, 0x0031, 0x0032, 0x0000, 1}, /* 112 */
{0x0030, 0x0036, 0x0030, 0x0000, 1}, /* 060 */
{0x0000, 0x0000, 0x0000, 0x0000, 0}
};
全网通项目 紧急号码说明
紧急号码(Ecc)概念参考文档《紧急呼叫概述》
紧急号码说明
主要有以下几点导致Ecc策略和之前的不一致:
全网通加入了电信的Modem
电信网络在Ecc这一块和移动联通网络的处理规则不同
全网通走哪个Ecc网络取决于前一次有卡时的驻网状态(首次开机默认电信网络, 其实也就是modem会存储上一次的驻网信息供Ecc参考)
影响紧急号码表现的一共有两个因素:
手机是否按照紧急拨号拨出
网络侧是否按照紧急号码接入(这点电信和移动联通不一样)
手机侧紧急号码主要还是参考cdma_ecc_list.xml 和 ecc_list.xml,把这个理顺就可以了。
主要参数是Condition,
“0”:无SIM卡时做紧急号码拨出
“1”:总是做紧急号码拨出
“2”:有卡且驻网时会作为普通号码拨出,无卡或无网时紧急号码拨出
The attribute definition for tag EccEntry:
- Ecc: the emergnecy number
- Category: the service category
- Condition: there are following values:
- 0: ecc only when no sim
- 1: ecc always
- 2: MMI will show ecc but send to nw as normal call
<EccEntry Ecc="112" Category="0" Condition="1"/>
Ecc简单流程
AP层判断是否紧急电话
à 根据之前状态判断通过CDMA还是GSM拨出Ecc (即通过cdma modem还是gsm modem 拨出,gsm和modem用两套AT)
à modem层判断是否紧急通话
à modem建立通话
à 网络侧处理决定是否允许作为紧急拨号(或者声讯台)接入
à 返回Intent界面显示(紧急/普通)
附上之前的Ecc呼叫流程:
AP层判断是否紧急电话 à modem层判断是否紧急通话 à modem建立通话 à返回Intent à 界面显示(紧急/普通)
3. 无卡时紧急号码规则
紧急号码类型
选择的Ecc网络
原因
前一次有卡时注册的非CDMA网络
所有设置的紧急号码
声讯台
手机侧: MTK策略此Case会通过GSM网络拨打。
网络侧: 联通移动网络会把紧急拨号自动接入声讯台,对号码不做区分。
烧机后首次开机 / 前一次有卡时注册的非CDMA网络
112
声讯台
MTK策略此Case会通过GSM网络拨打。联通移动网络会自动接入声讯台。
假紧急号码(000,08,999,911,118等)
紧急通话界面且无声
(实际没拨通)
手机侧: MTK策略此Case会通过CDMA网络(电信)拨打。
网络侧: 电信网络把此紧急拨号自动接入其紧急拨号专用通道,并且对不同号码做不同处理。
1)对于110,119,120等真实报警电话会接入当地真实的报警平台。
2)对于非上述真实报警电话,不予分配紧急拨号通道,以免资源浪费。(所以会一直处在紧急拨号界面但没有声音,实际网络部分配资源导致是没有拨通)
真紧急号码
(110,119,120)
接入110呼叫中心
4. 有卡时紧急号码规则
- 参考cdma_ecc_list.xml 和 ecc_list.xml的配置
- 插双卡时不区分卡1卡2,默认按卡1拨出
- 插单卡时默认按所插卡槽拨出
5.问题修改建议
流程问题说明原因reject
显示界面问题建议修改