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