studio - Android-¿Cómo obtener la ubicación actual(latitud y longitud)?
obtener coordenadas gps android (4)
Estoy utilizando el siguiente código para obtener la ubicación actual (latitud y longitud), pero no obtengo la ubicación actual (latitud y longitud).
Alguien sabe por qué?
package com.ram.currentlocation;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class Location_Gps extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " +
"Latitud = " + loc.getLatitude() +
"Longitud = " + loc.getLongitude();
Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider)
{
Toast.makeText( getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT ).show();
}
@Override
public void onProviderEnabled(String provider)
{
Toast.makeText( getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
}
PS: Estoy usando los siguientes permisos en el archivo de manifest
:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_CORSE_LOCATION"/>
¿En tu manifiesto de android estableciste los permisos?
android.permission.ACCESS_FINE_LOCATION
En la medida en que solo obtenga (0,0) co-ords, probablemente esté usando el emulador. Si está utilizando eclipse, vaya al control del emulador y, en la parte inferior, puede enviar las copias falsas al dispositivo.
Debe enviar la corrección de ubicación al emulador, ya que el emulador es el software que debe proporcionar con la corrección de ubicación.
Si está utilizando eclipse vaya a
Window -> Show view -> Other
Seleccione la pestaña de Android y busque el control del emulador.
Después de ver la ventana de control del emulador, navegue a los controles de ubicación.
Como puedes ver en la foto de abajo
Después de que hayas enviado loc fix, puedes usar
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Donde lm
es el objeto LocationManager
para que se realice el 90% del trabajo;)
¡Aclamaciones!
Tienes un error en tu archivo manifiesto. La correcta es:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Usted no está utilizando el permiso correcto. El correcto es:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Por cierto, su demanda solo puede ser cumplida por:
<using-permission android:name="ACCESS_FINE_LOCATION" />
Así que no hay necesidad de ACCESS_COARSE_LOCATION