Saltar al contenido
Codifíca.me | Desarrollo web | Programación

GPS con Android | Mostrar tu posición

8 enero, 2012
GPS android

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() &gt; 0) { // for (int i = 0; i &lt; 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:

GPS 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.

Entradas relacionadas

Responder a sofia Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.

Comentarios (38)

tengo una duda, me da este error al momento de abrir el proyecto:

[2012-03-27 00:33:57 – Gps] Unable to resolve target ‘Google Inc.:Google APIs:10’

Responder

El error que te da es porque no has indicado el api que vas a usar.

La idea es que cuando haces un proyecto te dice que api vas a usar si usas las normales, las que no son de google,usease la 2.3 o la 4.0
va bien excepto por el tema que esta usando google maps
como usas google maps, al hacer el proyecto tienes que indicar que la estoy haciendo para la api de google, la 10… si no haces esto te saltará ese error!

Responder

oye x k marca error en id mapView = (MapView) findViewById(R.id.mapview); y despues corrijo el id y pasa al mapview

Responder

Hola,

No he entendido bien a que te refieres, si me das más información igual puedo echarte una mano.

Saludos

Responder

estoy desarrollando lo k es el gps pro al guiarme un poko con tu codigo ami m muestra un error en: id, de esta linea de codigo al ponerle en la cruz k nos marca al lado izquierdo se corrije pro despues de corregir el id manda una linea roja en .mapView y ya despues marco lo que es la cruz del lado izquierdo pro marca una opcion que es rename lo marco pro sale un ectangulo y ya se keda como erroneo y no lo corre.

esta es la linea donde sale el error en tu cod no se si falte una libreria o no se llevo poko desarrollando mapView = (MapView) findViewById(R.id.mapview); y despues

gracias

Responder

Hola,
Parece que tienes un error de referencias en el código, es posible que el xml dónde deberías tener el mapview esta mal referenciado.
Saludos

Responder

Hola amigo una pregunta corri el codigo y no me causo problemas pero al momento de hacer el instaldor lo hace y lo instala pero si lo quiero abrir en el telefono sale error, tambien descargue el apk que tienes en la pagina y me sale lo mismo alguna idea del porque??

Responder

En mi caso, sobre la versión 2.4 corre perfectamente.
¿Qué versión tienes?
¿Qué error te muestra?

Responder

Tengo un problema, al cambiar de localización me crea perfectamente el icono de la nueva localización, pero se mantiene el anterior, se supone que el invalidate(); es para que no ocurra eso o no ?
no entiendo por que no desaparece el icono anterior.

agradecería tu respuesta.

y gracias por el tutorial!

Responder

Ya lo solucioné xD

Tengo otra consulta, por lo que entiendo, los overlays son capas que se superponen sobre le mapa, se pueden tener dos capas ?
tengo una capa con la posicion actual que se va actualizando, como en tu ejemplo, y quisiera tener otra capa, donde estuvieran los iconos de distintas ubicaciones de interés.
como puedo realizar esto ?

Gracias.

Responder

Hola Joaquín,

En principio, podrías hacerlo con “overlays” creando diferentes capas dependiendo de lo que necesites poner.

Saludos

Responder

por q en el emulador de eclipse no me sale nada? me dice que la aplicacion no esta instalada?
solo funciona para el telñefono?

Responder

quisiera saber si con esta aplicacion me puedo ubicar en un mapa creado por mi en shape y que libreria debo utilizar

Responder

como seria el codigo,si cuando yo ingrese las coordenadas me muestre un punto en el mapa

Responder

Hola que tal descargue el codigo y compila sin problemas pero al correrlo en un telefono no hace nada, ni marca error solo sale una cuadricula con un punto, sabras a que se debe esto?

saludos

Responder

Hl tengo el programa almacenado aqui en mi pc pero son de android y no se como pasarlos a mi celular?

Responder

Hola, muy interesante el codigo. Tengo una pregunta, sabes por casualidad o tienes alguna pagina de referencia donde pueda documentarme sobre como puedo capturar los datos que me envia el dispositivo GPS y almacenarlos en una BD?

Gracias.

Responder

Hola Javier,

Claro, hicimos una aplicación para Android (con Java) en la que el móvil enviaba los datos cada 20 seg. a una base de datos MySql alojada en un servidor web. Despues desde una página web haciamos consultas a la base de datos para obtener las rutas que habían seguido los distintos móviles. Y por último pintabamos esas rutas en nuestra página web dónde incluiamos un mapa de “Google Maps”. Dónde se podía ver perfectamente que ruta había realizado cada usuario, cada día, etc.

Un saludo.

Responder

donde puedo checar ese código? 🙂

Responder

hola me puedes ayudar me sale una cxudricula en el emulador pero en el telefono me sale q la plicacion no se puede instalar como soluciono esto…

Responder

Hola,
No se muy bien a que te refieres, si me das más detalles.
Saludos

Responder

Ber. No encuentro lo que pusiste, tanto la aplicacion JAVA para que el movil envie datos cada 20 seg, a una base de datos MySql alojada en un servidor web. Quiero empezar a hacer todo de cero. Gracias.

Responder

hola,
me parece interesante esto pero lo que estado buscando es algo diferente, lo que yo e estado buscando es como rastrear un gps desde mi android con una apk, sin embargo lo único que e encontrado es como ver mi localización y eso no es lo que busco espero puedan ayudarme gracias.

Responder

Hola,
Si lo que quieres es rastrear móviles, prueba con android lost, o similar, igual alguna de estás aplicaciones tiene el código abierto.
Suerte!

Responder

Hola Jose,
Tienes varios programas similares a Android Lost, que te pueden valer para rastrear móviles y cosas así. Dándole permisos te permiten encender el GPS del móvil en remoto y poder rastrearlo, entre otras cosas.

Saludos,

Responder

Buenas noches. Soy uno de los fundadores del proyecto bolirut. bolirut.com (mapas para garmin, navitel, ) hace meses que buscamos un tutorial o algo por el estilo para crear una aplicacion de navegador gps con búsqueda de calles, puntos de interés, ciudades etc como garmin o tomtom, pero no encontramos nada, queremos crear un nuevo formato de mapa, por ejemplo un .blt o no se pero tampoco encontramos como. Alguna idea de que páginas existen tutoriales para crear formatos y app de navegación? Nosotros usamos el formato básico que usan todas las empresas de Gps. polishformat (formato polaco)
Un cordial saludo.
Se les agradece de antemano.

Responder

Hola,

En referencia a formatos de mapas me temo que no te puedo ayudar mucho, no obstante para crear aplicaciones de navegación puedes encontrar algunos tutoriales por la red, en el blog mostramos varios post para dibujar mapas sobre Google maps, pero no sobre navegación. Entiendo que para la navegación tendrás que tener en cuenta muchas otras cosas más, como puede ser si existen carreteras, dirección etc. Y eso va a complicarlo considerablemente.

Mucha suerte con el proyecto.
Un saludo,

Responder

Hola disculpa, oye donde tienes ese codigo para ver los puntos enviados desde un android a un server web dibujando en el mismo la ruta donde ha pasado el móvil?

Responder

Tengo una duda o mas bien no c como comenzar a desarrolar , quiero que en mi android me grabe la latitud y longitud en una base de datos externa y a la vez que muestre en donde esta esa persona, es decir estilo ruta de taxi ( pero aqui seria la ubicacion de un telefono celular su gps ) y que a la vez este activado siempre y no tenga forma de desactivarlo sino por medio de una clave. para que se pueda grabar en donde estubo donde o como comenzar se manejar eclipse ??? podras darme unos tips y en que lugar Gracias

Responder

Hola,
Te aconsejo que le eches un ojo a algún curso gratuito que esté bien, por ejemplo este que es de la universidad de Valencia:
http://miriadax.net/web/android_programacion

De todas maneras, si quieres te puedo poner en contacto con desarrolladores de Android por si te interesa comprar la aplicación que quieres hacer.
Un saludo,

Responder

en que archivos van pegados las dos secciones de codigo

Responder

Abajo del todo tienes los links con los códigos y la aplicación.
O puedes copiar y pegar el código en los archivos que quieras, y llamarlos como está hecho.
Saludos

Responder

Lo instalé en un samsung galaxy 4 y si bien dice instalado bien no abre la aplicación, alguien sabe porque?

Responder

Ummm, pues ni idea, si nos aportas más datos podemos echarle un ojo e intentar saber porque no se abre.
Cual es tu versión de android?
Saludos

Responder

Hola, lo que he visto en todos los sitios de internet es como obtener la ubicación y también como abrir esa ubicación en google maps. Yo lo que quería saber es como enviar mi ubicación a otra aplicación, es decir, una vez que obtengo la ubicación como hago para armar un enlace para que ese enlace luego se abra en google maps. Yo quisiera obtener algo como cuando se envía la ubicación actual por whatsapp u otra app y la persona del otro lado puede abrirla en google maps. Gracias

Responder

[…] PDF File Name: Gps con android | mostrar tu posicióncodifíca.me Source: http://www.codifica.me » DOWNLOAD « […]

Responder

saludos soy de venezuela necesito comunicarme contigo cuando puedas enviame un mensaje a XXXXX@gmail.com para un proyecto

Responder

Gracias por los consejos

Responder