تخصيص سلوك الجهاز للمستخدمين الذين نفدت رصيدهم

تسمح أجهزة Android التي لا يتوفّر فيها رصيد بيانات بمرور زيارات الشبكة، ما يتطلّب من شركات الاتصالات تنفيذ بروتوكولات التخفيف. يوفّر نظام التشغيل Android حلاً عامًا يتيح لمشغّلي شبكات الجوّال وشركات الاتصالات الإشارة إلى نفاد رصيد الجهاز.

يوفّر نظام التشغيل Android تطبيقًا تلقائيًا خاصًا بمشغّل شبكة الجوّال يتضمّن سلوكًا تلقائيًا للحدّ من حركة البيانات استنادًا إلى إشارة رصد المدخل المشروط الوصول إليه. كما يتيح هذا الخيار لمشغّلي شبكات الجوّال ومصنّعي المعدات الأصلية إمكانية تخصيص السلوك بتكلفة منخفضة ومرونة كبيرة.

أمثلة ومصدر

يمكن العثور على تطبيق مشغّل شبكة الجوّال التلقائي فيplatform/frameworks/base/packages/CarrierDefaultApp/.

التنفيذ

تم إعداد تطبيق مشغّل شبكة الجوّال التلقائي لتوفير تجربة أفضل لمشغّلي شبكات الجوّال غير المضبوطين. يمكن لمشغّلي شبكة الجوّال استخدام هذا السلوك التلقائي. ويمكنهم أيضًا إلغاء السلوك التلقائي من خلال إضافة عمليات ربط بين الإشارات والإجراءات إلى ملف XML الخاص بإعدادات شركة الاتصالات. ويمكنهم اختيار عدم استخدام التطبيق التلقائي واستخدام امتيازات UICC مع تطبيق مشغّل شبكة الجوّال المستقل الخاص بهم بدلاً من ذلك.

مقدمة عن التنفيذ

Signals

يتيح إطار عمل 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). على سبيل المثال، يؤدي الربط التالي إلى إيقاف نقاط الوصول إلى الإنترنت (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. التحقّق من تقييد إعادة توجيه الزيارات أثناء عدم التوازن وإيقاف Wi-Fi
  3. تأكَّد من خفض حركة بيانات الشبكة وظهور واجهة مستخدم الإشعارات أثناء حالة عدم التوازن.
  4. التحقّق من صحة وظيفة المكالمات الصوتية/VoLTE أثناء حالة الرصيد غير الكافي
  5. تأكَّد من حظر مكالمات الفيديو عندما يكون الرصيد غير كافٍ.
  6. مع تفعيل شبكة Wi-Fi، تأكَّد من أنّ المستخدم يمكنه مواصلة تصفّح الويب، وأنّ عدد الزيارات على المتصفّح لا يؤدي إلى تفعيل عدد الزيارات على الشبكة أثناء حالة عدم التوازن.
  7. التحقّق من صحة وظائف Wi-Fi وWFC والبلوتوث أثناء حالة عدم التوازن
  8. أوقِف شبكة Wi-Fi. تحقَّق من واجهة المستخدم الخاصة بالإشعار بشأن الرصيد غير الكافي، ومن عدم إعادة توجيه الزيارات العادية إلى الموقع الإلكتروني الخاص بالتسجيل في شركة الاتصالات. تأكَّد من أنّ النقر على الرابط في واجهة مستخدم الإشعارات يؤدي إلى انتقال المتصفّح إلى موقع الويب الخاص بالتسجيل لدى شركة الاتصالات.
  9. تأكَّد من أنّ تبديل وضع الطيران لا يؤدي إلى إعادة ضبط حالة الحدّ من عدد الطلبات.
  10. تأكَّد من أنّ استبدال شريحة SIM قيد الاستخدام يؤدي إلى إعادة ضبط حالة حركة بيانات الشبكة.
  11. تأكَّد من أنّ إعادة إدخال شريحة SIM التي لا يتوفّر فيها رصيد كافٍ تؤدي إلى إعادة تشغيل عملية إعادة توجيه حركة البيانات وإعادة تطبيق عملية الحدّ من حركة بيانات الشبكة.
  12. تأكَّد من أنّ إعادة تشغيل الهاتف تؤدي إلى إعادة تفعيل عملية إعادة التوجيه وإعادة ظهور واجهة المستخدم الخاصة بإشعار الحد الأقصى لعدد الزيارات.
  13. انقر على الإشعار "captiveportal". تأكَّد من إنشاء اتصال بشبكة مقيّدة للسماح للمستخدم بإضافة رصيد.
  14. تأكَّد من أنّ إعادة تعبئة رصيد شريحة SIM أو إعادة تفعيلها تؤدي إلى استعادة حركة بيانات شبكة الجوّال، وإزالة رابط شركة الاتصالات وإشعار عدم توفّر رصيد.
  15. اختبار السلامة بعد استرداد خدمة البيانات

يوفّر التطبيق التلقائي بعض الأمثلة على اختبارات الوحدات النصية وبعض النصوص البرمجية لتشغيلها (راجِع tests/runtest.sh). وعند تنفيذ نسخة أو سلوك مخصّصَين، يجب أن تعكس هذه التخصيصات في اختبارات الوحدات النصية المخصّصة.