Triển khai tính năng Cung cấp chức năng khẩn cấp

Tất cả thiết bị di động được bán ở Ấn Độ từ ngày 1 tháng 1 năm 2017 đều phải có nút báo động để đáp ứng các yêu cầu của Bộ Viễn thông Ấn Độ (DoT). Để đáp ứng các yêu cầu pháp lý này, Android có một bản triển khai tham chiếu của tính năng Emergency Affordance (Hỗ trợ khẩn cấp) nhằm cho phép nút báo động trên các thiết bị Android.

Tính năng này được bật theo mặc định trong các bản phát hành Android 8.0 trở lên, nhưng phải được vá vào các bản dựng hiện có của các bản phát hành trước đó. Tính năng này chỉ nhắm đến các thiết bị được bán ở thị trường Ấn Độ nhưng có thể được đưa vào tất cả các thiết bị được bán trên toàn thế giới vì tính năng này không có hiệu lực bên ngoài Ấn Độ.

Ví dụ và nguồn

Tính năng Thao tác khẩn cấp được triển khai trong dự án frameworks/base của Dự án nguồn mở Android (AOSP). R8 có trong nhánh phát hành mới nhất của Android và được bật theo mặc định trong các bản phát hành Android 8.0 trở lên.

Tính năng này có trong các nhánh và cam kết sau. Thông tin này được cung cấp để cho phép các nhà sản xuất thiết bị vá những thay đổi cần thiết vào các bản dựng hiện có của họ. Các nhà sản xuất thiết bị muốn triển khai tính năng Tham chiếu AOSP cho thao tác khẩn cấp có thể chọn lọc các cam kết từ các nhánh hiện hành vào bản dựng của riêng họ.

Bảng 1. Chọn lựa tính năng Emergency Affordance (Thao tác khẩn cấp) tham chiếu cho AOSP

Chi nhánh Cam kết
android-latest-release e0c3c66 Đã thêm tính năng Thao tác khẩn cấp
42a4338 Đã thêm bản dịch cho chuỗi thao tác khẩn cấp
4df8d64 Khắc phục vấn đề trong đó tính năng Thao tác khẩn cấp sẽ xuất hiện trên máy tính bảng
nougat-dev e6680d9 Đã thêm tính năng Thao tác khẩn cấp
95e1865 Đã thêm bản dịch cho chuỗi thao tác khẩn cấp
a70bb89 Đã khắc phục vấn đề khiến tính năng Thao tác khẩn cấp xuất hiện trên máy tính bảng
marshmallow-dev cd22634 Đã thêm tính năng Thao tác khẩn cấp
13f51c6 Đã thêm bản dịch cho chuỗi thao tác khẩn cấp
6531666 Khắc phục vấn đề khiến tính năng Thao tác khẩn cấp xuất hiện trên máy tính bảng
lollipop-mr1-dev 5fbc86b Thêm tính năng Thao tác khẩn cấp
1b60879 Thêm bản dịch cho chuỗi thao tác khẩn cấp
d74366f Khắc phục vấn đề trong đó tính năng Thao tác khẩn cấp sẽ xuất hiện trên máy tính bảng

Triển khai

Tính năng Thao tác khẩn cấp không có thay đổi nào đối với các API được cung cấp thông qua Bộ phát triển phần mềm (SDK) Android. Khi được bật và kích hoạt, tính năng này sẽ cung cấp 2 cơ chế kích hoạt có thể bắt đầu cuộc gọi khẩn cấp đến số 112. Đây là số điện thoại khẩn cấp duy nhất được sử dụng ở Ấn Độ và bắt buộc theo quy định của Bộ Viễn thông Ấn Độ.

Cuộc gọi khẩn cấp được thực hiện theo một trong hai cách:

Nhấn và giữ nút KHẨN CẤP
trên màn hình khoá
Nhấn vào lựa chọn Khẩn cấp
trong Trình đơn thao tác chung
Màn hình khoá có nút KHẨN CẤP

Hình 1. Nút KHẨN CẤP trên màn hình khoá.

Trình đơn thao tác chung có lựa chọn Khẩn cấp được chọn

Hình 2. Hành động khẩn cấp trên Trình đơn thao tác chung (truy cập bằng cách nhấn và giữ phím nguồn).

Tính năng này giới thiệu các thành phần nội bộ sau:

  • 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 cung cấp một API nội bộ để sử dụng tính năng Thao tác khẩn cấp. Nó cung cấp các phương thức để bắt đầu cuộc gọi khẩn cấp và truy vấn trong thời gian chạy nếu tính năng này cần được bật.

  • void performEmergencyCall(). Bắt đầu cuộc gọi khẩn cấp.
  • boolean needsEmergencyAffordance(). Xác định xem tính năng này có hoạt động hay không.

Bạn có thể tắt vĩnh viễn tính năng này tại thời điểm tạo bằng cách thay đổi hằng số EmergencyAffordanceManager.ENABLED thành false. Điều này khiến needsEmergencyAffordance() luôn trả về false và ngăn EmergencyAffordanceService bắt đầu.

EmergencyAffordanceService

EmergencyAffordanceService là một dịch vụ hệ thống giám sát Mã quốc gia trên thiết bị di động (MCC) của tất cả các mạng di động được phát hiện và MCC của các thẻ SIM đã lắp. Nếu bất kỳ thẻ SIM đã lắp hoặc mạng di động nào được phát hiện có MCC khớp với một trong các MCC của Ấn Độ (404 hoặc 405), thì tính năng này sẽ được bật. Điều này có nghĩa là bạn có thể bật tính năng này ở Ấn Độ ngay cả khi không có thẻ SIM. Giả sử mạng di động cho phép đăng ký cuộc gọi khẩn cấp ngay cả khi không lắp thẻ SIM. Tính năng này vẫn bật cho đến khi bạn lắp một thẻ SIM không phải của Ấn Độ và không có mạng nào được phát hiện có mã quốc gia (MCC) trùng khớp.

Các tài nguyên và chế độ cài đặt sau đây ảnh hưởng đến hành vi của tính năng Lối tắt khẩn cấp. Nếu loại cấu hình là:

  • Tài nguyên: Một tài nguyên nội bộ được xác định trong frameworks/base/core/res/res/values/config.xml.
  • Chế độ cài đặt: Chế độ cài đặt được lưu trữ trong trình cung cấp chế độ cài đặt hệ thống.

Bảng 2. Các chế độ cài đặt ảnh hưởng đến hành vi của tính năng Thao tác khẩn cấp

Loại cấu hình Tên Mô tả
Tài nguyên config_emergency_call_number Số điện thoại được quay số tự động khi cuộc gọi khẩn cấp được thực hiện.
Loại: Chuỗi
Mặc định: 112
Tài nguyên config_emergency_mcc_codes Một mảng số nguyên liệt kê các MCC mà tính năng này sẽ hoạt động.
Loại: Mảng số nguyên
Mặc định: {404,405}
Xem xét emergency_affordance_number Chế độ cài đặt chung ghi đè bằng số điện thoại để gọi bằng tính năng khẩn cấp. Điều này chỉ ảnh hưởng đến các hình ảnh có thể gỡ lỗi (tức là loại bản dựng là userdebug hoặc eng). Đây chỉ là thông báo dùng cho mục đích thử nghiệm.
Loại: Chuỗi
Mặc định: chưa đặt
Xem xét force_emergency_affordance Chế độ cài đặt chung, cho dù tính năng Thao tác khẩn cấp có được hiển thị hay không, bất kể trạng thái của thiết bị. Đây chỉ là thông báo dùng cho mục đích thử nghiệm.
Loại: Boolean (1 hoặc 0)
Mặc định: chưa đặt --> 0

Bật tính năng gọi khẩn cấp đến số 112

Tính năng Thao tác khẩn cấp kết nối cuộc gọi bằng trình quay số khẩn cấp để cuộc gọi có thể kết nối khi màn hình khoá đang hoạt động. Trình quay số khẩn cấp chỉ kết nối các cuộc gọi đến danh sách số điện thoại do Lớp giao diện vô tuyến (RIL) cung cấp thông qua thuộc tính hệ thống:

  • ril.ecclist khi không có SIM nào được cài đặt.
  • ril.ecclistSimSlotNumber khi lắp SIM và SimSlotNumber là mã nhận dạng khe cắm của thuê bao mặc định.

Các nhà sản xuất thiết bị sử dụng tính năng Thao tác khẩn cấp phải xác minh rằng các thiết bị ở Ấn Độ luôn bật số 112 làm số khẩn cấp trong RIL.

Xác nhận kết quả

Trong khi kiểm thử trên bản dựng có thể gỡ lỗi, bạn có thể thay đổi số được gọi bằng lệnh sau:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Mặc dù bạn có thể đặt chế độ cài đặt này trên bản dựng người dùng thông thường, nhưng chế độ cài đặt này sẽ bị bỏ qua. Để thực sự kết nối cuộc gọi, số điện thoại phải có trong danh sách số khẩn cấp do RIL cung cấp. Bạn có thể tạm thời đặt giá trị này bằng lệnh sau đây được thực thi từ shell gốc trên thiết bị userdebug:

setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"

Bạn cũng có thể dùng lệnh sau để buộc bật tính năng Thao tác khẩn cấp ngay cả khi không phát hiện thấy mạng di động của Ấn Độ hoặc không lắp thẻ SIM của Ấn Độ.

adb shell settings put global force_emergency_affordance 1

Bạn nên kiểm thử tối thiểu các trường hợp sau:

  • Khi được kích hoạt, thao tác nhấn và giữ nút KHẨN CẤP trên màn hình khoá (Hình 1) sẽ bắt đầu cuộc gọi đến số điện thoại khẩn cấp đã chỉ định.
  • Khi được kích hoạt, mục Khẩn cấp sẽ xuất hiện trên Trình đơn thao tác chung và khi bạn nhấn vào mục này, một cuộc gọi sẽ được thực hiện đến số điện thoại khẩn cấp đã chỉ định.
  • Tính năng này không được kích hoạt nếu không phát hiện thấy Mạng di động Ấn Độ khi đã lắp thẻ SIM không phải của Ấn Độ.
  • Tính năng này được kích hoạt trên thiết bị khi bạn lắp thẻ SIM của Ấn Độ, bất kể mạng di động được phát hiện là mạng nào.
  • Tính năng này được kích hoạt trên thiết bị khi có Mạng di động Ấn Độ, bất kể thẻ SIM đã cài đặt là gì.

Nếu một thiết bị hỗ trợ nhiều thẻ SIM, thì quá trình kiểm thử phải xác minh rằng tính năng phát hiện mã quốc gia của nhà mạng (MCC) của SIM hoạt động chính xác trong từng khe cắm SIM. Tính năng Thao tác khẩn cấp không chịu sự quản lý của Bộ kiểm tra tính tương thích (CTS) với Android, nên không có các kiểm thử CTS cho tính năng này.

Câu hỏi thường gặp

Hỏi: Số khẩn cấp 112 chưa được đưa vào sử dụng ở Ấn Độ. Tôi có nên tiếp tục sử dụng không?

112 là số điện thoại được dùng ở Ấn Độ làm Trung tâm nhận cuộc gọi cứu hộ công cộng (PSAP) theo định nghĩa của Hệ thống liên lạc và ứng phó khẩn cấp tích hợp (IECRS). Cho đến khi PSAP được đưa vào hoạt động, tất cả cuộc gọi đến số 112 đều được chuyển đến số khẩn cấp 100 hiện có (mặc dù đây là trách nhiệm của nhà mạng chứ không phải Android).

Hỏi: Còn những thao tác kích hoạt khác như nhấn nút nguồn 3 lần thì sao?

Nhà sản xuất thiết bị có thể triển khai các điều kiện kích hoạt bổ sung. Tuy nhiên, mặc dù Bộ Viễn thông Ấn Độ (DoT) phê duyệt việc nhấn nút nguồn phần cứng 3 lần, nhưng cơ chế kích hoạt này không được hỗ trợ trong quá trình triển khai tham chiếu AOSP vì một số ứng dụng được dùng rộng rãi (ví dụ: ứng dụng Máy ảnh) sử dụng cử chỉ nút nguồn bao gồm việc nhấn nút nguồn nhiều lần. Những ứng dụng như vậy có thể gây trở ngại cho trình quay số khẩn cấp hoặc người dùng có thể vô tình kích hoạt nút báo động trong khi cố gắng kích hoạt các hành động trong những ứng dụng này.