Menyesuaikan perilaku perangkat untuk pengguna yang tidak seimbang

Perangkat Android tanpa saldo data memungkinkan traffic jaringan, membutuhkan operator dan telekomunikasi untuk menerapkan protokol mitigasi. Android mengimplementasikan solusi generik yang memungkinkan operator dan telekomunikasi untuk menunjukkan ketika perangkat memiliki kehabisan saldo.

Platform Android menyediakan aplikasi operator default dengan perilaku default untuk mitigasi traffic berdasarkan sinyal deteksi captive-portal. {i>Software<i} ini juga menyediakan kesempatan untuk menyesuaikan perilaku dengan biaya rendah dan fleksibilitas yang tinggi.

Contoh dan sumber

Aplikasi operator default terletak di platform/frameworks/base/packages/CarrierDefaultApp/.

Implementasi

Aplikasi operator default dikonfigurasi untuk memberikan pengalaman yang lebih baik bagi operator yang tidak dikonfigurasi dan siap digunakan. Operator dapat menggunakan perilaku default ini. Mereka juga dapat mengganti perilaku {i>default<i} dengan menambahkan pemetaan tindakan sinyal ke file XML konfigurasi operator. Mereka dapat memutuskan untuk tidak menggunakan aplikasi {i>default<i} dan alih-alih menggunakan hak istimewa UICC dengan aplikasi operator mandiri.

Pengantar penerapan

Sinyal

Framework Android mendukung konfigurasi tindakan ke tindakan berparameter berikut sinyal:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Sinyal ini terletak 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. Hal 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 mandiri mereka sendiri, mereka dapat mengimplementasikan dukungan untuk sinyal selain yang disebutkan dalam bagian. Admin juga dapat menentukan dan mengonfigurasi tindakan mereka sendiri.

Pemetaan tindakan sinyal default

Konfigurasi tindakan default dengan mengikuti proses ini:

  1. Tentukan 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 kunci sinyal.

    ID tindakan default dikaitkan dengan tombol 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 telepon memetakan tindakan ini ke sinyal yang sesuai.

Mengganti tindakan default

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

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

Framework telepon memuat konfigurasi ini dan mengganti konfigurasi default tindakan.

Validasi

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

Gunakan pengujian validasi manual ini untuk memvalidasi fitur:

  1. Validasi notifikasi sinyal perangkat telekomunikasi tidak seimbang.
  2. Memverifikasi throttling pengalihan traffic selama kondisi tidak seimbang dan Wi-Fi nonaktif.
  3. Memverifikasi traffic jaringan dinonaktifkan dan UI notifikasi muncul selama tidak keadaan keseimbangan.
  4. Validasi panggilan suara/fungsi VoLTE selama kondisi tidak seimbang.
  5. Pastikan panggilan video diblokir dalam kondisi tidak seimbang.
  6. Dengan Wi-Fi aktif, pastikan pengguna dapat melanjutkan penjelajahan web dan penjelajahan traffic jaringan tidak mengaktifkan traffic jaringan saat kondisi traffic tidak seimbang status.
  7. Memvalidasi fungsi Wi-Fi, WFC, dan Bluetooth selama tidak seimbang status.
  8. Nonaktifkan Wi-Fi. Verifikasi UI notifikasi yang tidak seimbang, dan UI notifikasi lalu lintas penjelajahan tidak dialihkan ke situs web pendaftaran telekomunikasi. Verifikasi mengklik link di UI notifikasi akan membawa browser ke telekomunikasi situs web pendaftaran.
  9. Pastikan bahwa mengalihkan mode pesawat tidak mereset throttling traffic status.
  10. Memastikan bahwa menukar SIM dalam layanan dapat mereset traffic jaringan status.
  11. Pastikan bahwa memasukkan kembali SIM yang tidak seimbang akan memulai ulang pengalihan traffic dan memperoleh kembali throttling traffic jaringan.
  12. Pastikan memulai ulang ponsel akan mengaktifkan kembali pengalihan dan mengembalikan throttle traffic dan UI notifikasi.
  13. Ketuk "captiveportal" notifikasi. Memverifikasi jaringan yang dibatasi dibuat untuk memungkinkan pengguna menambahkan kredit.
  14. Memastikan pengisian ulang saldo SIM atau pengaktifan ulang menyebabkan jaringan seluler lalu lintas yang akan dipulihkan, dan tautan Telco serta tidak ada notifikasi saldo pergi.
  15. Tes kesehatan setelah pemulihan layanan data.

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