رفتار دستگاه را برای کاربران خارج از تعادل سفارشی کنید

دستگاه‌های اندرویدی بدون تعادل داده، به ترافیک شبکه اجازه عبور می‌دهند و به اپراتورها و مخابرات برای اجرای پروتکل‌های کاهش نیاز دارند. Android یک راه حل عمومی را پیاده سازی می کند که به شرکت های مخابراتی و مخابراتی اجازه می دهد نشان دهند که تعادل دستگاه تمام شده است.

پلتفرم اندروید یک برنامه حامل پیش‌فرض با رفتار پیش‌فرض برای کاهش ترافیک بر اساس سیگنال تشخیص پورتال محبوس ارائه می‌کند. همچنین به حامل ها و OEM ها این فرصت را می دهد که رفتار را با هزینه کم و انعطاف پذیری زیاد سفارشی کنند.

مثال ها و منبع

برنامه پیش‌فرض حامل در platform/frameworks/base/packages/CarrierDefaultApp/ .

پیاده سازی

برنامه پیش‌فرض شرکت مخابراتی به گونه‌ای پیکربندی شده است که تجربه بهتری را برای اپراتورهای پیکربندی نشده خارج از جعبه ارائه دهد. اپراتورها می توانند از این رفتار پیش فرض استفاده کنند. آنها همچنین می‌توانند با افزودن نگاشت‌های عمل سیگنال به فایل XML پیکربندی حامل، رفتار پیش‌فرض را نادیده بگیرند. آنها می توانند تصمیم بگیرند که از برنامه پیش فرض استفاده نکنند و در عوض از امتیازات UICC با برنامه حامل مستقل خود استفاده کنند.

مقدمه پیاده سازی

سیگنال ها

فریم ورک اندروید از پیکربندی کنش‌ها برای سیگنال‌های پارامتری زیر پشتیبانی می‌کند:

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

    چارچوب تلفن این اقدامات را به سیگنال های مربوطه ترسیم می کند.

اعمال پیش فرض را لغو کنید

می‌توانید با مرتبط کردن شناسه‌های عملکرد به کلیدهای سیگنال (تعریف شده در 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 Verifier یا GTS برای این ویژگی وجود ندارد.

از این تست های اعتبار سنجی دستی برای تایید این ویژگی استفاده کنید:

  1. اعلان سیگنال عدم تعادل دستگاه مخابراتی را تأیید اعتبار کنید.
  2. بررسی تغییر مسیر throttling ترافیک در حالت خارج از تعادل و Wi-Fi خاموش.
  3. بررسی کنید که ترافیک شبکه کم شده است و رابط کاربری اعلان در حالت عدم تعادل ظاهر می شود.
  4. اعتبار تماس صوتی/عملکرد VoLTE در حالت خارج از تعادل.
  5. بررسی کنید که تماس ویدیویی در حالت نامتعادل مسدود شده است.
  6. با روشن بودن Wi-Fi، تأیید کنید که کاربر می‌تواند به مرور وب ادامه دهد و ترافیک مرورگر در حالت خارج از تعادل، ترافیک شبکه را روشن نمی‌کند.
  7. عملکردهای Wi-Fi، WFC، و بلوتوث را در حالت عدم تعادل تأیید کنید.
  8. وای فای را خاموش کنید. رابط کاربری اعلان خارج از تعادل را بررسی کنید و اینکه ترافیک معمولی مرورگر به وب سایت ثبت مخابرات هدایت نشود. تأیید کنید که با کلیک کردن روی پیوند در رابط کاربری اعلان، مرورگر را به وب سایت ثبت مخابرات می آورد.
  9. بررسی کنید که تغییر حالت هواپیما وضعیت کاهش ترافیک را بازنشانی نمی کند.
  10. بررسی کنید که تعویض یک سیم کارت داخلی وضعیت ترافیک شبکه را بازنشانی می کند.
  11. بررسی کنید که با قرار دادن مجدد سیم کارت خارج از تعادل، هدایت ترافیک مجدداً راه اندازی می شود و ترافیک شبکه دوباره کاهش می یابد.
  12. بررسی کنید که راه‌اندازی مجدد تلفن، تغییر مسیر را دوباره فعال می‌کند و دریچه گاز ترافیک و رابط کاربری اعلان‌ها را بازمی‌گرداند.
  13. روی اعلان "Captiveportal" ضربه بزنید. بررسی کنید که یک اتصال شبکه محدود ایجاد شده است تا به کاربر اجازه دهد اعتبار اضافه کند.
  14. بررسی کنید که پر کردن یا فعال‌سازی مجدد موجودی سیم‌کارت باعث بازیابی ترافیک شبکه تلفن همراه می‌شود و پیوند Telco و عدم وجود اعلان موجودی از بین می‌رود.
  15. تست سلامت پس از بازیابی سرویس داده ها.

برنامه پیش‌فرض چند نمونه از تست‌های واحد و یک اسکریپت برای اجرای آنها ارائه می‌کند (به tests/runtest.sh مراجعه کنید). هنگامی که یک نسخه یا رفتار سفارشی شده را پیاده سازی می کنید، باید آن سفارشی سازی ها را در تست های واحد اختصاصی منعکس کنید.