Код 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
. Якщо я помиляюся, і це якимось чином має сенс, я з радістю визнаю це і поясню тут, чому.
Вимкнення цього налаштування НЕ вимикає передачу стільникового зв’язку взагалі . Підключення до Wi-Fi все ще отримує бал і відключається, якщо бал занадто низький. Але ей, початковий бал також встановлюється довільно.