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

Deja una 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