Bakiyesi yetersiz olan kullanıcılar için cihaz davranışını özelleştirme

Veri bakiyesi olmayan Android cihazlar, ağ trafiğinin geçmesine izin verir. Bu nedenle, operatörlerin ve telekom şirketlerinin azaltma protokollerini uygulaması gerekir. Android, operatörlerin ve telekom şirketlerinin bir cihazın bakiyesinin tükendiğini belirtmesine olanak tanıyan genel bir çözüm uygular.

Android platformu, giriş portalı algılama sinyaline dayalı trafik azaltma için varsayılan davranışa sahip varsayılan bir operatör uygulaması sağlar. Ayrıca operatörlere ve OEM'lere, davranışı düşük maliyetle ve büyük esneklikle özelleştirme fırsatı sunar.

Örnekler ve kaynak

Varsayılan operatör uygulaması şu konumdadır:platform/frameworks/base/packages/CarrierDefaultApp/.

Uygulama

Varsayılan operatör uygulaması, kutudan çıkarıldığında yapılandırılmamış operatörler için daha iyi bir deneyim sunacak şekilde yapılandırılır. Operatörler bu varsayılan davranışı kullanabilir. Ayrıca, operatör yapılandırma XML dosyasına sinyal-işlem eşlemeleri ekleyerek varsayılan davranışı geçersiz kılabilirler. Varsayılan uygulamayı kullanmamaya karar verebilir ve bunun yerine kendi bağımsız operatör uygulamalarıyla UICC ayrıcalıklarını kullanabilirler.

Uygulamaya giriş

Sinyaller

Android çerçevesi, aşağıdaki parametrelendirilmiş sinyaller için işlemleri yapılandırmayı destekler:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Bu sinyaller frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java konumunda bulunur.

Desteklenen işlemler

Varsayılan operatör uygulaması, desteklenen sinyallerle eşlenebilen bir dizi desteklenen işlem tanımlar. Bunlar CarrierActionUtils.java içinde tanımlanır:

    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;

Not: Bir operatör kendi bağımsız uygulamasını kullanıyorsa bu bölümde belirtilenler dışındaki sinyaller için destek uygulayabilir. Ayrıca kendi işlemlerini tanımlayıp yapılandırabilirler.

Varsayılan sinyal-işlem eşlemeleri

Varsayılan işlemleri yapılandırmak için aşağıdaki süreci uygulayın:

  1. Desteklenen sinyaller için bir anahtar tanımlayın.

    Varsayılan işlem sinyali eşlemeleri CarrierConfigManager.java adresinde tanımlanmıştır. Desteklenen sinyallerin her birinin bir anahtarı vardır:

    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. Varsayılan işlemleri sinyal tuşlarıyla ilişkilendirin.

    Varsayılan işlem kimlikleri, sinyal anahtarlarıyla ilişkilendirilir:

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

    Telefon çerçevesi, bu işlemleri ilgili sinyallerle eşler.

Varsayılan işlemleri geçersiz kılma

İşlem kimliklerini sinyal anahtarlarıyla (CarrierConfigManager.java içinde tanımlanır) ilişkilendirerek operatör yapılandırma XML dosyasında desteklenen sinyaller için özel işlemler tanımlayabilirsiniz. Örneğin, aşağıdaki eşleme, ölçülü APN'leri devre dışı bırakır ve yönlendirme sırasında bir portal bildirimi gösterir:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

Telefon çerçevesi bu yapılandırmaları yükler ve varsayılan işlemleri geçersiz kılar.

Doğrulama

Bu özellik için CTS, CTS Verifier veya GTS testleri yoktur.

Özelliği doğrulamak için aşağıdaki manuel doğrulama testlerini kullanın:

  1. Telekomünikasyon şirketinin cihazın dengesiz sinyal bildirimini doğrulayın.
  2. Dengesiz durumdayken ve kablosuz bağlantı kapalıyken trafik yönlendirme sınırlamasının doğrulanması.
  3. Ağ trafiğinin azaltıldığını ve bakiye dışı durumdayken bildirim kullanıcı arayüzünün göründüğünü doğrulayın.
  4. Bakiye yokken sesli arama/VoLTE işlevini doğrulayın.
  5. Bakiyesi olmayan durumda görüntülü görüşmenin engellendiğini doğrulayın.
  6. Wi-Fi açıkken kullanıcının web'de gezinmeye devam edebildiğini ve bakiye yetersiz durumundayken gezinme trafiğinin ağ trafiğini etkinleştirmediğini doğrulayın.
  7. Dengesiz durumdayken kablosuz, WFC ve Bluetooth işlevlerini doğrulayın.
  8. Kablosuz bağlantıyı kapatın. Bakiye yetersizliği bildiriminin kullanıcı arayüzünü ve normal gezinme trafiğinin telekom kaydı web sitesine yönlendirilmediğini doğrulayın. Doğrulama Bildirim kullanıcı arayüzündeki bağlantı tıklandığında tarayıcı, telekom operatörünün kayıt web sitesine yönlendiriliyor.
  9. Uçak modunu açıp kapatmanın trafik sınırlama durumunu sıfırlamadığını doğrulayın.
  10. Kullanımdaki bir SIM kartın değiştirilmesinin ağ trafiği durumunu sıfırladığını doğrulayın.
  11. Dengesiz SIM'in yeniden takılmasının trafik yönlendirmesini yeniden başlattığını ve ağ trafiği sınırlamasını tekrar etkinleştirdiğini doğrulayın.
  12. Telefonun yeniden başlatılmasının yönlendirmeyi yeniden etkinleştirdiğini ve trafik sınırlama ile bildirim kullanıcı arayüzünü geri getirdiğini doğrulayın.
  13. "captiveportal" bildirimine dokunun. Kullanıcının kredi eklemesine izin vermek için kısıtlanmış bir ağ bağlantısının kurulduğunu doğrulayın.
  14. SIM bakiyesi yükleme veya yeniden etkinleştirme işleminin hücresel ağ trafiğinin kurtarılmasına ve operatör bağlantısı ile bakiye yok bildiriminin kaldırılmasına neden olduğunu doğrulayın.
  15. Veri hizmeti kurtarıldıktan sonra doğruluk testi.

Varsayılan uygulama, birim testlerinin birkaç örneğini ve bunları çalıştırmak için bir komut dosyası sağlar (tests/runtest.sh bölümüne bakın). Özelleştirilmiş bir sürüm veya davranış uyguladığınızda bu özelleştirmeleri özel birim testlerine yansıtmanız gerekir.