Si bien no es la forma más fácil de resolver el problema, es posible hacerlo usando Tasker. Este es un programa que te permite crear scripts para varias cosas dentro de Android (por ejemplo, lo tengo configurado para desactivar el bloqueo de pantalla cuando me conecto a mi SSID de casa.) El siguiente perfil para detectar la señal de Wi-Fi está citado de este hilo:
Perfil: WiFi Bajo (1)
Evento: Desbloquear Pantalla
Entrar: WiFi (2)
Tarea: Señal WiFi (1)
A1: Establecer Variable [ Nombre:%wfs A:%WIFII Hacer cálculos: Apéndice: ]
A2: Dividir Variable [ Nombre:%wfs Separador:Sig: Borrar base: ]
A3: Limpiar Variable [ Nombre:%wfs1 Coincidencia de patrón: ]
A4: Dividir Variable [ Nombre:%wfs2 Separador: Borrar base: ]
A5: Establecer Variable [ Nombre:%WIFISG A:%wfs22 Hacer cálculos: Apéndice: ]
A6: Limpiar Arreglo [ Nombre:%wfs2 ]
Tarea: WiFi (2)
A1: Escribir Archivo [ Archivo:wifitest.txt Texto:Inicio de Tarea: %DATE %TIME Apéndice: ]
A2: Esperar [ MS:0 Segundos:15 Minutos:0 Horas:0 Días:0 ]
A3: Ir a [ Tipo:Acción Etiqueta Número:1 Etiqueta:Fin ] Si [ %SCREEN ~ apagado ]
A4: Ir a [ Tipo:Acción Etiqueta Número:1 Etiqueta:Fin ] Si [ %WIFII !~ *CONEXIÓN* ]
A5: Ejecutar Tarea [ Nombre:Detener Señal WiFi Detener: Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Variable de valor de retorno: ]
A6: Si [ %WIFISG < 3 ]
A7: WiFi [ Establecer: Apagado ]
A8: Esperar [ MS:0 Segundos:0 Minutos:5 Horas:0 Días:0 ]
A9: WiFi [ Establecer: Encendido ]
A10: Fin Si
A11: Ir a [ Tipo:Acción Etiqueta Número:1 Etiqueta:Verificar señal ]
A12: Escribir Archivo [ Archivo:wifitest.txt Texto:Fin de Tarea: %DATE %TIME Apéndice: ]
Personalmente nunca he hecho algo tan complicado con el Wi-Fi, pero los perfiles que tengo configurados alrededor de la SSID funcionan de maravilla.