Activa WiFi automáticamente cuando estés cerca de una red guardada

Parece que una de las funciones de Android O 8.0 es la capacidad de habilitar Wi-Fi automáticamente cuando estás cerca de una red guardada.

Android O - Activación automática de Wi-Fi

¿Se puede lograr esto a través de tasker hoy?

  1. Agregar perfil> Estado> Red> Wifi cercano (como en estas preguntas aquí y aquí )

    Perfil > Estado > Red > Wifi cerca

  2. Ingrese el(los) nombre(s) de la red SSID / Seleccione las redes actualmente en el rango

    Nombres de red SSID

  3. Esto funciona uno a la vez, pero idealmente, podría extraer de la lista actual de redes WiFi guardadas/configuradas. Android mantiene una lista de redes guardadas previamente:

    Redes guardadas

P : ¿Pero hay alguna forma de recuperar mediante programación todos los nombres de red guardados y establecerlos como una variable?

Nota : existen algunas aplicaciones como SmartWifiToggler , basadas en GPS, pero prefiero lograrlo a través de tasker si es posible.

Si no me equivoco, no tiene que especificar necesariamente el AP inalámbrico, de esta manera se consideran todos los AP inalámbricos cercanos (se elige uno con la señal más fuerte) dado que se guardan en la configuración del sistema Android
¿En qué se diferencia el uso de señales WiFi para determinar si debe "habilitar WiFi" de tener WiFi activado para empezar? Utilizará redes WiFi guardadas cuando estén disponibles y escaneará en segundo plano cuando no esté cerca de una red guardada.
@xavier_fakerat, el objetivo es habilitar WiFi cuando estoy cerca de cualquier red que haya guardado y deshabilitarlo en cualquier otro lugar.
@mattm, el problema es que cuando tengo WiFi encendido mientras camino, a menudo se atasca en una pantalla de inicio de sesión e interrumpe el acceso inalámbrico hasta que inicie sesión o apague el wifi. En general, me resulta más fácil apagarlo a menos que esté en casa (o en una lista de ubicaciones similares donde confío en el WiFi).
@mattm, pero ahora me doy cuenta de que solo se conecta a esas redes bloqueadas de inicio de sesión porque ellas mismas son parte de mi lista de redes guardadas. Tendría que olvidarlos o nombrar individualmente las redes que quiero habilitar siempre WiFi
Sí, entiendo su punto, por lo que desea una solución en la que guarde los AP inalámbricos preferidos como algún tipo de variable, ¿no? De lo contrario, se conectaría a uno que requiere iniciar sesión. Déjame ver si puedo resolverlo aquí.
Tasker sería difícil, aún así encontraría el código si es posible, pero siempre puede optar por una aplicación de terceros
Simplemente me encontré con un escenario similar que desea tener: activación de WiFi doble de Tasker con la declaración 'o' , parece que hay muchas posibilidades para lograr esto ... lo actualizaré una vez que termine de probar mi perfil en esto
No me gusta repetir esa respuesta, pero sé que definitivamente satisface sus necesidades. Simplemente lea acerca de la coincidencia de patrones y utilícelo para incluir SSID en la lista blanca o en la lista negra. ¡Salud!

Respuestas (2)

Tuve el mismo problema y finalmente encontré un enlace a este proyecto: https://www.reddit.com/r/tasker/comments/8p0ywt/project_share_switching_to_saved_wifi/ El proyecto en sí hace un poco más, pero muestra una forma de obtener los wifi guardados con funciones predeterminadas de Tasker.

Entonces, con respecto a su P: ¿Pero hay alguna forma de recuperar mediante programación todos los nombres de red guardados y establecerlos como una variable?

R: Sí, existe, utilizando la acción Tasker de tipo Código -> Función Java (consulte también la función $getConfiguredNetworks en el proyecto vinculado):

1.) Use la función Code Java para obtener WifiManager de CONTEXT

2.) Use la función Code Java para obtener redes configuradas desde WifiManager

3.-6.) Use el reemplazo de búsqueda variable para obtener los SSID de las redes configuradas usando expresiones regulares

7.-8.) Establecer variable para ser verificada por Tasker Wifi Near State

9.) (Opcional) Activar los pasos 1-8 automáticamente

Acciones detalladas de Tasker:

1.) Función Java:

a) Clase u objeto = CONTEXTO

b) Function=getSystemService{Object}(String) <seleccione usando el ícono de lupa y desplácese hacia abajo o use el filtro en la parte inferior de la pantalla, preste atención para no elegir la versión (Clase)>

c) Param=wifi

d) Retornar{Objeto}=(Gestor Wifi) wifiman

--> el resultado en la vista Tasker debería verse así: (WifiManager) wifiman = CONTEXT.getSystemService(wifi)

2.) Función Java:

a) Clase u objeto = wifiman

b) Función=getConfiguredNetworks{Lista}()

c) Retornar{Lista}=%get_configured_networks

--> el resultado en la vista Tasker debería verse así: %get_configured_networks = wifiman.getConfiguredNetworks()

Extraiga los SSID, hay muchas maneras, lo hice recorriendo la lista

3.) Para: Variable %get_configured_networks Elementos %configured_network

Elimine todo de la variable que no sea el SSID usando una expresión regular

4.) Reemplazo de búsqueda variable:

a) Variable=%red_configurada

b) Search=(?:.|\n)*SSID:\s*"(.*)"(?:.|\n)* <esta expresión regular capturará el nombre SSID en el grupo de captura 1>

c) Reemplazar Coincidencias=verdadero

d) Reemplazar con = $ 1

Agregar SSID a la matriz

5.) Array Push: Variable Array %ssids Posición 1 Valor %configured_network

Bucle final

6.) Terminar por

Unir los SSID con / como separador para adaptarse a Taskers wifi cerca de la sintaxis SSID1/SSID2/.../SSIDn

7.) Unión variable %ssids Unión /

Establezca la variable global para que sea verificada por Taskers Wifi Near State

8.) Nombre de conjunto de variables %SavedWifis a %ssids

Entonces, una vez hecho esto, se puede usar un Wifi Cercano %SavedWifis. Pero después de haber agregado un nuevo Wifi o eliminado uno anterior, debe actualizar el valor nuevamente.

9.) Ejecute Taks para actualizar %SavedWifis regularmente (por ejemplo, según el evento de tiempo o cada vez que se conecte wifi), si alguien conoce una forma de reaccionar ante un evento 'savedWifisUpdated', hágamelo saber.ingrese la descripción de la imagen aquí

Echa un vistazo a la aplicación llamada IFTTT, creo que tienen algo así donde puedes configurarlo.

Si bien esta respuesta podría ayudar, desafortunadamente todavía es demasiado breve en detalles. ¿Qué deben hacer los lectores después de instalar IFTTT? En lugar de encontrar "algo así", ¿cómo configurar correctamente la aplicación para que haga lo que quiere el autor de la pregunta?