自 2017 年 1 月 1 日起,所有在印度銷售的行動裝置都必須提供緊急按鈕,以符合印度電信部 (DoT) 規定。為符合這些法規要求,Android 內建了緊急情況操作提示功能的參考實作項目,可在 Android 裝置上啟用緊急按鈕。
根據預設,Android 8.0 以上版本會啟用這項功能,但必須在先前版本的現有版本中進行修補。這項功能僅適用於在印度市場銷售的裝置,但由於這項功能在印度以外的地區沒有任何影響,因此可納入全球銷售的所有裝置。
範例和來源
緊急操作空間功能已在 Android 開放原始碼計畫 (AOSP) frameworks/base 專案中實作。這項功能可在主分支中使用,並預設在 Android 8.0 以上版本中啟用。
這項功能適用於下列分支和提交。我們提供這項資訊,方便裝置製造商輕鬆將必要變更內容修補至現有版本。如要實作 AOSP 參考緊急情況提示功能,裝置製造商可以從適用的分支中挑選要提交的內容,並納入自家版本。
表 1. 針對 AOSP 參考緊急操作空間功能的挑選項目
Branch | 修訂版本 |
---|---|
主要 | e0c3c66
新增緊急操作功能 42a4338 新增緊急動作字串的翻譯 4df8d64 修正平板電腦會顯示緊急操作功能的問題 |
nougat-dev | e6680d9
新增緊急操作提示功能 95e1865 新增緊急動作字串的翻譯 a70bb89 修正平板電腦會顯示緊急操作提示功能的問題 |
marshmallow-dev | cd22634
新增緊急操作功能 13f51c6 新增緊急動作字串的翻譯 6531666 修正平板電腦會顯示緊急操作功能的問題 |
lollipop-mr1-dev | 5fbc86b
新增緊急操作提示功能 1b60879 新增緊急動作字串的翻譯 d74366f 修正平板電腦會顯示緊急操作提示功能的問題 |
實作
緊急情況提示功能不會變更透過 Android 軟體開發套件 (SDK) 公開的 API。啟用這項功能後,系統會提供兩個觸發條件,可啟動撥打印度緊急電話號碼 112 的緊急電話。112 是印度 DoT 法規規定的單一緊急電話號碼。
緊急電話可透過以下方式撥打:
長按螢幕鎖定畫面上的「EMERGENCY」按鈕 |
輕觸全球動作選單中的「緊急求救」選項 |
---|---|
![]() 圖 1. 螢幕鎖定畫面上的「EMERGENCY」按鈕。 |
![]() 圖 2. 全球動作選單中的緊急求救動作 (可透過長按電源鍵存取)。 |
這項功能會引入下列內部元件:
- EmergencyAffordanceManager
frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
- EmergencyAffordanceService
frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
EmergencyAffordanceManager
EmergencyAffordanceManager 提供內部 API,可用於使用緊急提示功能。這項類別提供方法,可在執行階段啟動緊急電話,並查詢是否應啟用這項功能。
void performEmergencyCall()
:啟動緊急電話。boolean needsEmergencyAffordance()
:判斷是否應啟用該功能。
您可以將 EmergencyAffordanceManager.ENABLED
常數變更為 false
,藉此在建構期間永久停用這項功能。這會導致 needsEmergencyAffordance()
一律傳回 false,並防止 EmergencyAffordanceService
啟動。
EmergencyAffordanceService
EmergencyAffordanceService
是系統服務,可監控所有偵測到的行動網路的行動裝置國家/地區代碼 (MCC),以及已安裝 SIM 卡的 MCC。如果已安裝的任何 SIM 卡或偵測到的行動網路,其 MCC 與印度的 MCC (404 或 405) 相符,則會啟用這項功能。也就是說,即使沒有 SIM 卡,這項功能仍可在印度啟用。假設行動網路允許註冊緊急電話,即使沒有安裝 SIM 卡也一樣。在安裝非印度 SIM 卡且偵測到的網路中沒有任何一個與 MCC 相符之前,這項功能會持續啟用。
以下資源和設定會影響緊急提示功能的行為。如果設定類型為:
- Resource:這是
frameworks/base/core/res/res/values/config.xml
中定義的內部資源。 - 設定:儲存在系統設定提供者中的設定。
表 2. 影響緊急提示功能行為的設定
設定類型 | 名稱 | 說明 |
---|---|---|
資源 | config_emergency_call_number | 在啟動緊急電話時自動撥打的電話號碼。 類型:字串 預設值:112 |
資源 | config_emergency_mcc_codes | 整數陣列,列出應啟用這項功能的「我的客戶中心」。 類型:整數陣列 預設值:{404,405} |
設定 | emergency_affordance_number | 全域設定會覆寫緊急輔助功能的電話號碼。這項設定只會影響可偵錯的建構映像檔 (也就是建構類型為 userdebug 或 eng)。這項功能僅供測試。 類型:字串 預設值:未設定 |
設定 | force_emergency_affordance | 全域設定,無論裝置狀態為何,是否應顯示緊急操作提示功能。這項指令僅供測試。 類型:布林值 (1 或 0) 預設值:未設定 --> 0 |
啟用撥打 112 的緊急電話功能
緊急聯絡工具功能會使用緊急撥號工具連線,讓您在螢幕鎖定畫面處於啟用狀態時,也能撥打電話。緊急電話撥號器只會透過系統屬性,將來電連結至無線電介面層 (RIL) 提供的號碼清單:
ril.ecclist
(如果未安裝 SIM 卡)。ril.ecclistSimSlotNumber
是插入 SIM 卡時的值,SimSlotNumber
則是預設訂閱者的插槽 ID。
使用緊急狀況提示功能的裝置製造商必須確保印度的裝置一律在 RIL 中將 112 設為緊急電話號碼。
驗證
在可偵錯的版本上進行測試時,您可以使用下列指令變更呼叫的次數:
adb shell settings put global emergency_affordance_number NUMBER_TO_CALL
雖然這項設定可在一般使用者版本中設定,但系統會忽略這項設定。如要實際連線通話,該號碼必須在 RIL 提供的緊急電話號碼清單中。您可以使用下列指令,在 userdebug 裝置的 root 殼層中執行,暫時設定此值:
setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"
即使系統未偵測到印度行動網路或未插入印度 SIM 卡,您也可以使用下列指令強制啟用緊急操作功能。
adb shell settings put global force_emergency_affordance 1
建議您至少測試下列情況:
- 啟用後,只要長按鎖定畫面上的「EMERGENCY」按鈕 (圖 1),即可撥打指定的緊急電話。
- 啟用後,全域動作選單上會顯示「緊急電話」項目,輕觸該項目即可撥打指定的緊急電話號碼。
- 如果未偵測到印度行動網路,且裝有非印度 SIM 卡,則這項功能不會啟用。
- 安裝印度 SIM 卡時,無論偵測到的行動網路為何,這項功能都會在裝置上啟用。
- 無論裝置插入哪張 SIM 卡,只要有印度行動網路,這項功能就會在裝置上啟用。
如果裝置支援多個 SIM 卡,測試時應確保 SIM 卡 MCC 偵測功能在每個 SIM 卡插槽中都能正常運作。緊急操作提示功能不受 Android 相容性規範,因此沒有相容性測試套件 (CTS) 測試。
常見問題
問:印度尚未啟用緊急電話號碼 112。是否仍應使用?
112 是印度的緊急電話號碼,用於聯繫公眾安全緊急應變中心 (PSAP),這項服務由整合式緊急通訊和回應系統 (IECRS) 定義。在 PSAP 啟用前,所有撥打至 112 的電話都會轉接至現有的 100 緊急電話號碼 (但這項服務由電信業者負責,而非 Android)。
問:其他觸發事件 (例如三按電源鍵) 呢?
裝置製造商可以實作其他觸發條件。不過,雖然印度 DoT 核准了輕觸硬體電源鍵三下,但 AOSP 參考實作中不支援這項觸發動作,因為某些廣泛使用的應用程式 (例如相機應用程式) 會使用電源鍵手勢,包括重複輕觸電源鍵。這類應用程式可能會干擾緊急電話撥號程式,或是使用者在嘗試觸發這些應用程式中的動作時,不小心觸發緊急按鈕。