miércoles, 13 de julio de 2011

Localización GPS

Hola, buenas tardes desde españa.

En primer lugar disculparme por la tardanza en actualizar el blog pero estos meses han sido de curro intenso con diversas aplicaciones y no he podido dedicarle el tiempo que merecia este blog.

A continuación, les voy a explicar como se puede realizar una sencilla detección de la posición donde nos encontramos  por GPS, utilizando un dispositivo android.

Primeramente para utilizar los recursos del GPS, hay que declarar en el AndroidManifest.xml (esta en el directorio raiz del proyecto) de nuestro proyecto los siguientes permisos :


    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


Con esto ya podremos acceder al provider del GPS que tenemos en nuestro movil android, lo siguiente sería en el metodo onCreate de la actividad en la que vamos a utilizar el GPS añadir lo siguiente:

        // Hay que declararse en la clase un Location Manager
        locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locListener = new LocationListener() 
           {
            public void onLocationChanged(Location location) {
                lastLoc = location;
            }

            public void onProviderDisabled(String provider) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
            }
        };

        locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, // minTime
                // in ms
                0, // minDistance in meters
                locListener);


En este codigo se realizan dos acciones, nos declaramos un LocationManager al cual le configuramos un LocationListener (el cual puede servir para muchas cosas, entre ellas para realizar acciones especificas cuando se cambia de posición) y se configura mediante el metodo requestLocationUpdates, cual es el minimo tiempo en la que la posición se actualiza, que distancia minima se necesita para que la posición se actualice y cual es el listener que vamos a utlizar.

Recordar que en la parte superior de la clase que estamos implementando hay que añadir lo siguiente:

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

De esta manera os detectara las clases de android mencionadas en el codigo anterior.

El ultimo paso para obtener la posición donde nos encontramos seria realizar la siguiente ejecución:


Location lastLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

Una vez tenemos el Location, podemos hacer con el infinidad de operaciones por este objeto contiene la latitud y la longitud de donde nos encontramos o también se podríua localizar la distancia a otro punto, pero esto lo veremos en otro momento.


Otra opción interesante es declararse un metodo onResume que haga lo siguiente:

@Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        lastLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, // minTime
                // in ms
                0, // minDistance in meters
                locListener);
    }

Con este metodo conseguimos que si l usuario cambia a otra aplicación y deja la nuestra en background (o en segundo plano) cuando volvamos a ella recalcule la posición donde estamos.

Weno bloggeros hasta aqui es suficiente para poder montaros una mini aplicación que os permita obtener la posición donde estais, si teneis alguna pregunta o quereis que aclare algún concepto que haya quedado en el aire por favor no dudeis en poner vuestro comentarios .

Muchas gracias

No hay comentarios:

Publicar un comentario