146548338-gps-android.pdf

5
“Año de la Inversión para el Desarrollo Rural y la Seguridad Alimentaria” UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS E.A.P Ingeniería de Sistemas Inteligencia Artificial Transmisión GPS y orientacional desde un movil Android hacia la PC mediante sockets en Java Jorge  Ventura R. [email protected] Miguel  Mallqui M.  Jesús  Rodriguez C. Mirko  Carrasco L. Resumen En este trabajo se presentan las tecnicas utilizadas para lograr la comunicación entre un dispositivo movil y una aplicación de escritorio común, especicamente hablando de un dispositivo Android y una aplicación de escritorio en Java, para lo cual se utilizaron las librerias que nos proporcionan ambos entornos para obtener los datos GPS y sensoriales en el caso de el dspositivo movil extraidas del API de Android como de la API de Java para efectuar la transmision por medio de sockets entre ambas aplicaciones. Profesor: Dr. Hugo  Vega Huerta 18  de Mayo del 2013

Upload: renatogarciasevillano

Post on 11-Oct-2015

6 views

Category:

Documents


0 download

TRANSCRIPT

  • Ao de la Inversin para el Desarrollo Rural y la Seguridad Alimentaria

    UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOSE.A.P Ingeniera de Sistemas

    Inteligencia Artificial

    Transmisin GPS y orientacional desde un movil Android hacia la PCmediante sockets en Java

    Jorge Ventura [email protected]

    Miguel Mallqui M. Jess Rodriguez C.

    Mirko Carrasco L.

    Resumen

    En este trabajo se presentan las tecnicas utilizadas para lograr la comunicacin entre un dispositivo movil

    y una aplicacin de escritorio comn, especificamente hablando de un dispositivo Android y una aplicacin de

    escritorio en Java, para lo cual se utilizaron las librerias que nos proporcionan ambos entornos para obtener los

    datos GPS y sensoriales en el caso de el dspositivo movil extraidas del API de Android como de la API de Java

    para efectuar la transmision por medio de sockets entre ambas aplicaciones.

    Profesor:Dr. Hugo Vega Huerta

    18 de Mayo del 2013

  • Inteligencia Artificial UNMSM

    ndice

    1. Introduccin 1

    2. Extraccion de datos del dispositivo movil 12.1. Obtencion de datos de localizacin GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    2.1.1. Location API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2. Obtencion de datos de Orientacion Magnetica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    3. Fundamentos de la transmisin de datos 23.1. Que es un socket? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2. Conexion cliente servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    4. Establecimiento de la conexion y transmision de datos 34.1. Lado servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    4.1.1. Crear el socket servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34.1.2. Obtener el InputStream y/o OutputStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    4.2. Lado Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    5. Ejecucion del programa 4

    6. Conclusiones 4

    1. Introduccin

    Este trabajo estuvo motivado por las lecciones recibidas del curso de Inteligencia Artificial en las cuales aprendi-mos acerca de lo que era un sistema inteligente y de como es que podriamos implementarlo utilizando algo que ahoraen el mundo moderno casi todos tenemos como lo es un dispositivo movil y que no habiamos aprovechado todas lasbondades que podriamos obtener de dicho dispositivo. Se penso en capturar datos del medio (GPS e informacionmagnetica) para luego ser transmitida a un programa de escritorio para su posterior uso

    2. Extraccion de datos del dispositivo movil

    2.1. Obtencion de datos de localizacin GPS

    La localizacion se obtendra en el dispositivo movil a traves de la API de localizacion de Android para lo cualse diseara una aplicacion Cliente en android que por medio de estas librerias obtendra los datos GPS (altidud,longitud, latitud, presicion) los cuales posteriormente seran transmitidas por medio de la red.

    2.1.1. Location API

    Figura 1: Location API

    La API de localizacion1 cuenta con clases que nos permitiran extraer la informacion GPS

    1La pagina web Location API http://developer.android.com/reference/android/location/package-summary.html

    1

  • Inteligencia Artificial UNMSM

    2.2. Obtencion de datos de Orientacion Magnetica

    Se utilizara la clase SensorManager2 la cual proporciona una interfaz para manejar los sensores del telefonomovil, en la imagen siguiente se ve una imagen de la API sensorial

    Figura 2: Sensor API

    3. Fundamentos de la transmisin de datos

    3.1. Que es un socket?

    Socket designa un concepto abstracto por el cual dos programas (posiblemente situados en computadoras dis-tintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.

    3.2. Conexion cliente servidor

    Basicamente se buscar que tanto el programa en android como el programa en Java se comporten como uncliente y un servidor respectivamente, esta conexion se realizara mediante la implementacion de un socket queutilizara el protocolo TCP. A continuacin podrn ver como es el diagrama en una Comunicacion entre un clientey un servidor

    Figura 3: Diagrama Cliente-Servidor

    Como veran primero se establece la coneccion, luego el servidor espera a que los clientes se conecten, una vez yaconectados uno hace una peticion y obtiene una respuesta hasta hacen esto hasta que la coneccion se corta. Nosotrostrataremos de hacer lo mismo. En nuestro caso la aplicacion cliente estara en un dispositivo con android que seconectara mediante Wi-Fi a un router en el cual tambien esta conectada la computadora que correra la aplicacionservidor al estar hecho en java podra correr en cualquier sistema operativo.

    2La pagina web Sensor API http://developer.android.com/reference/android/hardware/SensorManager.html

    2

  • Inteligencia Artificial UNMSM

    Figura 4: Diagrama Cliente-Servidor

    4. Establecimiento de la conexion y transmision de datos

    En android el manejo de sockets por lo menos con TCP es igual que en java. Cuando trabajamos con socketspodemos usar el tipo Socket en el cliente y en el servidor uno o ms objetos Socket asociados a un ServerSocket.La E/S se realiza a travs de objetos InputStream y OutputStream asociados a los Sockets.

    4.1. Lado servidor

    En el servidor debemos hacer lo siguiente.

    Crear el socket servidor

    Aceptar un cliente

    Obtener los InputStream y/o OutputStream del cliente.

    Crear unos InputStream y/o OutputStream ms adecuados a nuestras necesidades.

    Leer y escribir datos del y al cliente.

    Cerrar el socket.

    En el servidor se crea un serversocket que tiene como parametro el numero de puerto este puede ser del 1 a 65535del 1 a 1023 estn reservados para servicios del sistema (SSH,SMTP, ftp, mail, www, telnet, etc. . . ) Del 1024 enadelante podemos usarlos a nuestro gusto.

    4.1.1. Crear el socket servidor

    El servidor crea un socket servidor que tiene como parmetro el puerto en el que a va estar escuchando laspeticiones entrantes en mi caso he usado el 5555: ServerSocket skServidor = new ServerSocket(5555); Cada servidordebe usar un puerto diferente. Aceptar un cliente: Una vez creado el servidor, este espera conexiones de los clientepara eso llamamos al mtodo accept(). Este mtodo se queda bloqueado hasta que algn cliente se conecta. Nosdevuelve un Socket, que es la conexin con dicho cliente. Socket skCliente = skServidor.accept();Un servidor puedemanejar multiples conexion con cliente pero en este caso solamente manejara una.

    4.1.2. Obtener el InputStream y/o OutputStream

    Una vez que el cliente ya esta conectado, debemos obtener de l el OuputStream o InputStream con los mtodos-getOutputStream() o getInputStream(). La clase OutpuStream nos sirve para enviar datos. InputStream nos sirvepara leer los datos recibidos. InputStream input = skCliente.getIntputStream(); OutputStream output = skClien-te.getOutputStream(); Estos metodos nicamente envan bytes. Si vamos a utilizar tipos de datos normales (enteros,String) podemos utilizar las clases DataInputStream y DataOutputStream. Estas clases tienen un constructor queadmite unInputStream y un OutputStream respectivamente. DataInputStream inputdata = new DataInputStream(input); DataOuputStream outputdata = new DataOutputStream (output); Estas clases tienen sus propios metodospara escribir o leer. como writeInt(),writeFloat(), readInt(), etc. Para strings usaremos los mtodos writeUTF() yreadUTF(), que envan/leen las cadenas en formato UTF.

    3

  • Inteligencia Artificial UNMSM

    4.2. Lado Cliente

    Para poder crear el socket usamos la clase Socket ademas deberemos usar la Direccion IP del server y el puertoque empleara para la comunicacion Socket skCliente = new Socket (IP,PUERTO); IP debe ser u String y PUERTOun entero. Podemos ver todo esto en el siguiente diagrama.

    Figura 5: Socket

    5. Ejecucion del programa

    El programa al inicializarce en la aplicacion movil se conecta hacia la red Wifi de la facultad y comienza atransmitir los datos tanto de GPS y de Orientacion hacia el servidor que en este caso es el programa de escritorio,dicho programa muestra la IP del dispositivo con el cual esta haciendo conexion y muestra los datos GPS yorientacional en su interfaz, la cual se actualiza cuando llegan mas datos, posteriormente este programa tiene laopcion de selecionar una ubicacion nueva a partir de la cual relativamente se iran actualizando los datos y semostrara la diferencia de ubicaciones en la iterfaz conforme el dispositivo se desplaza tanto en latitud, longitud,o altitud. El programa cliente (en el movil) registrara la informacion de orientacion (N,S,E,O) y transferira a laaplicacion servidor la azimutal , es decir el angulo que forma con el polo norte el cual tambien se ira actualizandocomo los demas datos.

    6. Conclusiones

    Se comprendi que las aplicaciones moviles son un campo muy beneficioso y por explotar en la sociedadmodernizada de hoy en dia.

    Mediante la elaboracin de este trabajo se comprendi que se podemos extender el beneficio de una aplicacionasignandole mayor valor agregado

    La forma de obtener los datos en nuestra aplicacion quiza no es la mas eficiente, trataremos de enfocarnoscomo mejorar la eficiente para ocasiones posteriores.

    4

    Introduccin Extraccion de datos del dispositivo movilObtencion de datos de localizacin GPSLocation API

    Obtencion de datos de Orientacion Magnetica

    Fundamentos de la transmisin de datosQue es un socket?Conexion cliente servidor

    Establecimiento de la conexion y transmision de datosLado servidorCrear el socket servidorObtener el InputStream y/o OutputStream

    Lado Cliente

    Ejecucion del programaConclusiones