GPS con Android
Esta entrada contiene el código de una aplicación “GPS con Android” desarrollada para la versión 2.4 o superior en la que mostramos las coordenadas GPS en las que nos encontramos.
Con el código que os vamos a dejar en la podemos mostrar la posición en el mapa de un dispositivo Android, es una mini aplicación que podéis descargaros e instalarla en vuestro dispositivo si lo queréis probar.
***La aplicación solo tiene la utilidad de mostrar la posición.
La aplicación muestra una imagen (un camioncito) en la posición en la que estamos en ese momento e indica la latitud y la altitud. Estas coordenadas se pueden mostrar en cualquier mapa como por ejemplo Google Maps, además podéis realizar una actualización de la posición pasándole un parámetro de tiempo que refrescará nuestros datos en el tiempo que hayáis indicado en la variable.
El código de la mini aplicación GPS con Android está comentado con bastantes explicaciones, si necesitáis alguna más podéis dejar un comentario y os responderemos en breve.
Este es el código:
Código GPS con Android
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | package spawn.gps; import java.io.IOException; import java.util.List; import java.util.Locale; import android.content.Context; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.widget.Toast; import android.graphics.drawable.Drawable; import android.os.Bundle; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; //GPS con Android public class GpsActivity extends MapActivity { private MapView mapView; private MapController mc; private ParticularItemizedOverlay itemizedoverlay; private Geocoder geoCoder; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager milocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); milocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, new MiLocationListener()); mapView = (MapView) findViewById(R.id.mapview); mc = mapView.getController(); mapView.setBuiltInZoomControls(true); Drawable drawable = this.getResources().getDrawable(R.drawable.ic_camion); itemizedoverlay = new ParticularItemizedOverlay(drawable,this); geoCoder = new Geocoder(this, Locale.getDefault()); } protected boolean isRouteDisplayed() { return false; } public class MiLocationListener implements LocationListener{ public void onLocationChanged(Location loc){ if (loc != null) { double lat = loc.getLatitude(); double lon = loc.getLongitude(); String coordenadas = "Se ha movido a: " + "Latitud = " + lat + "Longitud = " + lon; Toast.makeText( getApplicationContext(),coordenadas,Toast.LENGTH_LONG).show(); GeoPoint point = new GeoPoint((int) (lat),(int) (lon)); mc.animateTo(point); String address=""; //mc.setZoom(16); /////////////////////////// try { geoCoder.getFromLocation(40, 4, 1); //List <address>addresses = geoCoder.getFromLocation(lat/1E6, lon/1E6, 1); //if (addresses.size() > 0) { // for (int i = 0; i < addresses.get(0).getMaxAddressLineIndex(); i++) // address += addresses.get(0).getAddressLine(i) + "\n"; //} } catch (IOException e) { System.out.println("oooo que penita"); e.printStackTrace(); } /////////////////////////// //Saco un icono con dicha geolocalización List mapOverlays = mapView.getOverlays(); //Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher); //GeoPoint point = new GeoPoint(-4443769,40115845); OverlayItem overlayitem = new OverlayItem(point, "Está aquí", address); itemizedoverlay.addOverlay(overlayitem); mapOverlays.add(itemizedoverlay); mapView.invalidate(); } } public void onProviderDisabled(String provider){ Toast.makeText( getApplicationContext(),"Gps Desactivado",Toast.LENGTH_SHORT ).show(); } public void onProviderEnabled(String provider){ Toast.makeText( getApplicationContext(),"Gps Activo",Toast.LENGTH_SHORT ).show(); } public void onStatusChanged(String provider, int status, Bundle extras){} } }</address> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package spawn.gps; import java.util.ArrayList; import android.app.AlertDialog; import android.content.Context; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem; public class ParticularItemizedOverlay extends ItemizedOverlay { private ArrayList mOverlays = new ArrayList(); private Context mContext; public ParticularItemizedOverlay(Drawable defaultMarker, Context context) { super(boundCenterBottom(defaultMarker)); mContext = context; } public void addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } protected OverlayItem createItem(int i) { return mOverlays.get(i); } public int size() { return mOverlays.size(); } protected boolean onTap(int index) { OverlayItem item = mOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } } |
Esta es la imagen del GPS en un móvil con Android:
Aquí tenéis el código completo de la aplicación para que lo puedas descargar “GPS con Android“.
En este link tenéis el “autoinstalable de Android .Apk”
Podéis utilizar el código para ayudaros a crear cualquier aplicación que utilice el Gps para Android.