Tutorial GPS en Android Utilizando Adt Bundle Eclipse
Al final de este tutorial tendremos una pantalla que capture y muestre la latitud, longitud y presición de nuestra posición actual.
Pasos:
1. Tener instalado lo siguiente:
- SDK Adt Bundle Eclipse, descarga la ultima versión de aquí.
- JDK: (Java Development Kit), descarga la ultima versión de aquí
2. Crear un proyecto nuevo con nombre "CoordenadasGPS" y dar click en Next
3. Elegir un icono para el aplicativo, pueden buscar en google cualquier imagen y para escogerlo le dan en el botón "browse", luego dar click en Next, Next, y Finish.
4. Definiendo el layout: La pantalla tendrá básicamente 3 TextView (latitud, longitud, presicion) y 2 Buttons (activar, desactivar)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4D4D4D"
android:padding="10dp"
android:orientation="vertical"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#A4C639"
android:padding="5dp" >
<TextView
android:id="@+id/LblPosicion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Posicion actual:" />
<TextView
android:id="@+id/LblPosLatitud"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/LblPosicion"
android:layout_marginBottom="5dp"
android:background="#aaaaaa"
android:padding="5dp"
android:textColor="#000000" />
<TextView
android:id="@+id/LblPosLongitud"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/LblPosLatitud"
android:layout_marginBottom="5dp"
android:background="#aaaaaa"
android:padding="5dp"
android:textColor="#000000" />
<TextView
android:id="@+id/LblPosPrecision"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/LblPosLongitud"
android:layout_marginBottom="5dp"
android:background="#aaaaaa"
android:padding="5dp"
android:textColor="#000000" />
<Button
android:id="@+id/BtnActualizar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/LblPosPrecision"
android:text="Activar" />
<Button
android:id="@+id/BtnDesactivar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/BtnActualizar"
android:text="Desactivar" />
</RelativeLayout>
</FrameLayout>
5. Definiendo el la clase MainActivity.java: (ver los comentarios para comprender que hace cada cosa)
package com.example.coordenadasgps;
//Estos 3 imports son necesarios para usar GPS
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.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btnActualizar;
private Button btnDesactivar;
private TextView lblLatitud;
private TextView lblLongitud;
private TextView lblPrecision;
private LocationManager locManager;
private LocationListener locListener;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Se captura los 2 botones y los 3 TextView de la pantalla
btnActualizar = (Button)findViewById(R.id.BtnActualizar);
btnDesactivar = (Button)findViewById(R.id.BtnDesactivar);
lblLatitud = (TextView)findViewById(R.id.LblPosLatitud);
lblLongitud = (TextView)findViewById(R.id.LblPosLongitud);
lblPrecision = (TextView)findViewById(R.id.LblPosPrecision);
//Creamos un listener onClick para los botones actualizar y desactivar
//estos se disparan cuando se clickea(touch) el respectivo botón
btnActualizar.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), "Comienza localización...", Toast.LENGTH_SHORT).show();
comenzarLocalizacion();
}
});
btnDesactivar.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
locManager.removeUpdates(locListener);
Toast.makeText(getApplicationContext(), "Desactivadas las actualizaciones!", Toast.LENGTH_SHORT).show();
}
});
}
//Creamos un método que dispara eventos del GPS
private void comenzarLocalizacion()
{
//Obtenemos una referencia al LocationManager
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//Instanciamos el locListener que nos permite escuchar al GPS
locListener = new LocationListener()
{
public void onLocationChanged(Location location)
{
//Aqui mostramos los datos de la posicion que se encuentran en "location"
mostrarPosicion(location);
}
@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
}
};
//El LocationManager administra el GPS, por ejemlo:
//Realiza solicitudes de actualización cada 15000 milisegundos (15 segundos)
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 15000, 0, locListener);
}
private void mostrarPosicion(Location loc)
{
if(loc != null)
{
lblLatitud.setText("Latitud: " + String.valueOf(loc.getLatitude()));
lblLongitud.setText("Longitud: " + String.valueOf(loc.getLongitude()));
lblPrecision.setText("Precision: " + String.valueOf(loc.getAccuracy()));
}
else
{
lblLatitud.setText("Latitud: No hay datos");
lblLongitud.setText("Longitud: No hay datos");
lblPrecision.setText("Precision: No hay datos");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
6. Configurar el AndroidManifest.xml: Nos situamos en la pestaña de permisos del manifest y agregamos un nuevo permiso de tipo "Uses permission" y escogemos "android.permission.ACCESS_FINE_LOCATION"
o nos vamos a la vista de edición xml y escribimos la siguiente linea:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
7. Correr la aplicación como "Android Application"
Si lo corres en el AVD(Android Virtual Device) es probable que no muestre coordenadas del GPS por lo que tendrás que pasar la apk a un dispositivo que posea GPS, deberá quedar algo como esto:



Bacan men... q aportes con este tipo de aplicaciones... asi no olvodas lo aprendido y continuas practicando
ResponderEliminarEse es el propósito compañero, compartir conocimientos y así también perdura lo aprendido
ResponderEliminarexcelente para los que vamos comenzando, lo estudiare bastante, Gracias :D
ResponderEliminar