Kode untuk yang shouldSwitchNetwork()
terbaik menjelaskan apa fungsinya. Ini hanya mengurangi RSSI WiFi (indikasi kekuatan sinyal yang diterima) untuk mendorong mesin keadaan WiFi memutuskan untuk mengalihkan koneksi dari WiFi ke jaringan seluler. Sekitar baris 3559 dari WifiStateMachine.java ( baris 4262 untuk Android 6.0.1_r10):
int rssi = mWifiInfo.getRssi() - 6 * mAggressiveHandover
+ (homeNetworkBoost ? WifiConfiguration.HOME_NETWORK_RSSI_BOOST : 0);
Variabelnya mAggressiveHandover
adalah int
yang diatur ke 0 atau 1 oleh Pengaturan Pengembang :
private void writeWifiAggressiveHandoverOptions() {
mWifiManager.enableAggressiveHandover(mWifiAggressiveHandover.isChecked() ? 1 : 0);
}
The rssi
variabel melanjutkan dengan pengaruh bagaimana koneksi diklasifikasikan: isBadRSSI
, isLowRSSI
, atau isHighRSSI
.
Mengenai mengapa itu disembunyikan di bawah opsi pengembang, saya akan mengatakan itu karena tampaknya sedikit meretas, dengan skalar yang tampaknya sewenang-wenang (6) yang beberapa pengembang ajukan untuk mendorong perilaku ke arah yang diinginkan. Google mungkin tidak yakin tentang konsekuensi pengaturan ini dan cara optimal untuk menyesuaikan rssi
. Jika saya salah dan ini entah bagaimana berarti, saya senang mengakuinya dan menjelaskan alasannya di sini.
Mematikan pengaturan ini TIDAK mematikan penyerahan seluler sama sekali . Koneksi WiFi masih mendapat skor dan dinonaktifkan jika skornya terlalu rendah. Tapi hei, skor awal juga ditetapkan secara sewenang-wenang.