Các mã cho shouldSwitchNetwork()
giải thích tốt nhất những gì nó làm. Nó chỉ làm giảm một cách giả tạo WiFi RSSI (chỉ báo cường độ tín hiệu nhận được) để khuyến khích máy trạng thái WiFi quyết định chuyển kết nối từ WiFi sang mạng di động. Xung quanh dòng 3559 của WifiStateMachine.java ( dòng 4262 cho Android 6.0.1_r10):
int rssi = mWifiInfo.getRssi() - 6 * mAggressiveHandover
+ (homeNetworkBoost ? WifiConfiguration.HOME_NETWORK_RSSI_BOOST : 0);
Biến mAggressiveHandover
là một cài đặtint
được đặt thành 0 hoặc 1 bởi Cài đặt dành cho nhà phát triển :
private void writeWifiAggressiveHandoverOptions() {
mWifiManager.enableAggressiveHandover(mWifiAggressiveHandover.isChecked() ? 1 : 0);
}
Các rssi
biến tiếp tục ảnh hưởng như thế nào kết nối được phân loại: isBadRSSI
, isLowRSSI
, hoặc isHighRSSI
.
Về lý do tại sao nó ẩn dưới các tùy chọn của nhà phát triển, tôi nói rằng đó là vì nó có vẻ hơi hack, với một vô hướng dường như tùy ý (6) mà một số nhà phát triển đã đưa ra để đẩy lùi hành vi theo hướng mong muốn. Google có thể không chắc chắn về hậu quả của cài đặt này và cách điều chỉnh tối ưu rssi
. Nếu tôi sai và điều này có ý nghĩa nào đó, tôi rất vui khi thừa nhận và giải thích tại sao.
Tắt cài đặt này KHÔNG tắt hoàn toàn chuyển giao di động . Kết nối WiFi vẫn nhận được điểm và bị vô hiệu hóa nếu điểm quá thấp. Nhưng này, điểm số ban đầu được đặt tùy ý quá.