การดำเนินการจ่ายเงินฉุกเฉิน

อุปกรณ์เคลื่อนที่ทั้งหมดที่จำหน่ายในอินเดียตั้งแต่วันที่ 1 มกราคม 2017 จะต้องมีปุ่มฉุกเฉินเพื่อให้เป็นไปตามข้อกำหนดของกระทรวงโทรคมนาคมของอินเดีย (DoT) เพื่อปฏิบัติตามข้อกำหนดด้านกฎระเบียบเหล่านี้ Android ได้รวมการใช้งานอ้างอิงของฟีเจอร์การจ่ายในกรณีฉุกเฉินเพื่อเปิดใช้ปุ่มฉุกเฉินในอุปกรณ์ Android

คุณลักษณะนี้เปิดใช้งานตามค่าเริ่มต้นใน Android 8.0 และรุ่นที่สูงกว่า แต่ต้องได้รับการแก้ไขในรุ่นก่อนหน้าที่มีอยู่ ปัจจุบัน คุณลักษณะนี้มีเป้าหมายเฉพาะกับอุปกรณ์ที่ขายในตลาดอินเดีย แต่สามารถรวมอยู่ในอุปกรณ์ทั้งหมดที่จำหน่ายทั่วโลก เนื่องจากคุณลักษณะนี้ไม่มีผลนอกประเทศอินเดีย

ตัวอย่างและที่มา

คุณลักษณะการจ่ายในกรณีฉุกเฉินถูกนำมาใช้ใน เฟรมเวิร์ก/โปรเจ็กต์ฐาน ของ Android Open Source Project (AOSP) มีให้บริการในสาขาหลักและเปิดใช้งานตามค่าเริ่มต้นใน Android 8.0 และรุ่นที่สูงกว่า

ปัจจุบันฟีเจอร์นี้พร้อมใช้งานในสาขาและคอมมิตต่อไปนี้ ข้อมูลนี้จัดทำขึ้นเพื่อให้ผู้ผลิตอุปกรณ์สามารถแก้ไขการเปลี่ยนแปลงที่จำเป็นในรุ่นที่มีอยู่ได้อย่างง่ายดาย ผู้ผลิตอุปกรณ์ที่ต้องการใช้คุณลักษณะการชำระเงินฉุกเฉินอ้างอิง AOSP สามารถเลือกคอมมิตจากสาขาที่เกี่ยวข้องลงในบิลด์ของตนเองได้

ตารางที่ 1. Cherry-picks สำหรับคุณลักษณะการชำระเงินฉุกเฉินอ้างอิง AOSP

สาขา มุ่งมั่น
หลัก e0c3c66 เพิ่มคุณสมบัติการจ่ายฉุกเฉิน
42a4338 เพิ่มคำแปลสำหรับสตริงการดำเนินการฉุกเฉิน
4df8d64 แก้ไขปัญหาที่การชำระเงินฉุกเฉินจะแสดงบนแท็บเล็ต
ตังเม-dev e6680d9 เพิ่มคุณสมบัติการจ่ายฉุกเฉิน
95e1865 เพิ่มคำแปลสำหรับสตริงการดำเนินการฉุกเฉิน
a70bb89 แก้ไขปัญหาที่การชำระเงินฉุกเฉินจะแสดงบนแท็บเล็ต
มาร์ชแมลโลว์-dev cd22634 เพิ่มคุณสมบัติการจ่ายฉุกเฉิน
13f51c6 เพิ่มคำแปลสำหรับสตริงการดำเนินการฉุกเฉิน
6531666 แก้ไขปัญหาที่การชำระเงินฉุกเฉินจะแสดงบนแท็บเล็ต
อมยิ้ม-mr1-dev 5fbc86b เพิ่มคุณสมบัติการจ่ายฉุกเฉิน
1b60879 เพิ่มคำแปลสำหรับสตริงการดำเนินการฉุกเฉิน
d74366f แก้ไขปัญหาที่การชำระเงินฉุกเฉินจะแสดงบนแท็บเล็ต

การนำไปปฏิบัติ

ฟีเจอร์การจ่ายในกรณีฉุกเฉินไม่มีการเปลี่ยนแปลงกับ API ที่เปิดเผยผ่านชุดพัฒนาซอฟต์แวร์ Android (SDK) เมื่อเปิดใช้งานและเปิดใช้งาน คุณลักษณะนี้จะมีทริกเกอร์สองตัวที่สามารถเริ่มต้นการโทรฉุกเฉินไปที่ 112 ซึ่งเป็นหมายเลขฉุกเฉินเดียวที่ใช้ในอินเดียและอยู่ภายใต้ข้อบังคับของ Indian DoT

การโทรฉุกเฉินจะเริ่มต้นโดย:

กดปุ่ม EMERGENCY ค้างไว้
บนหน้าจอล็อค
แตะตัวเลือก ฉุกเฉิน
ในเมนูการดำเนินการโดยรวม
ปุ่มฉุกเฉิน
รูปที่ 1. ปุ่ม ฉุกเฉิน บนหน้าจอล็อค
ตัวเลือกฉุกเฉิน
รูปที่ 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 จัดเตรียม API ภายในเพื่อใช้คุณสมบัติ Emergency Affordance โดยมีวิธีการในการเริ่มต้นการโทรฉุกเฉินและการสอบถามขณะรันไทม์ว่าควรเปิดใช้งานคุณสมบัตินี้หรือไม่

  • void performEmergencyCall() เริ่มการโทรฉุกเฉิน
  • boolean needsEmergencyAffordance() กำหนดว่าคุณลักษณะนี้ควรจะแอ็คทีฟหรือไม่

คุณลักษณะนี้อาจถูกปิดใช้งานอย่างถาวรในขณะสร้างโดยการเปลี่ยนค่าคงที่ EmergencyAffordanceManager.ENABLED เป็น false ซึ่งจะทำให้ needsEmergencyAffordance() ส่งคืนค่าเท็จเสมอ และป้องกันไม่ให้ EmergencyAffordanceService เริ่มทำงาน

บริการช่วยเหลือฉุกเฉิน

EmergencyAffordanceService เป็นบริการระบบที่ตรวจสอบรหัสประเทศมือถือ (MCC) ของเครือข่ายโทรศัพท์เคลื่อนที่ทั้งหมดที่ตรวจพบและ MCC ของซิมการ์ดที่ติดตั้ง หากซิมการ์ดที่ติดตั้งหรือเครือข่ายมือถือที่ตรวจพบมี MCC ที่ตรงกับ MCC ของอินเดีย (404 หรือ 405) คุณสมบัตินี้จะเปิดใช้งาน ซึ่งหมายความว่าสามารถเปิดใช้งานคุณสมบัตินี้ได้ในอินเดียแม้ว่าจะไม่มีซิมการ์ดก็ตาม สันนิษฐานว่าเครือข่ายมือถือจะอนุญาตให้ลงทะเบียนการโทรฉุกเฉินได้แม้ว่าจะไม่ได้ติดตั้งซิมการ์ดก็ตาม คุณลักษณะนี้จะยังคงเปิดใช้งานจนกว่าจะติดตั้ง SIM ที่ไม่ใช่ของอินเดีย และไม่มีเครือข่ายใดที่ตรวจพบมี MCC ที่ตรงกัน

ทรัพยากรและการตั้งค่าต่อไปนี้ส่งผลต่อการทำงานของฟีเจอร์การจ่ายในกรณีฉุกเฉิน หากประเภทการกำหนดค่าคือ:

  • Resource เป็นทรัพยากรภายในที่กำหนดใน frameworks/base/core/res/res/values/config.xml
  • การตั้งค่า เป็นการตั้งค่าที่จัดเก็บไว้ในผู้ให้บริการการตั้งค่าระบบ

ตารางที่ 2. การตั้งค่าที่ส่งผลต่อพฤติกรรมของคุณลักษณะการจ่ายฉุกเฉิน

ประเภทการกำหนดค่า ชื่อ คำอธิบาย
ทรัพยากร config_emergency_call_number หมายเลขโทรศัพท์ที่จะโทรออกโดยอัตโนมัติเมื่อมีการโทรฉุกเฉิน
ประเภท: สตริง
ค่าเริ่มต้น: 112
ทรัพยากร config_emergency_mcc_codes อาร์เรย์ของจำนวนเต็มที่แสดง MCC ที่ควรใช้งานคุณลักษณะนี้
ประเภท: อาร์เรย์ของจำนวนเต็ม
ค่าเริ่มต้น: {404,405}
การตั้งค่า กรณีฉุกเฉิน_ราคาไม่แพง_หมายเลข การตั้งค่าทั่วโลกแทนที่ด้วยหมายเลขที่จะโทรด้วยเงินฉุกเฉิน สิ่งนี้จะมีผลกับอิมเมจบิลด์ที่แก้ไขข้อบกพร่องได้เท่านั้น (เช่น ประเภทบิลด์คือ userdebug หรือ eng) สิ่งนี้มีไว้สำหรับการทดสอบเท่านั้น
ประเภท: สตริง
ค่าเริ่มต้น: ไม่ได้ตั้งค่า
การตั้งค่า Force_emergency_affordance การตั้งค่าส่วนกลางว่าควรแสดงค่าใช้จ่ายฉุกเฉินโดยไม่คำนึงถึงสถานะของอุปกรณ์หรือไม่ สิ่งนี้มีไว้สำหรับการทดสอบเท่านั้น
ประเภท: บูลีน (1 หรือ 0)
ค่าเริ่มต้น: ไม่ได้ตั้งค่า --> 0

เปิดใช้งานการโทรฉุกเฉินไปที่ 112

คุณสมบัติการชำระเงินฉุกเฉินจะเชื่อมต่อการโทรโดยใช้แป้นโทรฉุกเฉิน เพื่อให้สามารถเชื่อมต่อการโทรได้เมื่อหน้าจอล็อคทำงานอยู่ ตัวเรียกเลขหมายฉุกเฉินจะเชื่อมต่อการโทรกับรายการหมายเลขที่ได้รับจาก Radio Interface Layer (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:

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

คำสั่งต่อไปนี้สามารถใช้เพื่อบังคับให้เปิดใช้งานคุณสมบัติการช่วยเหลือฉุกเฉินได้ แม้ว่าจะไม่มีการตรวจพบเครือข่ายมือถือของอินเดียหรือใส่ซิมการ์ดของอินเดียก็ตาม

adb shell settings put global force_emergency_affordance 1

อย่างน้อยที่สุดขอแนะนำให้ทดสอบกรณีต่อไปนี้:

  • เมื่อเปิดใช้งานแล้ว ให้กดปุ่ม EMERGENCY บนหน้าจอล็อคค้างไว้ (รูปที่ 1) เพื่อเริ่มต้นการโทรไปยังหมายเลขฉุกเฉินที่ระบุ
  • เมื่อเปิดใช้งานแล้ว รายการ ฉุกเฉิน บนเมนูการดำเนินการโดยรวมจะปรากฏขึ้น และการแตะจะเป็นการเริ่มต้นการโทรไปยังหมายเลขฉุกเฉินที่ระบุ
  • คุณสมบัตินี้ จะไม่ถูกเปิดใช้งาน หากไม่มีเครือข่ายมือถือของอินเดียที่ตรวจพบโดยติดตั้งซิมการ์ดที่ไม่ใช่ของอินเดีย
  • คุณสมบัตินี้ จะเปิดใช้งาน บนอุปกรณ์เมื่อติดตั้งซิมการ์ดอินเดีย โดยไม่คำนึงถึงเครือข่ายมือถือที่ตรวจพบ
  • คุณสมบัตินี้ เปิดใช้งาน บนอุปกรณ์เมื่อมีเครือข่ายมือถือของอินเดีย โดยไม่คำนึงถึงซิมการ์ดที่ติดตั้ง

หากอุปกรณ์รองรับซิมการ์ดหลายอัน การทดสอบควรตรวจสอบให้แน่ใจว่าการตรวจจับ SIM MCC ทำงานอย่างถูกต้องในแต่ละช่องใส่ซิม ฟีเจอร์การจ่ายในกรณีฉุกเฉินไม่ได้อยู่ภายใต้ความเข้ากันได้ของ Android ดังนั้นจึงไม่มีการทดสอบชุดทดสอบความเข้ากันได้ (CTS)

คำถามที่พบบ่อย

ถาม หมายเลขฉุกเฉิน 112 ยังไม่เปิดให้บริการในอินเดีย ยังควรใช้อยู่ไหม?

112 คือหมายเลขที่จะใช้ในอินเดียเป็นจุดตอบรับความปลอดภัยสาธารณะ (PSAP) ตามที่กำหนดโดยระบบการสื่อสารและการตอบสนองต่อเหตุฉุกเฉินแบบบูรณาการ (IECRS) จนกว่าจะเริ่มใช้ PSAP การโทรทั้งหมดไปที่ 112 จะถูกส่งไปยังหมายเลขฉุกเฉิน 100 ที่มีอยู่ (แม้ว่านี่จะเป็นความรับผิดชอบของผู้ให้บริการ ไม่ใช่ Android)

ถาม แล้วทริกเกอร์อื่นๆ เช่น การกดปุ่มเปิดปิดสามครั้งล่ะ

ผู้ผลิตอุปกรณ์อาจเลือกใช้ทริกเกอร์เพิ่มเติม อย่างไรก็ตาม ในขณะที่ Indian DoT อนุมัติการแตะสามครั้งที่ปุ่มเปิดปิดด้วยฮาร์ดแวร์ ทริกเกอร์นี้ ไม่รองรับ การใช้งานอ้างอิง AOSP เนื่องจากแอปพลิเคชันที่ใช้กันอย่างแพร่หลายบางตัว (เช่น แอปกล้อง) ใช้ท่าทางของปุ่มเปิดปิดซึ่งรวมถึงการแตะปุ่มเปิดปิดซ้ำหลายครั้ง แอปพลิเคชันดังกล่าวอาจรบกวนการทำงานของแป้นโทรฉุกเฉิน หรือผู้ใช้อาจกดปุ่มฉุกเฉินโดยไม่ตั้งใจขณะพยายามเรียกใช้การดำเนินการในแอปพลิเคชันเหล่านี้