تسمح أجهزة Android التي لا يتوفّر فيها رصيد بيانات بمرور زيارات الشبكة، ما يتطلّب من شركات الاتصالات تنفيذ بروتوكولات التخفيف. يوفّر نظام التشغيل Android حلاً عامًا يتيح لمشغّلي شبكات الجوّال وشركات الاتصالات الإشارة إلى نفاد رصيد الجهاز.
يوفّر نظام التشغيل Android تطبيقًا تلقائيًا خاصًا بمشغّل شبكة الجوّال يتضمّن سلوكًا تلقائيًا للحدّ من حركة البيانات استنادًا إلى إشارة رصد المدخل المشروط الوصول إليه. كما يتيح هذا الخيار لمشغّلي شبكات الجوّال ومصنّعي المعدات الأصلية إمكانية تخصيص السلوك بتكلفة منخفضة ومرونة كبيرة.
الأمثلة والمصدر
يقع تطبيق مشغّل شبكة الجوّال التلقائي فيplatform/frameworks/base/packages/CarrierDefaultApp/.
التنفيذ
تم إعداد تطبيق مشغّل شبكة الجوّال التلقائي لتوفير تجربة أفضل لمشغّلي شبكات الجوّال غير المضبوطين. يمكن لمشغّلي شبكة الجوّال استخدام هذا السلوك التلقائي. ويمكنهم أيضًا إلغاء السلوك التلقائي من خلال إضافة عمليات ربط بين الإشارات والإجراءات إلى ملف XML الخاص بإعدادات مشغّل شبكة الجوّال. ويمكنهم اختيار عدم استخدام التطبيق التلقائي واستخدام امتيازات UICC مع تطبيق مشغّل شبكة الجوّال المستقل.
مقدمة عن التنفيذ
الإشارات
يتيح إطار عمل Android ضبط الإجراءات على الإشارات التالية التي تتضمّن مَعلمات:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTEDTelephonyIntents.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;ملاحظة: إذا نفّذت شركة مشغّلة تطبيقًا مستقلاً خاصًا بها، يمكنها توفير إمكانية استخدام إشارات أخرى غير تلك المذكورة في هذا القسم. ويمكنهم أيضًا تحديد إجراءاتهم الخاصة وضبطها.
عمليات الربط التلقائية بين الإشارات والإجراءات
يمكنك ضبط الإجراءات التلقائية باتّباع الخطوات التالية:
- حدِّد مفتاحًا للإشارات المتوافقة.
يتم تحديد عمليات الربط التلقائية بين الإشارات والإجراءات في
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";
- ربط الإجراءات التلقائية بمفاتيح الإشارات
ترتبط أرقام تعريف الإجراءات التلقائية بمفاتيح الإشارات:
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 لهذه الميزة.
استخدِم اختبارات التحقّق اليدوي التالية للتحقّق من صحة الميزة:
- التحقّق من صحة إشعار شركة الاتصالات بشأن عدم توفّر رصيد كافٍ في الجهاز
- التحقّق من تقييد إعادة توجيه حركة المرور أثناء عدم التوازن وإيقاف شبكة Wi-Fi
- تأكَّد من خفض حركة بيانات الشبكة وظهور واجهة مستخدم الإشعارات أثناء حالة عدم التوازن.
- التحقّق من صحة وظيفة المكالمة الصوتية/VoLTE أثناء حالة الرصيد غير الكافي
- تأكَّد من حظر مكالمات الفيديو في حال عدم توفّر رصيد كافٍ.
- مع تفعيل شبكة Wi-Fi، تأكَّد من أنّ المستخدم يمكنه مواصلة تصفّح الويب، وأنّ حركة بيانات التصفّح لا تؤدي إلى زيادة حركة بيانات الشبكة أثناء حالة عدم التوازن.
- التحقّق من صحة وظائف Wi-Fi وWFC والبلوتوث أثناء حالة عدم التوازن
- أوقِف شبكة Wi-Fi. تحقَّق من واجهة المستخدم الخاصة بالإشعار بشأن الرصيد غير الكافي، ومن عدم إعادة توجيه الزيارات العادية إلى موقع الويب الخاص بالتسجيل في شركة الاتصالات. تأكَّد من أنّ النقر على الرابط في واجهة مستخدم الإشعارات ينقل المتصفّح إلى موقع الويب الخاص بالتسجيل لدى شركة الاتصالات.
- تأكَّد من أنّ تبديل وضع الطيران لا يؤدي إلى إعادة ضبط حالة الحدّ من عدد الطلبات.
- تأكَّد من أنّ استبدال شريحة SIM قيد الاستخدام يؤدي إلى إعادة ضبط حالة حركة بيانات الشبكة.
- تأكَّد من أنّ إعادة إدخال شريحة SIM التي لم يتم دفع رصيدها تؤدي إلى إعادة تشغيل عملية إعادة توجيه حركة البيانات وإعادة تطبيق عملية تقييد حركة بيانات الشبكة.
- تأكَّد من أنّ إعادة تشغيل الهاتف تؤدي إلى إعادة تفعيل عملية إعادة التوجيه وإعادة ظهور واجهة المستخدم الخاصة بإشعار الحد الأقصى لعدد الزيارات.
- انقر على الإشعار "captiveportal". تأكَّد من إنشاء اتصال بشبكة مقيّدة للسماح للمستخدم بإضافة رصيد.
- تأكَّد من أنّ إعادة تعبئة رصيد شريحة SIM أو إعادة تفعيلها تؤدي إلى استعادة حركة بيانات شبكة الجوّال، وإزالة رابط شركة الاتصالات وإشعار عدم توفّر رصيد.
- اختبار السلامة بعد استرداد خدمة البيانات
يوفّر التطبيق التلقائي بعض الأمثلة على اختبارات الوحدات النصية وبعض النصوص البرمجية لتشغيلها (راجِع tests/runtest.sh). وعند تنفيذ إصدار أو سلوك مخصّصَين، يجب أن تعكس هذه التخصيصات في اختبارات الوحدات النصية المخصّصة.