[Android Q] 紧急号码配置

[适用版本]

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里的紧急号码(如果有配置相同的紧急号码)

要在 Android 设备上配置紧急号码,你可以使用系统的紧急拨号功能。以下是在 Android 应用中配置紧急号码的步骤: 1. 在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.CALL_PHONE" /> ``` 2. 在你的活动或服务中,使用以下代码来启动紧急拨号: ```java import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private static final String EMERGENCY_NUMBER = "911"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void callEmergencyNumber(View view) { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + EMERGENCY_NUMBER)); startActivity(intent); } } ``` 3. 在你的布局文件中,添加一个按钮或其他触发事件的视图,并将其与 `callEmergencyNumber` 方法关联。当用户点击该按钮时,紧急号码将被拨打。 ```xml <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Call Emergency Number" android:onClick="callEmergencyNumber"/> ``` 请注意,紧急号码在不同的国家和地区可能不同。在上述示例中,紧急号码被设置为 "911",这是在美国常用的紧急号码。你可以根据你所在的国家和地区,将 `EMERGENCY_NUMBER` 替换为适当的紧急号码。 另外,为了使用紧急拨号功能,你需要在 AndroidManifest.xml 文件中添加适当的权限,并确保在运行时获得相应的权限。 希望以上信息对你有帮助!如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧时旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值