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

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

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

مثال‌ها و منبع

برنامه شرکت مخابراتی پیش‌فرض در 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) تعریف کنید. برای مثال، نگاشت زیر «نام‌های نقطه دسترسی» اندازه‌گیری‌شده را غیرفعال می‌کند و اعلان درگاهی را در هدایت مجدد نشان می‌دهد:

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

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