自 2017 年 1 月 1 日起在印度銷售的所有行動裝置都必須提供緊急按鈕,以滿足印度電信部 (DoT) 的要求。為了滿足這些監管要求,Android 包含了緊急可供功能的參考實現,以在 Android 裝置上啟用緊急按鈕。
此功能在 Android 8.0 及更高版本中預設為啟用,但必須修補到早期版本的現有版本中。目前,此功能專門針對在印度市場銷售的設備,但可以包含在全球銷售的所有設備上,因為該功能在印度以外的地區沒有影響。
範例和來源
緊急可供性功能在 Android 開源專案 (AOSP)框架/基礎專案中實現。它在主分支中可用,並且在 Android 8.0 及更高版本中預設為啟用。
此功能目前在以下分支和提交中可用。提供此資訊是為了使設備製造商能夠輕鬆地將必要的變更修補到其現有版本中。希望實現 AOSP 參考緊急可供性功能的設備製造商可以從適用的分支中挑選提交到自己的版本中。
分支 | 提交 |
---|---|
主要的 | e0c3c66新增緊急可供性功能 42a4338新增了緊急操作字串的翻譯 4df8d64修正了平板電腦上顯示緊急可供性的問題 |
牛軋糖開發 | e6680d9新增緊急可供性功能 95e1865添加了緊急操作字串的翻譯 a70bb89修正了平板電腦上顯示緊急可供性的問題 |
棉花糖開發 | cd22634新增了緊急可供性功能 13f51c6新增了緊急操作字串的翻譯 6531666修正了緊急可供性在平板電腦上顯示的問題 |
棒棒糖-mr1-dev | 5fbc86b新增緊急可供性功能 1b60879新增了緊急操作字串的翻譯 d74366f修正了緊急可供性在平板電腦上顯示的問題 |
執行
緊急可供性功能不會對透過 Android 軟體開發工具包 (SDK) 公開的 API 進行任何變更。啟用並啟動後,該功能提供兩個觸發器,可以向 112 發起緊急呼叫,這是印度使用的唯一緊急號碼,也是印度交通部法規規定的。
緊急呼叫由下列任一方式發起:
長按緊急按鈕 在鎖定螢幕介面上 | 點選緊急選項 在全域操作選單中 |
---|---|
此功能引入了以下內部組件:
- EmergencyAffordanceManager
frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
- 緊急可供性服務
frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
緊急可供性管理器
EmergencyAffordanceManager 提供了一個內部 API 來使用緊急可供性功能。它提供了啟動緊急呼叫並在運行時查詢是否應啟用該功能的方法。
-
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
中定義的內部資源。 - 設置,它是儲存在系統設定提供者中的設置。
配置類型 | 姓名 | 描述 |
---|---|---|
資源 | 配置緊急呼叫號碼 | 發起緊急通話時自動撥打的電話號碼。 類型:字串 預設值:112 |
資源 | 配置_緊急_mcc_代碼 | 列出該功能應處於活動狀態的 MCC 的整數陣列。 類型:整數數組 預設值:{404,405} |
環境 | 緊急狀況可負擔號碼 | 全域設定會覆蓋緊急情況下撥打的號碼。這只會對可偵錯建置映像產生影響(即建置類型是 userdebug 或 eng)。這僅用於測試。 類型:字串 預設值:未設定 |
環境 | 強制緊急情況可供性 | 全域設置,無論設備狀態如何,是否都應顯示緊急功能。這僅用於測試。 類型:布林值(1 或 0) 預設值:未設定 --> 0 |
啟用緊急呼叫 112
緊急提示功能使用緊急撥號器連線呼叫,以便在鎖定畫面處於活動狀態時可以連線呼叫。緊急撥號器僅將通話連接至無線介面層 (RIL) 透過系統屬性提供的號碼清單:
-
ril.ecclist
(未安裝 SIM 時)。 -
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 插槽中的 SIM MCC 偵測都能正常運作。緊急可供性功能不受 Android 相容性的約束,因此沒有針對它的相容性測試套件 (CTS) 測試。
經常問的問題
Q:緊急號碼 112 尚未在印度投入使用。還應該使用嗎?
112 是印度將用作綜合緊急通訊和回應系統 (IECRS) 定義的公共安全應答點 (PSAP) 的號碼。在 PSAP 投入使用之前,所有撥打 112 的電話都將被路由至現有的 100 緊急號碼(儘管這是運營商的責任,而不是 Android)。
Q:其他觸發器(例如連按三次電源按鈕)怎麼樣?
設備製造商可以選擇實施額外的觸發器。然而,雖然印度交通部批准三次點擊硬體電源按鈕,但 AOSP 參考實作不支援此觸發器,因為一些廣泛使用的應用程式(例如相機應用程式)使用電源按鈕手勢,其中包括重複點擊電源按鈕。此類應用程式可能會幹擾緊急撥號器,或者使用者在嘗試觸發這些應用程式中的操作時可能會意外觸發緊急按鈕。