entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Android-Localización cambiar el proveedor de GPS a RED y viceversa

Hola.

Tengo el código el cual busca la localización de usuario mediante GPS. El problema es que si el GPS no encuentra la ubicación, por ejemplo porque el usuario se encuentra dentro de un edificio, me gustaría que la ubicación se intentase coger mediante la red.

Este es mi código:

        boolean network_enabled = false;

        //Implementando un listener
        locListener = new LocationListener() {

            public void onLocationChanged(Location location) {
                loc = location;
            }

            public void onProviderDisabled(String provider){

                //Si el gps ha sido desactivado, lanzamos una alerta
                if(provider.equalsIgnoreCase("gps")){
                        alertaTitulo = getResources().getString(R.string.no_hay_gps_ni_red_alert_titulo);
                        alertaTexto = getResources().getString(R.string.no_hay_gps_ni_red_alert_texto);
                        showNewAlert(alertaTitulo, alertaTexto);
                }

            }

            public void onProviderEnabled(String provider){
                //Si el gps ha sido activado comenzamos las escucha por el gps
                if(provider.equalsIgnoreCase("gps")){
                    loc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                }else{
                    loc = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                }

            }

            public void onStatusChanged(String provider, int status, Bundle extras){

            }
        };

        //Comenzamos la escucha
        locManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 0, 0, locListener);

Alguna ayuda?

Gracias y un saludo!

1 Respuesta

1voto

egoitz_gonzalez Puntos10050

La solución no es compleja pero tampoco es del todo simple.

Para ello, he intentado entender un poco mas el funcionamiento de Android con el tema de la localización.

En este post esta todo bastante bien explicado.

En el se indica como podemos, seleccionar unos criterios y dependiendo de ellos Android nos devolverá los proveedores adecuados para nosotros.

De todas formas, y sin tener en cuenta los criterios que menciono, se puede realizar una búsqueda utilizando el GPS y la RED a la vez.

En este caso no sé como Android decide que poveedor comienza a realizar la busqueda antes (Si alguien lo puede aclarar sería perfecto).


locManager.requestLocationUpdates(metodoDeLocalizacion, 0, 0, locListener);

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);

Después para saber que proveedor me ha enviado la localización utilzo el siguiente código:

public void onLocationChanged(Location location) {
//Para saber cual es el proveedor que nos da la posición. n
String proveedor = location.getProvider();

providerQueEnviaLaUbicacion = location.getProvider();
loc = location;
}

NO responde exactamente a la pregunta. Ya que no estoy desactivando o activando un proveedor o otro, pero si estoy con los dos proveedores al mismo tiempo y Android realiza teniendo en cuenta la configuración del usuario. Es decir, si el usuario tiene desabilitada la ubicación por GPS, Android realizará la búsqueda por Red

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta