รหัสที่shouldSwitchNetwork()
ดีที่สุดอธิบายว่ามันทำอะไร เป็นเพียงการลด WiFi RSSI (สัญญาณบ่งชี้ถึงความแรงของสัญญาณที่ได้รับ) เพื่อกระตุ้นให้เครื่องสถานะ WiFi ตัดสินใจเปลี่ยนการเชื่อมต่อจาก WiFi ไปเป็นเครือข่ายเซลลูลาร์ รอบ ๆบรรทัด 3559 ของ WifiStateMachine.java ( บรรทัด 4262สำหรับ Android 6.0.1_r10):
int rssi = mWifiInfo.getRssi() - 6 * mAggressiveHandover
+ (homeNetworkBoost ? WifiConfiguration.HOME_NETWORK_RSSI_BOOST : 0);
ตัวแปรmAggressiveHandover
คือค่าint
ที่ถูกตั้งค่าเป็น 0 หรือ 1 โดยการตั้งค่านักพัฒนา :
private void writeWifiAggressiveHandoverOptions() {
mWifiManager.enableAggressiveHandover(mWifiAggressiveHandover.isChecked() ? 1 : 0);
}
rssi
ตัวแปรก็จะมีอิทธิพลต่อวิธีการเชื่อมต่อจะถูกจัดประเภท: isBadRSSI
, หรือisLowRSSI
isHighRSSI
ทำไมมันถูกซ่อนอยู่ภายใต้ตัวเลือกของนักพัฒนาฉันจะบอกว่าเป็นเพราะมันดูเหมือนแฮ็คเล็กน้อยโดยมีสเกลาร์โดยพลการ (6) ที่นักพัฒนาบางคนคิดขึ้นมาเพื่อสะกิดพฤติกรรมในทิศทางที่ต้องการ Google rssi
อาจจะเป็นความไม่แน่นอนเกี่ยวกับผลกระทบของการตั้งค่านี้และวิธีที่ดีที่สุดในการปรับ ถ้าฉันผิดและมันมีความหมายฉันยินดีที่จะยอมรับและอธิบายที่นี่ว่าทำไม
การปิดการตั้งค่านี้ไม่ปิดการส่งมอบโทรศัพท์มือถือทั้งหมด การเชื่อมต่อ WiFi ยังคงได้รับคะแนนและถูกปิดใช้งานหากคะแนนต่ำเกินไป แต่เดี๋ยวก่อนคะแนนเริ่มต้นจะถูกตั้งค่าเองเช่นกัน