為失衡用戶定制設備行為,為失衡用戶定制設備行為

沒有數據平衡的 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. 將默認操作與信號鍵相關聯。

    默認操作 ID 與信號鍵相關聯:

    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
             });
    

    電話框架將這些動作映射到相應的信號。

覆蓋默認操作

您可以通過將操作 ID 關聯到信號鍵(在CarrierConfigManager.java中定義)來為運營商配置 XML 文件中支持的信號定義自定義操作。例如,以下映射禁用按流量計費的 APN 並在重定向時顯示門戶通知:

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

電話框架加載這些配置並覆蓋默認操作。

驗證

此功能沒有 CTS、CTS 驗證程序或 GTS 測試。

使用這些手動驗證測試來驗證功能:

  1. 驗證電信公司的設備失衡信號通知。
  2. 在失衡狀態和 Wi-Fi 關閉期間驗證流量重定向限制。
  3. 驗證網絡流量已關閉,並且通知 UI 在失衡狀態下顯示。
  4. 在失衡狀態下驗證語音通話/VoLTE 功能。
  5. 驗證視頻通話在失衡狀態下被阻止。
  6. 在 Wi-Fi 開啟的情況下,驗證用戶可以繼續瀏覽網頁,並且瀏覽流量在處於失衡狀態時不會開啟網絡流量。
  7. 在失衡狀態下驗證 Wi-Fi、WFC 和藍牙功能。
  8. 關閉 Wi-Fi。驗證失衡通知 UI,以及普通瀏覽流量不會重定向到電信註冊網站。驗證單擊通知 UI 中的鏈接會將瀏覽器帶到電信註冊網站。
  9. 驗證切換飛行模式不會重置流量限制狀態。
  10. 驗證交換正在使用的 SIM 卡是否會重置網絡流量狀態。
  11. 驗證重新插入失衡的 SIM 卡是否會重新啟動流量重定向並再次獲得網絡流量限制。
  12. 驗證重新啟動電話是否會重新激活重定向並恢復流量限制和通知 UI。
  13. 點擊“captiveportal”通知。驗證是否已建立受限網絡連接以允許用戶添加積分。
  14. 驗證 SIM 餘額重新填充或重新激活是否會導致蜂窩網絡流量恢復,以及 Telco 鏈接和無餘額通知是否消失。
  15. 數據服務恢復後的健全性測試。

默認應用程序提供了一些單元測試示例和運行它們的腳本(請參閱tests/runtest.sh )。當您實現自定義版本或行為時,您應該將這些自定義鏡像到專用的單元測試中。

,

沒有數據平衡的 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. 將默認操作與信號鍵相關聯。

    默認操作 ID 與信號鍵相關聯:

    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
             });
    

    電話框架將這些動作映射到相應的信號。

覆蓋默認操作

您可以通過將操作 ID 關聯到信號鍵(在CarrierConfigManager.java中定義)來為運營商配置 XML 文件中支持的信號定義自定義操作。例如,以下映射禁用按流量計費的 APN 並在重定向時顯示門戶通知:

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

電話框架加載這些配置並覆蓋默認操作。

驗證

此功能沒有 CTS、CTS 驗證程序或 GTS 測試。

使用這些手動驗證測試來驗證功能:

  1. 驗證電信公司的設備失衡信號通知。
  2. 在失衡狀態和 Wi-Fi 關閉期間驗證流量重定向限制。
  3. 驗證網絡流量已關閉,並且通知 UI 在失衡狀態下顯示。
  4. 在失衡狀態下驗證語音通話/VoLTE 功能。
  5. 驗證視頻通話在失衡狀態下被阻止。
  6. 在 Wi-Fi 開啟的情況下,驗證用戶可以繼續瀏覽網頁,並且瀏覽流量在處於失衡狀態時不會開啟網絡流量。
  7. 在失衡狀態下驗證 Wi-Fi、WFC 和藍牙功能。
  8. 關閉 Wi-Fi。驗證失衡通知 UI,以及普通瀏覽流量不會重定向到電信註冊網站。驗證單擊通知 UI 中的鏈接會將瀏覽器帶到電信註冊網站。
  9. 驗證切換飛行模式不會重置流量限制狀態。
  10. 驗證交換正在使用的 SIM 卡是否會重置網絡流量狀態。
  11. 驗證重新插入失衡的 SIM 卡是否會重新啟動流量重定向並再次獲得網絡流量限制。
  12. 驗證重新啟動電話是否會重新激活重定向並恢復流量限制和通知 UI。
  13. 點擊“captiveportal”通知。驗證是否已建立受限網絡連接以允許用戶添加積分。
  14. 驗證 SIM 餘額重新填充或重新激活是否會導致蜂窩網絡流量恢復,以及 Telco 鏈接和無餘額通知是否消失。
  15. 數據服務恢復後的健全性測試。

默認應用程序提供了一些單元測試示例和運行它們的腳本(請參閱tests/runtest.sh )。當您實現自定義版本或行為時,您應該將這些自定義鏡像到專用的單元測試中。