Cómo obtener la ubicación GPS de Android

Saludos, estoy tratando de obtener la ubicación GPS actual mediante Android. Seguí este artículo de Tutorial y Vogellas también. Aunque no está funcionando. Cuando utilizo LocationManager.NETWORK_PROVIDER Siempre obtengo una latitud de 51 y una longitud de 9 – no importa dónde esté. Cuando uso LocationManager.GPS_PROVIDER, no recibo nada en absoluto.

Aunque todo funciona cuando se utiliza GMaps: S No idea de por qué. ¿Cómo puedo obtener la ubicación GPS actual como GMaps?

Aquí está mi código:

package com.example.gpslocation; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.util.Log; import android.view.Menu; public class GPS_Location extends Activity implements LocationListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gps__location); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.gps__location, menu); return true; } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub int latitude = (int) (location.getLatitude()); int longitude = (int) (location.getLongitude()); Log.i("Geo_Location", "Latitude: " + latitude + ", Longitude: " + longitude); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } } 

Aquí está tu problema:

 int latitude = (int) (location.getLatitude()); int longitude = (int) (location.getLongitude()); 

La latitud y la longitud son valores double , porque representan la ubicación en grados.

Al lanzarlos a int , estás descartando todo detrás de la coma, lo que hace una gran diferencia. Véase "Decimal Degrees – Wiki"

Darle una oportunidad :

 public LatLng getLocation() { // Get the location manager LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); String bestProvider = locationManager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(bestProvider); Double lat,lon; try { lat = location.getLatitude (); lon = location.getLongitude (); return new LatLng(lat, lon); } catch (NullPointerException e){ e.printStackTrace(); return null; } } 

Este código tiene un problema:

 int latitude = (int) (location.getLatitude()); int longitude = (int) (location.getLongitude()); 

Puede cambiar int a double

 double latitude = location.getLatitude(); double longitude = location.getLongitude(); 

Me gustaría comentar sin embargo mi reputación es menos de 50, por lo que escribir aquí. El problema inicial se resuelve cambiando lat y lon a doble.

Quiero añadir un comentario a la solución con Location location = locationManager.getLastKnownLocation(bestProvider); Funciona para averiguar la última ubicación conocida cuando otra aplicación fue lisnerning para eso. Si, por ejemplo, ninguna aplicación hizo eso desde que el dispositivo empezó, el código devolverá ceros (pasé algún tiempo yo mismo recientemente para averiguarlo).

Además, es una buena práctica para dejar de lisnerning cuando no hay necesidad de que locationManager.removeUpdates(this);

Además, incluso con permisos en manifest , el código funciona cuando el servicio de ubicación está habilitado en la configuración de Android de un dispositivo.

  • Donde el archivo .apk se coloca en el teléfono después de la instalación
  • No puede encontrar la ubicación exacta actual en android
  • ¿Cómo puedo obtener el nombre de la ciudad de mi posición actual?
  • Obtener la ubicación actual rápida y una vez en android
  • Cómo animar un marcador a través de un ArrayList de LatLng puntos?
  • Pasar cadenas entre actividades en android
  • Error invocar método virtual 'doble android.location.Location.getLatitude ()' en una referencia de objeto nulo
  • obtener la ubicación actual (gps / wifi)
  • ¿Puede Flurry Analytics informar la ubicación del usuario por ciudad en Android?
  • Compruebe si el usuario ha activado GPS después de
  • El proveedor de ubicación fusionado setsmallestDisplacement no funciona en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.