התאמה אישית של התנהגות המכשיר למשתמשים עם יתרה או חוב

במכשירי Android ללא יתרת נתונים, תעבורת הנתונים ברשת ממשיכה לעבור, ולכן ספקי הסלולר צריכים להטמיע פרוטוקולים לצמצום העומס. ב-Android מוטמע פתרון כללי שמאפשר לספקים ולספקי הסלולר לציין מתי נגמר היתרה במכשיר.

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

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

אפליקציית ברירת המחדל של הספק נמצאת בכתובתplatform/frameworks/base/packages/CarrierDefaultApp/.

הטמעה

אפליקציית ברירת המחדל של הספק מוגדרת לספק חוויית שימוש טובה יותר מחוץ לקופסה לספקים שלא הוגדרו. ספקי הסלולר יכולים להשתמש בהתנהגות ברירת המחדל הזו. הם יכולים גם לשנות את התנהגות ברירת המחדל על ידי הוספת מיפויים של אותות לפעולות לקובץ ה-XML של תצורת הספק. הם יכולים להחליט לא להשתמש באפליקציית ברירת המחדל, ובמקום זאת להשתמש בהרשאות UICC באפליקציית הספק שלהם.

מבוא להטמעה

אותות

מסגרת Android תומכת בהגדרת פעולות לאותות הבאים עם פרמטרים:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

האותות האלה נמצאים ב-frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

פעולות נתמכות

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

    public static final int CARRIER_ACTION_ENABLE_METERED_APNS               = 0;
    public static final int CARRIER_ACTION_DISABLE_METERED_APNS              = 1;
    public static final int CARRIER_ACTION_DISABLE_RADIO                     = 2;
    public static final int CARRIER_ACTION_ENABLE_RADIO                      = 3;
    public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION          = 4;
    public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5;
    public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS          = 6;

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

מיפויים שמוגדרים כברירת מחדל בין אותות לפעולות

כדי להגדיר פעולות ברירת מחדל, פועלים לפי התהליך הבא:

  1. מגדירים מפתח לאותות נתמכים.

    המיפויים של האותות לפעולות שמוגדרים כברירת מחדל מפורטים בקובץ CarrierConfigManager.java. לכל אחד מהאותות הנתמכים יש מפתח:

    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY =
    "carrier_default_actions_on_dcfailure_string_array";
  2. שיוך פעולות ברירת מחדל למפתחות אותות.

    מזהי הפעולות שמוגדרים כברירת מחדל משויכים למפתחות האותות:

    sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY,                new String[]{
                    "1, 4"
                    //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION
                    // 4: CARRIER_ACTION_DISABLE_METERED_APNS
             });
    

    מסגרת הטלפוניה ממפה את הפעולות האלה לאותות המתאימים.

שינוי מברירת המחדל של פעולות

אפשר להגדיר פעולות בהתאמה אישית לאותות נתמכים בקובץ ה-XML של תצורת הספק, על ידי שיוך מזהי פעולות למפתחות האות (שמוגדרים בקובץ CarrierConfigManager.java). לדוגמה, המיפוי הבא משבית APNs למדידת תעבורה ומציג התראה בפורטל על הפניה אוטומטית:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

מסגרת הטלפונייה טוענת את ההגדרות האלה ומבטלת את פעולות ברירת המחדל.

אימות

אין בדיקות CTS,‏ CTS Verifier או GTS לתכונה הזו.

כדי לאמת את התכונה, אפשר להשתמש בבדיקות האימות הידניות הבאות:

  1. אימות ההתראה של ספק הסלולר על חוסר איזון בנתונים במכשיר.
  2. מוודאים שקיימת הגבלת תעבורת נתונים להפניה אוטומטית במצב של חוסר איזון וכש-Wi-Fi כבוי.
  3. מוודאים שתנועת הרשת מוגבלת וממשק המשתמש של ההתראות מופיע במצב של יתרה שלילית.
  4. אימות הפונקציה של שיחות קוליות/VoLTE במצב של חוסר איזון.
  5. מוודאים ששיחות הווידאו חסרות במצב של חוסר איזון.
  6. כשה-Wi-Fi מופעל, מוודאים שהמשתמש יכול להמשיך לגלוש באינטרנט, ושהתנועה מהגלישה לא מפעילה את תעבורת הרשת במצב של חוסר איזון.
  7. אימות הפונקציות של Wi-Fi,‏ WFC ו-Bluetooth במצב של חוסר איזון.
  8. משביתים את ה-Wi-Fi. מוודאים שההודעה על חוסר איזון מוצגת בממשק המשתמש, ושהתנועה הרגילה של הגלישה לא מנותבת לאתר האינטרנט של הרישום לחברת הסלולר. מוודאים שלחיצה על הקישור בממשק המשתמש של ההתראה מפנה את הדפדפן לאתר האינטרנט של הרישום של ספק הסלולר.
  9. מוודאים שהפעלה או השבתה של מצב הטיסה לא מאפסת את מצב הצמצום של תעבורת הנתונים.
  10. מוודאים שהחלפת כרטיס SIM פעיל מאפסת את מצב תעבורת הנתונים ברשת.
  11. מוודאים שהחלפת כרטיס ה-SIM עם היתרה השלילית מפעילה מחדש את ההפניה האוטומטית של תעבורת הנתונים, ושהצמצום של תעבורת הנתונים ברשת מופעל שוב.
  12. מוודאים שהפעלה מחדש של הטלפון מפעילה מחדש את ההפניה האוטומטית ומחזירה את המצמצם של תעבורת הנתונים ואת ממשק המשתמש של ההתראות.
  13. מקישים על ההתראה 'captiveportal'. מוודאים שנוצר חיבור לרשת מוגבלת כדי לאפשר למשתמש להוסיף קרדיטים.
  14. מוודאים שהוספת כסף ל-SIM או הפעלה מחדש שלו מאפשרות לתנועה ברשת הסלולרית להתאושש, והקישור לספק הסלולר וההודעה 'אין יתרה' נעלמים.
  15. בדיקת תקינות לאחר שחזור שירות הנתונים.

באפליקציית ברירת המחדל יש כמה דוגמאות לבדיקות יחידה וסקריפט להרצתן (ראו tests/runtest.sh). כשמטמיעים גרסה או התנהגות בהתאמה אישית, צריך לשקף את ההתאמות האישיות האלה בבדיקות יחידה ייעודיות.