El código para shouldSwitchNetwork()
explica mejor lo que hace. Sólo reduce artificialmente el WiFi RSSI (indicación de la intensidad de la señal recibida) para animar a la máquina de estado WiFi a decidir cambiar la conexión. Alrededor de línea 3559 de WifiStateMachine.java :
int rssi = mWifiInfo.getRssi() - 6 * mAggressiveHandover
+ (homeNetworkBoost ? WifiConfiguration.HOME_NETWORK_RSSI_BOOST : 0);
La variable mAggressiveHandover
es un int
que es establecido en 0 o 1 por los Ajustes del Desarrollador :
private void writeWifiAggressiveHandoverOptions() {
mWifiManager.enableAggressiveHandover(mWifiAggressiveHandover.isChecked() ? 1 : 0);
}
El rssi
La variable "A" influye en la forma en que se clasifica la conexión: isBadRSSI
, isLowRSSI
o isHighRSSI
.
En cuanto a por qué está oculto bajo las opciones de desarrollo, diría que es porque es un feo hack con un escalar aparentemente arbitrario (6) que a algún dev se le ocurrió para empujar el comportamiento en la dirección deseada. Google probablemente no está seguro de las consecuencias de este ajuste y la forma óptima de ajustar rssi
.
Desactivando esta puesta en marcha no apaga por completo el traspaso de celulares . La conexión WiFi sigue obteniendo una puntuación y se desactiva si la puntuación es demasiado baja. Pero oye, la puntuación inicial también se establece de forma arbitraria.
0 votos
A juzgar por el nombre de la opción, parece que esta opción hace que el teléfono esté más dispuesto a utilizar los datos celulares cuando la señal WiFi es mala