¿Cómo decide Android Marshmallow a qué red WiFi unirse automáticamente?

Por ejemplo, tengo dos redes:

  • Dos redes: una red de punto de acceso abierto y una red privada cerrada mediante WPA.
  • El usuario tiene acceso a ambas redes.
  • El usuario se ha conectado recientemente a ambos.
  • Ambas redes tienen la misma intensidad de señal.

¿A qué red se une automáticamente? ¿Es aleatorio?

no, no es al azar. normalmente se elegirá la conexión con WPA seguro. pero no depende de una sola condición, se consideran muchos otros factores como el tráfico, la disponibilidad del dispositivo, etc.
Estaba escribiendo una gran respuesta para ti y, lamentablemente, reinicié mi teléfono por accidente, así que desapareció. Si no estás satisfecho con el comentario anterior, dime que lo escribiré de nuevo o alguien más lo hará.
@Spark Esperaba una gran respuesta o alguna documentación de Google :)

Respuestas (2)

Existe este archivo /data/misc/wifi/wpa_supplicant.conf

Cada red que guardó se enumera allí.

Cuando se enumeran varios bloques de red en este archivo de configuración, se selecciona el de mayor prioridad para su uso o, si se identifican varias redes con la misma prioridad, se usa el primero que aparece en el archivo de configuración.

(copia de http://www.freebsd.org/cgi/man.cgi?wpa_supplicant.conf(5) , creo que Android se comporta igual)

Hay algo llamado prioridad Wi-Fi, ajustable para algunos teléfonos en Settings - WiFi - Advanced - Wi-Fi priority, y también a través de algunas aplicaciones y módulos Xposed como GravityBox. Android mantiene esta lista de puntos de acceso recordados y asigna prioridades a cada uno de ellos.

No puedo encontrar una definición oficial de cómo se (re)asignan las prioridades (los desarrolladores de Android solo me dicen que existe prioridad ), pero aparentemente cuando recibe 2 AP recordados y se conecta a uno de ellos, luego conéctese al otro, este último recibirá un impulso en prioridad.

Sin embargo, no tengo idea de cómo las redes "privadas" afectan su funcionamiento.