文章目录
适用版本
Android 10(Q)及以后版本
配置方法
从Android Q开始,google提供了新的紧急号码配置方法(packages/services/Telephony/ecc), 同时MTK还支持通过ecc_list.xml配置紧急号码,所以从Android Q开始可以有两种方法配置紧急号码:
方法1:使用Google eccdata配置紧急号码(详细方法请参考packages/services/Telephony/ecc/README.md)
NOTE: Because we override telephony service repo, if you want to change AOSP ECC, please modify following repo: vendor/mediatek/proprietary/packages/services/Telephony
- 支持根据国家进行紧急号码配置
- 不支持根据特定运营商进行紧急号码配置
- 不支持根据地区进行进行紧急号码配置
- 不支持service category(代码里目前不会读取)
- 不支持emergency routing(配置假紧急号码)
- 不支持根据有卡、无卡配置紧急号码
方法2:使用MTK ecc_list.xml配置紧急号码
- 支持根据国家进行紧急号码配置
- 支持根据特定运营商进行紧急号码配置
- 支持根据地区进行进行紧急号码配置
- 支持service category(代码不支持)
- 支持emergency routing(配置假紧急号码)
- 支持根据有卡、无卡配置紧急号码
两种配置方法对比如下:
Support status | AOSP(eccdata) | MTK(ecc_list.xml) |
---|---|---|
Support customized by country | Yes | Yes |
Support customized by operator | No | Yes |
Support customized by region | No | Yes |
Support customized by | No | Yes |
Support service category | No | Yes |
Support emergency routing | No | Yes |
Support customized by with SIM/without SIM | No | Yes |
可以根据上面的支持程度选择合适的紧急号码配置方法。
NOTE:Google ECC database没有经过完整的验证和测试,如果要使用必须自行验证各国紧急号码的完整和正确性。
如何更新AOSP eccdata
-
修改input/eccdata.txt
-
更新ecc database
1). 根目录执行source and lunch
source build/envsetup.sh lunch full_xxx-eng (xxx是project名字)
2). cd进入到ecc的目录:
cd vendor/mediatek/proprietary/packages/services/Telephony/ecc
3). 执行:bash gen_eccdata.sh
(实测只能用bash来执行这个脚本,用sh或者直接执行脚本会有错误) -
Make TeleService
-
Push TeleService.apk to system/priv-app/TeleService
-
Reboot device
-
run ‘atest TeleServiceTests:EccDataTest#testEccDataContent’
举例
1. 客制化特定国家的紧急号码
方法1:修改vendor/mediatek/proprietary/packages/services/Telephony/ecc/input/eccdata.txt加入对应国家ISO的紧急号码
countries {
iso_code: “AF”
eccs {
phone_number: “119”
types: POLICE
types: FIRE
}
…
ecc_fallback: “112”
}
方法2:修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入对应国家MCC的紧急号码,MNC栏位必须为”FFF”或者“FF”
ex:
2. 客制化特定运营商的紧急号码
修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入特定运营商MCC/MNC的紧急号码,
ex: