Bueno, luego de dos meses de sufrirlo (es bastante molesto dado que uno tiene verificar que haya 3G cada vez que se aleja de una Wifi) desarrollé un arreglo.
Este arreglo debe considerarse como un "workaround" al problema dado que la solución definitiva está en los servicios de conectividad de Qualcomm.
Es un servicio sencillo (y muy ligero) que hace lo siguiente:
- Mientras esté no se esté usando la red 3g (el usuario está conectado en Wifi) se verifica la salud de la conexión cada cierto tiempo. Este tiempo es el que le concede el sistema por lo que no se realizan wakelocks adicionales.
- Si durante esas verificaciones detecta no se encuentra correctamente relacionado a la red o si ha pasado cierto tiempo (algo menos de una hora) hace un switch de 2 segundos al modo "2G Preferido" y luego regresa a "3G Preferido" siempre y cuando el usuario no esté en llamada.
- Este switch es transparente al usuario dado que, como escribia, solo se hacen los switchs siempre y cuando no se estén usando ni los datos ni el teléfono.
Este switch 2g / 3g es más conveniente al modo avion on/off: Reinicia el vinculo de datos entre el movil y el operador sin cortar otras cosas.
Si alguien desea instalarlo, esta es la apk del servicio (30 kb):
enpalermo.com/verificador3G.apk
Para el que se interese por las fuentes:
enpalermo.com/verificador3Gsrc.zip
REQUISITOS:
IMPORTANTE: Solo usarla en la de Ivan del 24/04. Parece que no funciona en las Cyanogen y variantes.
- Lollipop 5.1 o superior (no hice apk para 5.0).
- ROOT.
Instalación:
- Instalar la APK.
- Iniciar Verificador3G una vez para activar el ROOT (hay que conceder a Verificador3G derechos permanentes) y el servicio.
Al iniciar el programa se vé esta pantalla:
Lo importante es que Root este en "true" y que API SetPreferedNetworkType muestre un número entero (93 en mi caso).
Luego, reiniciar el dispositivo y estará activo el servicio (no es necesario volver a iniciar la aplicación).
Cada vez que el servicio haga un switch 2g/3g loguerá una lína en
/sdcard/resetGSM.log
También se puede seguir su actividad usando logcat.
Por favor, el que lo instale me avisa que tal le va...
Saludos!