getLastKnownLocations siempre devuelve nulo

No puedo getLastKnownLocations en mi dispositivo Android (Samsung Galaxy Note N7000) ya que siempre es nulo, las torres se detectan como red, por lo que está bien, ¿alguien tiene idea de cómo obtener mi ubicación?

    d = getResources().getDrawable(R.drawable.songs_gray);

    //Placing pinpoint at location
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria crit = new Criteria();

    towers = lm.getBestProvider(crit, false);

    Toast.makeText(LocationActivity.this, "Towers: " + towers, Toast.LENGTH_SHORT).show();

    Location location = lm.getLastKnownLocation(towers);

    Toast.makeText(LocationActivity.this, "Location: " + location, Toast.LENGTH_SHORT).show();

    if(location !=null){
        lat = (int) (location.getLatitude()*1E6);
        longi = (int) (location.getLongitude()*1E6);
        GeoPoint ourLocation = new GeoPoint(lat, longi);
        OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
        CustomPinpoint custom = new CustomPinpoint(d, LocationActivity.this);
        custom.insertPinPoint(overlayItem);
        overlayList.add(custom);    
    }else{
        Toast.makeText(LocationActivity.this, "Couldn't get provider", Toast.LENGTH_SHORT).show();
    }

Manifiesto

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

preguntado el 28 de julio de 12 a las 17:07

3 Respuestas

Con getLastKnownLocation() solo puedes conseguir un Location objeto cuando el proveedor de ubicación especificado está activo.

La documentación dice:

Devuelve una ubicación que indica los datos de la última corrección de ubicación conocida obtenida del proveedor dado. Esto se puede hacer sin iniciar el proveedor. Tenga en cuenta que esta ubicación podría estar desactualizada, por ejemplo, si el dispositivo se apagó y se movió a otra ubicación.

Si el proveedor está actualmente deshabilitado, se devuelve un valor nulo.

Para detectar la posición actual y no la última detectada, debe habilitar los proveedores de ubicación. Este tutorial debería ayudarlo a comprender cómo trabajar con proveedores de ubicación como GPS y red.

Respondido 28 Jul 12, 17:07

la última ubicación conocida solo está disponible si otra aplicación ha determinado la ubicación antes de su llamada. inicie mapas o alguna otra aplicación y deje que obtenga un bloqueo de ubicación. luego ejecuta tu aplicación.

si tú realmente necesitas ubicación en su aplicación, debe recurrir a algún otro método, porque no puede depender de que haya una última ubicación conocida.

Como nota al margen, ACCESS_MOCK_LOCATION no se requiere aquí. de los documentos,

Permite que una aplicación cree proveedores de ubicación simulados para realizar pruebas

Respondido 28 Jul 12, 17:07

¿Cómo es que la aplicación Google Maps sabe dónde estoy y este comando aún devuelve un valor nulo? - Andrew s

¡No importa, descubrí mi problema! Solo necesitaba los servicios de ubicación de Google en mi teléfono

Respondido 28 Jul 12, 17:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.