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

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

پلتفرم اندروید یک برنامه پیش‌فرض اپراتور تلفن همراه با رفتار پیش‌فرض برای کاهش ترافیک بر اساس سیگنال تشخیص پورتال تحت پوشش ارائه می‌دهد. همچنین به اپراتورها و تولیدکنندگان اصلی تجهیزات (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. بررسی کنید که آیا در حالت عدم تعادل و خاموش بودن وای‌فای، محدودیتی در هدایت ترافیک وجود دارد یا خیر.
  3. بررسی کنید که ترافیک شبکه قطع شده باشد و رابط کاربری اعلان در حالت عدم تعادل ظاهر شود.
  4. عملکرد تماس صوتی/VoLTE را در حالت عدم تعادل تأیید کنید.
  5. تأیید کنید که تماس ویدیویی در حالت نامتعادل مسدود شده است.
  6. با روشن بودن وای‌فای، بررسی کنید که کاربر می‌تواند به مرور وب ادامه دهد و ترافیک مرور در حالت نامتعادل، ترافیک شبکه را فعال نمی‌کند.
  7. در حالت عدم تعادل، عملکردهای Wi-Fi، WFC و بلوتوث را تأیید کنید.
  8. وای‌فای را خاموش کنید. رابط کاربری اعلان نامتعادل را بررسی کنید و مطمئن شوید که ترافیک مرور معمولی به وب‌سایت ثبت شرکت مخابراتی هدایت نمی‌شود. مطمئن شوید که کلیک روی پیوند موجود در رابط کاربری اعلان، مرورگر را به وب‌سایت ثبت شرکت مخابراتی هدایت می‌کند.
  9. تأیید کنید که فعال کردن حالت هواپیما، وضعیت کنترل ترافیک را مجدداً تنظیم نمی‌کند.
  10. تأیید کنید که تعویض سیم‌کارت در حال استفاده، وضعیت ترافیک شبکه را مجدداً تنظیم می‌کند.
  11. تأیید کنید که قرار دادن مجدد سیم‌کارت نامتعادل، تغییر مسیر ترافیک را مجدداً آغاز می‌کند و دوباره کنترل ترافیک شبکه را به دست می‌آورد.
  12. تأیید کنید که با راه‌اندازی مجدد گوشی، تغییر مسیر دوباره فعال می‌شود و کنترل ترافیک و رابط کاربری اعلان‌ها برمی‌گردند.
  13. روی اعلان «captiveportal» ضربه بزنید. تأیید کنید که اتصال شبکه محدود برقرار شده است تا کاربر بتواند اعتبار اضافه کند.
  14. تأیید کنید که شارژ یا فعال‌سازی مجدد موجودی سیم‌کارت باعث بازیابی ترافیک شبکه تلفن همراه و از بین رفتن لینک مخابراتی و اعلان عدم موجودی می‌شود.
  15. تست سلامت پس از بازیابی سرویس داده.

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