הטמעת תכונה לחירום

כל המכשירים הניידים שנמכרים בהודו החל מ-1 בינואר 2017 חייבים לספק לחצן מצוקה כדי לעמוד בדרישות של המחלקה לטלקומוניקציה (DoT) בהודו. כדי לעמוד בדרישות הרגולטוריות האלה, מערכת Android כוללת הטמעה לדוגמה של התכונה 'הקלה במקרה חירום', שמאפשרת להוסיף לחצן מצוקה במכשירי Android.

התכונה הזו מופעלת כברירת מחדל ב-Android מגרסה 8.0 ואילך, אבל צריך להוסיף לה תיקון בגרסאות קודמות. התכונה הזו מיועדת באופן בלעדי למכשירים שנמכרים בשוק ההודי, אבל אפשר לכלול אותה בכל המכשירים שנמכרים ברחבי העולם כי היא לא משפיעה מחוץ להודו.

דוגמאות ומקור

התכונה 'הקלה במקרה חירום' מוטמעת בפרויקט הקוד הפתוח של Android‏ (AOSP) frameworks/base. היא זמינה בענף הגרסה האחרונה של Android ומופעלת כברירת מחדל בגרסאות Android 8.0 ואילך.

התכונה הזו זמינה בענפים ובקובצי ה-commit הבאים. המידע הזה מסופק כדי לאפשר ליצרני מכשירים להוסיף את השינויים הנדרשים לבנייה הקיימת שלהם. יצרני מכשירים שרוצים להטמיע את התכונה 'אמצעי חירום' של AOSP יכולים לבחור את הקומיטים מהענפים הרלוונטיים ולשלב אותם בגרסאות הבנייה שלהם.

טבלה 1. בחירה סלקטיבית של תכונות ל-AOSP לצורך הפניה לתכונת ההקלה במקרה חירום

סניף שמירות (commit)
android-latest-release e0c3c66 נוספה התכונה 'התראה על מקרה חירום'
42a4338 נוספו תרגומים למחרוזת של פעולת חירום
4df8d64 תוקנה בעיה שבה התכונה 'התראה על מקרה חירום' הוצגה בטאבלטים
nougat-dev e6680d9 נוספה התכונה 'התראה על מצב חירום'
95e1865 נוספו תרגומים למחרוזת של פעולת חירום
a70bb89 תוקנה בעיה שבה התכונה 'התראה על מצב חירום' הוצגה בטאבלטים
marshmallow-dev cd22634 נוספה התכונה 'אמצעי זהירות במקרה חירום'
13f51c6 נוספו תרגומים למחרוזת של פעולת חירום
6531666 תוקנה בעיה שבה התכונה 'אמצעי זהירות במקרה חירום' הוצגה בטאבלטים
lollipop-mr1-dev 5fbc86b נוספה התכונה 'אמצעי בטיחות במקרה חירום'
1b60879 נוספו תרגומים למחרוזת של פעולות במקרה חירום
d74366f נפתרה בעיה שגרמה להצגת התכונה 'אמצעי בטיחות במקרה חירום' בטאבלטים

הטמעה

התכונה 'אמצעי הגנה במקרה חירום' לא משנה את ממשקי ה-API שנחשפים דרך ערכת הכלים לפיתוח תוכנה (SDK) של Android. אם התכונה מופעלת, היא מספקת שני טריגרים שיכולים להתחיל שיחת חירום למספר 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 פנימי לשימוש בתכונה 'הצגת אפשרויות חירום'. הוא מספק שיטות להפעלת שיחת החירום ולשאילתה בזמן הריצה אם התכונה צריכה להיות מופעלת.

  • void performEmergencyCall(). מתחיל שיחת חירום.
  • boolean needsEmergencyAffordance(). קובעת אם התכונה צריכה להיות פעילה.

אפשר להשבית את התכונה באופן סופי בזמן הבנייה על ידי שינוי הקבוע EmergencyAffordanceManager.ENABLED ל-false. הפעולה הזו גורמת לכך ש-needsEmergencyAffordance() תמיד תחזיר false ותמנע את ההפעלה של EmergencyAffordanceService.

EmergencyAffordanceService

EmergencyAffordanceService הוא שירות מערכת שעוקב אחרי קוד המדינה לנייד (MCC) של כל הרשתות הסלולריות שזוהו ושל כרטיסי ה-SIM המותקנים. אם לאחד מכרטיסי ה-SIM המותקנים או לאחת מהרשתות הסלולריות שזוהו יש קוד מדינה (MCC) שתואם לאחד מקודי המדינה של הודו (404 או 405), התכונה מופעלת. כלומר, אפשר להפעיל את התכונה בהודו גם אם לא מוכנס כרטיס SIM. ההנחה היא שהרשת הסלולרית מאפשרת רישום לשיחות חירום גם ללא כרטיס SIM. התכונה תישאר מופעלת עד שיוכנס כרטיס SIM שאינו הודי, ואף אחת מהרשתות שזוהו לא תהיה בעלת קוד מדינה תואם.

המשאבים וההגדרות הבאים משפיעים על ההתנהגות של התכונה 'הצגת אפשרות חירום'. אם סוג ההגדרה הוא:

  • משאב: משאב פנימי שמוגדר ב-frameworks/base/core/res/res/values/config.xml.
  • הגדרה: הגדרה שמאוחסנת בספק של הגדרות המערכת.

טבלה 2. הגדרות שמשפיעות על ההתנהגות של התכונה 'הקלה במקרה חירום'

סוג ההגדרה שם תיאור
משאב config_emergency_call_number מספר הטלפון שמחויג אוטומטית כשמתבצעת שיחת חירום.
סוג: מחרוזת
ברירת מחדל: 112
משאב config_emergency_mcc_codes מערך של מספרים שלמים שמפרט את חשבונות הניהול שבהם התכונה צריכה להיות פעילה.
סוג: מערך של מספרים שלמים
ברירת מחדל: {404,405}
הגדרה emergency_affordance_number ביטול של הגדרה גלובלית עם המספר שאליו מתקשרים במקרה חירום. ההגדרה הזו משפיעה רק על תמונות של גרסאות build שאפשר לבצע בהן ניפוי באגים (כלומר, buildtype הוא userdebug או eng). השימוש הזה מיועד לבדיקה בלבד.
סוג: מחרוזת
ברירת מחדל: לא מוגדר
הגדרה force_emergency_affordance הגדרה גלובלית שקובעת אם התכונה 'הקלה במקרה חירום' תוצג, ללא קשר למצב המכשיר. השימוש הזה מיועד לבדיקה בלבד.
סוג: בוליאני (1 או 0)
ברירת מחדל: לא מוגדר –> 0

הפעלת שיחות חירום למספר 112

התכונה 'התקשרות במקרה חירום' מחברת את השיחה באמצעות חייגן החירום, כדי שהשיחה תוכל להתבצע כשהמסך נעול. חייגן החירום מחבר שיחות רק לרשימת המספרים שסופקה על ידי Radio Interface Layer ‏ (RIL) דרך מאפיין המערכת:

  • ril.ecclist כשלא מותקן כרטיס SIM.
  • ril.ecclistSimSlotNumber כשמכניסים כרטיס SIM ו-SimSlotNumber הוא מזהה החריץ של המנוי שמוגדר כברירת מחדל.

יצרני מכשירים שמשתמשים בתכונת הגישה המהירה לשירותי חירום צריכים לוודא שבמכשירים בהודו, המספר 112 תמיד מוגדר כמספר חירום ב-RIL.

אימות

במהלך בדיקה בגרסה שאפשר לבצע בה ניפוי באגים, אפשר לשנות את המספר שאליו מתקשרים באמצעות הפקודה הבאה:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

אפשר להגדיר את ההגדרה הזו בגרסת build של משתמש רגיל, אבל המערכת מתעלמת ממנה. כדי שהשיחה תתחבר בפועל, המספר צריך להיות ברשימת מספרי החירום שסופקה על ידי RIL. אפשר להגדיר את זה באופן זמני באמצעות הפקודה הבאה שמופעלת ממעטפת root במכשיר userdebug:

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

אפשר להשתמש גם בפקודה הבאה כדי להפעיל את התכונה 'הנחה לשעת חירום' גם אם לא מזוהה רשת סלולרית הודית או לא מוכנס כרטיס SIM הודי.

adb shell settings put global force_emergency_affordance 1

מומלץ לבדוק לפחות את המקרים הבאים:

  • כשהתכונה מופעלת, לחיצה ארוכה על הלחצן חירום במסך הנעילה (איור 1) מתחילה שיחה למספר החירום שצוין.
  • כשהתכונה מופעלת, הפריט חירום מופיע בתפריט הפעולות הכללי, והקשה עליו מתחילה שיחה למספר החירום שצוין.
  • התכונה לא מופעלת אם לא מזוהה רשת סלולרית הודית וכרטיס SIM לא הודי מותקן.
  • התכונה מופעלת במכשיר כשמותקן בו כרטיס SIM הודי, ללא קשר לרשתות הסלולריות שזוהו.
  • התכונה מופעלת במכשיר בנוכחות רשת סלולרית הודית, ללא קשר לכרטיסי ה-SIM שמותקנים בו.

אם מכשיר תומך בכמה כרטיסי SIM, הבדיקה צריכה לוודא שזיהוי קוד ה-MCC של כרטיס ה-SIM פועל בצורה תקינה בכל חריץ לכרטיס SIM. התכונה 'גישה מהירה למקרה חירום' לא נשלטת על ידי חבילת הבדיקות לתאימות (CTS) של Android, ולכן אין בדיקות CTS עבורה.

שאלות נפוצות

שאלה: מספר החירום 112 עדיין לא הופעל בהודו. האם עדיין כדאי להשתמש בו?

מספר הטלפון שמשמש בהודו כמוקד חירום לציבור (PSAP) הוא 112, כפי שמוגדר במערכות משולבות לתקשורת ותגובה במקרי חירום (IECRS). עד שהמוקד יופעל, כל השיחות למספר 112 ינותבו למספר החירום הקיים 100 (אבל זה באחריות הספק, לא באחריות Android).

שאלה: מה לגבי טריגרים אחרים, כמו לחיצה משולשת על לחצן ההפעלה?

יצרני מכשירים יכולים להטמיע טריגרים נוספים. עם זאת, למרות שמשרד התקשורת ההודי מאשר הקשה משולשת על לחצן ההפעלה של החומרה, הטריגר הזה לא נתמך בהטמעה של הפניה ל-AOSP, כי חלק מהאפליקציות הנפוצות (למשל, אפליקציית המצלמה) משתמשות במחוות של לחצן ההפעלה שכוללות הקשה חוזרת על לחצן ההפעלה. אפליקציות כאלה עלולות להפריע לחיוג לשירותי חירום, או שהמשתמש עלול להפעיל בטעות את לחצן הפאניקה בזמן שהוא מנסה להפעיל פעולות באפליקציות האלה.