[适用版本]
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配置紧急号码(详细方法请参考FAQ21186)
支持根据国家进行紧急号码配置
支持根据特定运营商进行紧急号码配置
支持根据地区进行进行紧急号码配置
支持service category(代码不支持)
支持emergency routing(配置假紧急号码)
支持根据有卡、无卡配置紧急号码
两种配置方法对比如下:
可以根据上面的支持程度选择合适的紧急号码配置方法。
注意:Google ECC database没有经过完整的验证和测试,如果要使用必须自行验证各国紧急号码的完整和正确性。
[如何更新AOSP eccdata]
1. 修改input/eccdata.txt
2. 更新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或者直接执行脚本会有错误)
3. Make TeleService
4. Push TeleService.apk to system/priv-app/TeleService
5. Reboot device
6. 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: <EccEntry Ecc="888" Category="0" Condition="1" Plmn="440 FFF"/>
2. 客制化特定运营商的紧急号码
方法2:修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入特定运营商MCC/MNC的紧急号码,
ex: <EccEntry Ecc="888" Category="0" Condition="1" Plmn="440 01"/>
3. 客制化特定大区的紧急号码(Ex: APAC, LATAM):把一组国家组合在一起配置减少ECC配置的数量 (Q上新增功能)
方法2:
1. 定义并添加国家到区域表,多个国家MCC用‘,’分隔
static Region sRegionTable[MAX_REGION_SIZE] = {
{"APAC", "460,440,505"}, // China, Japan Australia
{"LATAM", "724"},// Brazilian
{"EMEA", "234"} // UK
};
2. 修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入Plmn为预定义region的紧急号码,
ex: <EccEntry Ecc="888" Category="0" Condition="1" Plmn="APAC"/>
4. 客制化假紧急号码
方法2:修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入condition为2的紧急号码,
ex: <EccEntry Ecc="888" Category="0" Condition="2" Plmn="440 01"/>
5. 客制化有卡紧急号码(无卡不是紧急号码)Q上新增功能
方法2:
1. 修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入condition为3的紧急号码,
ex: <EccEntry Ecc="888" Category="0" Condition="3" Plmn="440 01"/>
2. 同时需要删除AOSP eccdata里的紧急号码(如果有配置相同的紧急号码)
6. 客制化无卡紧急号码(有卡不是紧急号码)
方法2:
1. 修改vendor/mediatek/proprietary/external/EccList/ecc_list.xml,加入condition为0的紧急号码,
ex: <EccEntry Ecc="888" Category="0" Condition="0" Plmn="440 01"/>
2. 同时需要删除AOSP eccdata里的紧急号码(如果有配置相同的紧急号码)