Menyesuaikan perilaku perangkat untuk pengguna yang tidak seimbang

Perangkat Android tanpa saldo data memungkinkan traffic jaringan melewatinya, sehingga operator dan operator telekomunikasi harus menerapkan protokol mitigasi. Android menerapkan solusi umum yang memungkinkan operator dan operator telekomunikasi untuk menunjukkan kapan saldo perangkat habis.

Platform Android menyediakan aplikasi operator default dengan perilaku default untuk mitigasi traffic berdasarkan sinyal deteksi captive portal. Hal ini juga memberikan kesempatan kepada operator dan OEM untuk menyesuaikan perilaku dengan biaya rendah dan fleksibilitas yang besar.

Contoh dan sumber

Aplikasi operator default terletak diplatform/frameworks/base/packages/CarrierDefaultApp/.

Implementasi

Aplikasi operator default dikonfigurasi untuk memberikan pengalaman yang lebih baik bagi operator yang tidak dikonfigurasi secara langsung. Operator dapat menggunakan perilaku default ini. Perilaku ini juga dapat mengganti perilaku default dengan menambahkan pemetaan tindakan sinyal ke file XML konfigurasi operator. Mereka dapat memutuskan untuk tidak menggunakan aplikasi default dan menggunakan hak istimewa UICC dengan aplikasi operator mandiri mereka sendiri.

Pengantar penerapan

Sinyal

Framework Android mendukung konfigurasi tindakan ke sinyal berparameter berikut:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Sinyal ini berada di frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Tindakan yang didukung

Aplikasi operator default menentukan serangkaian tindakan yang didukung yang dapat dipetakan ke sinyal yang didukung. Ini ditentukan di 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;

Catatan: Jika operator menerapkan aplikasi mandirinya sendiri, mereka dapat menerapkan dukungan untuk sinyal selain yang disebutkan di bagian ini. Mereka juga dapat menentukan dan mengonfigurasi tindakan mereka sendiri.

Pemetaan sinyal-tindakan default

Konfigurasikan tindakan default dengan mengikuti proses ini:

  1. Menentukan kunci untuk sinyal yang didukung.

    Pemetaan sinyal ke tindakan default ditentukan di CarrierConfigManager.java. Setiap sinyal yang didukung memiliki kunci:

    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. Mengaitkan tindakan default ke tombol sinyal.

    ID tindakan default dikaitkan dengan kunci sinyal:

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

    Framework telephony memetakan tindakan ini ke sinyal yang sesuai.

Mengganti tindakan default

Anda dapat menentukan tindakan kustom untuk sinyal yang didukung dalam file XML konfigurasi operator dengan mengaitkan ID tindakan ke kunci sinyal (ditentukan dalam CarrierConfigManager.java). Misalnya, pemetaan berikut menonaktifkan APN berbayar dan menampilkan notifikasi portal saat pengalihan:

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

Framework telephony memuat konfigurasi ini dan mengganti tindakan default.

Validasi

Tidak ada pengujian CTS, CTS Verifier, atau GTS untuk fitur ini.

Gunakan pengujian validasi manual ini untuk memvalidasi fitur:

  1. Memvalidasi notifikasi sinyal perangkat telco yang tidak seimbang.
  2. Verifikasi throttling pengalihan traffic selama status tidak seimbang dan Wi-Fi nonaktif.
  3. Pastikan traffic jaringan dinonaktifkan dan UI notifikasi muncul selama status kehabisan saldo.
  4. Memvalidasi fungsi panggilan suara/VoLTE selama status saldo tidak seimbang.
  5. Memverifikasi bahwa panggilan video diblokir dalam status saldo tidak seimbang.
  6. Dengan Wi-Fi aktif, pastikan pengguna dapat melanjutkan penjelajahan web, dan traffic penjelajahan tidak mengaktifkan traffic jaringan saat dalam status tidak seimbang.
  7. Validasi fungsi Wi-Fi, WFC, dan Bluetooth selama status tidak seimbang.
  8. Nonaktifkan Wi-Fi. Verifikasi UI notifikasi saldo tidak seimbang, dan pastikan traffic penjelajahan biasa tidak dialihkan ke situs pendaftaran operator telekomunikasi. Pastikan mengklik link di UI notifikasi akan mengarahkan browser ke situs pendaftaran operator seluler.
  9. Pastikan mengalihkan mode pesawat tidak mereset status throttling traffic.
  10. Pastikan bahwa menukar SIM yang sedang digunakan akan mereset status traffic jaringan.
  11. Pastikan bahwa memasukkan kembali SIM yang saldonya habis akan memulai ulang pengalihan traffic dan mendapatkan throttling traffic jaringan lagi.
  12. Pastikan bahwa memulai ulang ponsel akan mengaktifkan kembali pengalihan dan menampilkan kembali throttle traffic dan UI notifikasi.
  13. Ketuk notifikasi "captiveportal". Pastikan koneksi jaringan yang dibatasi telah dibuat untuk memungkinkan pengguna menambahkan kredit.
  14. Pastikan pengisian ulang atau pengaktifan kembali saldo SIM menyebabkan traffic jaringan seluler pulih, dan link Telco serta notifikasi tidak ada saldo menghilang.
  15. Pengujian keandalan setelah pemulihan layanan data.

Aplikasi default menyediakan beberapa contoh pengujian unit dan skrip untuk menjalankannya (lihat tests/runtest.sh). Saat menerapkan versi atau perilaku yang disesuaikan, Anda harus mencerminkan penyesuaian tersebut ke dalam pengujian unit khusus.