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

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

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

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

ฟีเจอร์การช่วยเหลือในกรณีฉุกเฉินมีการใช้งานในโปรเจ็กต์frameworks/base ของโครงการโอเพนซอร์ส Android (AOSP) ฟีเจอร์นี้พร้อมใช้งานในสาขาหลักและเปิดใช้โดยค่าเริ่มต้นในรุ่น Android 8.0 ขึ้นไป

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

ตารางที่ 1 เลือกมาเพื่ออ้างอิงฟีเจอร์การช่วยเหลือในกรณีฉุกเฉินของ AOSP

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

การใช้งาน

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

การโทรหาหมายเลขฉุกเฉินจะเริ่มต้นด้วยการดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

กดปุ่มเหตุฉุกเฉิน
บนหน้าจอล็อกค้างไว้
การแตะตัวเลือกเหตุฉุกเฉิน
ใน เมนูการทำงานแบบรวม
ปุ่มฉุกเฉิน

รูปที่ 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

EmergencyAffordanceManager มี API ภายในสำหรับใช้ฟีเจอร์ EmergencyAffordance โดยจะมีวิธีการเริ่มการโทรฉุกเฉินและการค้นหาขณะรันไทม์ว่าควรเปิดใช้ฟีเจอร์หรือไม่

  • void performEmergencyCall() เริ่มการโทรหาหมายเลขฉุกเฉิน
  • boolean needsEmergencyAffordance(). กำหนดว่าฟีเจอร์ควรทำงานหรือไม่

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

EmergencyAffordanceService

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

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

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

ตารางที่ 2 การตั้งค่าที่ส่งผลต่อลักษณะการทํางานของฟีเจอร์การช่วยเหลือในกรณีฉุกเฉิน

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

เปิดใช้การโทรหาหมายเลขฉุกเฉิน 112

ฟีเจอร์การช่วยเหลือพิเศษในกรณีฉุกเฉินจะเชื่อมต่อการโทรโดยใช้เครื่องมือโทรฉุกเฉินเพื่อให้โทรได้เมื่อหน้าจอล็อกทำงานอยู่ ตัวโทรหาหมายเลขฉุกเฉินจะเชื่อมต่อการโทรกับหมายเลขในรายการที่ Radio Interface Layer (RIL) ระบุผ่านพร็อพเพอร์ตี้ระบบเท่านั้น ดังนี้

  • ril.ecclist เมื่อไม่ได้ติดตั้งซิม
  • ril.ecclistSimSlotNumber เมื่อใส่ซิม และ SimSlotNumber คือรหัสช่องของสมาชิกเริ่มต้น

ผู้ผลิตอุปกรณ์ที่ใช้ฟีเจอร์การช่วยเหลือในกรณีฉุกเฉินต้องตรวจสอบว่าอุปกรณ์ในอินเดียเปิดใช้ 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

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

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

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

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

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

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

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

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