從 2017 年 1 月 1 日起在印度銷售的所有移動設備都必須提供緊急按鈕,以滿足印度電信部 (DoT) 的要求。為滿足這些監管要求,Android 包含了緊急提供功能的參考實現,以在 Android 設備上啟用緊急按鈕。
此功能在 Android 8.0 及更高版本中默認啟用,但必須修補到早期版本的現有版本中。目前,此功能專門針對在印度市場銷售的設備,但可以包含在全球銷售的所有設備上,因為該功能在印度以外的地區無效。
示例和來源
緊急供款功能在 Android 開源項目 (AOSP)框架/基礎項目中實現。它在 master 分支中可用,並且在 Android 8.0 及更高版本中默認啟用。
此功能目前在以下分支和提交中可用。提供此信息是為了使設備製造商能夠輕鬆地將必要的更改修補到其現有版本中。想要實現 AOSP 參考緊急可供性功能的設備製造商可以從適用的分支中挑選提交到他們自己的構建中。
分支 | 提交 |
---|---|
掌握 | e0c3c66添加了緊急提示功能 42a4338添加了緊急操作字符串的翻譯 4df8d64修復了平板電腦上顯示緊急功能的問題 |
牛軋糖開發 | e6680d9添加了緊急提示功能 95e1865添加了緊急操作字符串的翻譯 a70bb89修復了緊急提示會在平板電腦上顯示的問題 |
棉花糖開發 | cd22634添加了緊急提示功能 13f51c6添加了緊急操作字符串的翻譯 6531666修復了平板電腦上顯示緊急功能的問題 |
棒棒糖-mr1-dev | 5fbc86b添加了緊急提示功能 1b60879添加了緊急操作字符串的翻譯 d74366f修復了平板電腦上顯示緊急提示的問題 |
執行
Emergency Affordance 功能不會更改通過 Android 軟件開發工具包 (SDK) 公開的 API。啟用和激活後,該功能會提供兩個觸發器,可以向 112 發起緊急呼叫,這是印度使用的單一緊急號碼,並由印度 DoT 法規強制執行。
緊急呼叫由以下任一項發起:
長按緊急按鈕 在鎖屏上 | 點擊緊急選項 在全局操作菜單中 |
---|---|
此功能引入了以下內部組件:
- EmergencyAffordanceManager
frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
- EmergencyAffordanceService
frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
緊急供能經理
EmergencyAffordanceManager 提供了一個內部 API 來使用 Emergency Affordance 功能。它提供了啟動緊急呼叫和在運行時查詢是否應該啟用該功能的方法。
-
void performEmergencyCall()
。發起緊急呼叫。 -
boolean needsEmergencyAffordance()
。確定該功能是否應該處於活動狀態。
通過將EmergencyAffordanceManager.ENABLED
常量更改為false
,可以在構建時永久禁用該功能。這將導致needsEmergencyAffordance()
始終返回 false 並阻止EmergencyAffordanceService
啟動。
緊急援助服務
EmergencyAffordanceService
是一項系統服務,用於監控所有檢測到的蜂窩網絡的移動國家代碼 (MCC) 和已安裝 SIM 卡的 MCC。如果任何已安裝的 SIM 卡或檢測到的蜂窩網絡的 MCC 與印度的 MCC(404 或 405)之一匹配,則將啟用該功能。這意味著即使沒有 SIM 卡,也可以在印度啟用該功能。假設移動網絡將允許註冊緊急呼叫,即使沒有安裝 SIM 卡。在安裝非印度 SIM 並且檢測到的網絡都沒有匹配的 MCC 之前,該功能將保持啟用狀態。
以下資源和設置會影響緊急供能功能的行為。如果配置類型是:
- Resource ,它是定義在
frameworks/base/core/res/res/values/config.xml
中的內部資源。 - Setting ,它是存儲在系統設置提供程序中的設置。
配置類型 | 姓名 | 描述 |
---|---|---|
資源 | config_emergency_call_number | 發起緊急呼叫時自動撥打的電話號碼。 類型:字符串 默認值:112 |
資源 | config_emergency_mcc_codes | 一個整數數組,列出了該功能應該處於活動狀態的 MCC。 類型:整數數組 默認值:{404,405} |
環境 | Emergency_affordance_number | 全局設置覆蓋使用緊急提示呼叫的號碼。這只會對可調試的構建映像產生影響(即構建類型是 userdebug 或 eng)。這僅用於測試。 類型:字符串 默認值:未設置 |
環境 | force_emergency_affordance | 全局設置,無論設備狀態如何,是否都應顯示緊急可供性。這僅用於測試。 類型:布爾值(1 或 0) 默認值:未設置 --> 0 |
啟用緊急呼叫 112
緊急提示功能使用緊急撥號器連接呼叫,以便在鎖定屏幕處於活動狀態時可以連接呼叫。緊急撥號器僅通過系統屬性將呼叫連接到無線電接口層 (RIL) 提供的號碼列表:
- 沒有安裝 SIM 時的
ril.ecclist
。 -
ril.ecclist SimSlotNumber
插入 SIM 時,SimSlotNumber
是默認用戶的插槽 ID。
使用緊急提供功能的設備製造商必須確保印度的設備始終啟用 112 作為 RIL 中的緊急號碼。
驗證
在可調試版本上進行測試時,可以使用以下命令更改調用的編號:
adb shell settings put global emergency_affordance_number NUMBER_TO_CALL
儘管可以在普通用戶構建上設置此設置,但它將被忽略。要實際連接呼叫,該號碼必須在 RIL 提供的緊急號碼列表中。這可以使用從 userdebug 設備上的 root shell 執行的以下命令臨時設置:
setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"
即使在沒有檢測到印度移動網絡或未插入印度 SIM 卡的情況下,也可以使用以下命令強制啟用緊急提供功能。
adb shell settings put global force_emergency_affordance 1
建議至少測試以下情況:
- 激活後,長按鎖定屏幕上的緊急按鈕(圖 1)會向指定的緊急號碼發起呼叫。
- 一旦激活,全局操作菜單上的緊急項目就會出現,點擊它會啟動對指定緊急號碼的呼叫。
- 如果沒有檢測到安裝了非印度 SIM 卡的印度移動網絡,則不會激活該功能。
- 無論檢測到的移動網絡如何,只要安裝了印度 SIM 卡,該功能就會在設備上激活。
- 無論安裝了何種 SIM 卡,該功能都會在存在印度移動網絡的情況下在設備上激活。
如果設備包含支持多個 SIM 卡,則測試應確保 SIM MCC 檢測在每個 SIM 插槽中正常工作。 Emergency Affordance 功能不受 Android 兼容性的約束,因此沒有針對它的兼容性測試套件 (CTS) 測試。
經常問的問題
問:緊急電話 112 尚未在印度啟用。還應該使用嗎?
112 將在印度用作綜合應急通信和響應系統 (IECRS) 定義的公共安全應答點 (PSAP)。在 PSAP 投入使用之前,所有撥打 112 的電話都將轉接到現有的 100 緊急號碼(儘管這是運營商的責任,而不是 Android 的責任)。
問:其他觸發器(例如三次按下電源按鈕)呢?
設備製造商可以選擇實施額外的觸發器。然而,雖然印度 DoT 批准三次輕敲硬件電源按鈕,但 AOSP 參考實現不支持此觸發器,因為一些廣泛使用的應用程序(例如相機應用程序)使用電源按鈕手勢,包括重複點擊電源按鈕。此類應用程序可能會干擾緊急撥號器,或者用戶在嘗試觸發這些應用程序中的操作時可能會意外觸發緊急按鈕。