Код для shouldSwitchNetwork()
лучшего объясняет, что он делает. Он просто искусственно уменьшает WiFiI 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), который придумал какой-то dev, чтобы подтолкнуть поведение в желаемом направлении. Google, вероятно, не уверен относительно последствий этого параметра и оптимального способа настройки rssi
. Если я ошибаюсь и это как-то значимо, я рад это признать и объяснить здесь, почему.
Отключение этого параметра НЕ отключает передачу обслуживания сотовой связи вообще . Соединение WiFi все еще получает оценку и отключается, если оценка слишком низкая. Но, эй, начальная оценка также установлена произвольно.