ubicacion tiempo studio real posicionamiento obtener localizacion ejemplo coordenadas con compartir java android google-maps gps location

java - tiempo - obtener ubicacion gps android studio



Cómo obtener la ubicación de Android GPS (5)

Aquí está tu problema:

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

Latitud y Longitud son valores double , ya que representan la ubicación en grados.

Al convertirlos a int , estás descartando todo lo que hay detrás de la coma, lo que hace una gran diferencia. Ver "Grados decimales - Wiki"

Saludos, estoy tratando de obtener la ubicación GPS actual a través de Android. Seguí este tutorial y artículo de Vogellas también. Aunque no está funcionando. Cuando uso LocationManager.NETWORK_PROVIDER, siempre obtengo una latitud de 51 y una longitud de 9, sin importar dónde estoy parado. Cuando uso LocationManager.GPS_PROVIDER, no recibo nada en absoluto.

Aunque todo funciona al usar GMaps: S No tengo idea de por qué. ¿Cómo puedo obtener la ubicación actual del GPS como lo hace 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 } }


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; } }


El problema inicial se resuelve al cambiar lat y lon al doble.

Deseo agregar un comentario a la solución con Location location = locationManager.getLastKnownLocation(bestProvider); Funciona para conocer la última ubicación conocida cuando se solicitó otra aplicación para eso. Si, por ejemplo, ninguna aplicación lo hizo desde el inicio del dispositivo, el código devolverá ceros (me pasé un tiempo recientemente para descubrirlo).

Además, es una buena práctica dejar de escuchar cuando no hay necesidad de eso por 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 en un dispositivo.


Este código tiene un problema:

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

Puedes cambiar int para double

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


Extracto:-

try { cnt++;scnt++;now=System.currentTimeMillis();r=rand.nextInt(6);r++; loc=lm.getLastKnownLocation(best); if(loc!=null){lat=loc.getLatitude();lng=loc.getLongitude();} Thread.sleep(100); handler.sendMessage(handler.obtainMessage()); } catch (InterruptedException e) { Toast.makeText(this, "Error="+e.toString(), Toast.LENGTH_LONG).show(); }

Como puede ver arriba, un subproceso se ejecuta junto con el subproceso principal de la actividad de la interfaz de usuario que muestra continuamente latitud GPS, largo junto con la hora actual y una tirada de dados aleatoria.

Si tiene curiosidad, simplemente revise el código completo: ubicación del GPS con lanzamiento de dados aleatorio y hora actual en un hilo separado