Menyesuaikan Perilaku Perangkat untuk Pengguna yang Tidak Saldo

Perangkat Android tanpa saldo data memungkinkan lalu lintas jaringan melaluinya, memerlukan operator dan perusahaan telekomunikasi untuk menerapkan protokol mitigasi. Android mengimplementasikan solusi umum yang memungkinkan operator dan operator telekomunikasi untuk menunjukkan saat perangkat kehabisan keseimbangan.

Platform Android menyediakan aplikasi operator default dengan perilaku default untuk mitigasi lalu lintas berdasarkan sinyal deteksi captive-portal. Ini juga memberikan kesempatan kepada operator dan OEM untuk menyesuaikan perilaku dengan biaya rendah dan fleksibilitas tinggi.

Contoh dan sumber

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

Penerapan

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

Pengenalan implementasi

Sinyal

Kerangka kerja Android mendukung tindakan mengonfigurasi ke sinyal berparameter berikut:

  • 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. Ini didefinisikan 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 mengimplementasikan aplikasi mandiri mereka sendiri, maka mereka dapat mengimplementasikan dukungan untuk sinyal selain yang disebutkan di bagian ini. Mereka juga dapat menentukan dan mengonfigurasi tindakan mereka sendiri.

Pemetaan aksi sinyal default

Konfigurasikan tindakan default dengan mengikuti proses ini:

  1. Tentukan kunci untuk sinyal yang didukung.

    Sinyal default untuk pemetaan tindakan didefinisikan 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. Kaitkan 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
             });
    

    Kerangka telepon 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 (didefinisikan dalam CarrierConfigManager.java ). Misalnya, pemetaan berikut menonaktifkan APN terukur dan menampilkan pemberitahuan portal tentang pengalihan:

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

Kerangka telepon memuat konfigurasi ini dan mengesampingkan tindakan default.

Validasi

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

Gunakan tes validasi manual ini untuk memvalidasi fitur:

  1. Validasi pemberitahuan sinyal out-of-balance perangkat telco.
  2. Verifikasi pembatasan pengalihan lalu lintas selama keadaan tidak seimbang dan Wi-Fi mati.
  3. Pastikan lalu lintas jaringan dimatikan dan UI pemberitahuan muncul selama keadaan tidak seimbang.
  4. Validasi fungsi panggilan suara/VoLTE selama kondisi tidak seimbang.
  5. Pastikan panggilan video diblokir dalam keadaan tidak seimbang.
  6. Dengan Wi-Fi aktif, verifikasi pengguna dapat melanjutkan penjelajahan web, dan lalu lintas penjelajahan tidak mengaktifkan lalu lintas jaringan saat dalam keadaan tidak seimbang.
  7. Validasi fungsi Wi-Fi, WFC, dan Bluetooth selama kondisi tidak seimbang.
  8. Matikan Wi-Fi. Verifikasi UI pemberitahuan tidak seimbang, dan lalu lintas penjelajahan biasa tidak dialihkan ke situs web pendaftaran telekomunikasi. Verifikasi mengklik tautan di UI notifikasi membawa browser ke situs web pendaftaran telco.
  9. Pastikan bahwa beralih mode pesawat tidak mengatur ulang status pembatasan lalu lintas.
  10. Verifikasi bahwa menukar SIM dalam layanan mengatur ulang status lalu lintas jaringan.
  11. Verifikasi bahwa memasukkan kembali SIM yang tidak seimbang akan memulai ulang pengalihan lalu lintas dan mendapatkan pembatasan lalu lintas jaringan lagi.
  12. Verifikasi bahwa me-reboot ponsel mengaktifkan kembali pengalihan dan mengembalikan throttle lalu lintas dan UI notifikasi.
  13. Ketuk notifikasi "captiveportal". Pastikan koneksi jaringan terbatas dibuat untuk memungkinkan pengguna menambahkan kredit.
  14. Verifikasi bahwa pengisian ulang atau pengaktifan kembali saldo SIM menyebabkan lalu lintas jaringan seluler pulih, dan tautan Telco serta pemberitahuan tidak ada saldo hilang.
  15. Uji kewarasan setelah pemulihan layanan data.

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