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, especificamente 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 19-Jan-2016

15 views

Category:

Documents


0 download

TRANSCRIPT

“Año de la Inversión para el Desarrollo Rural y la Seguridad Alimentaria”

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOSE.A.P Ingeniería de Sistemas

Inteligencia Artificial

Transmisión GPS y orientacional desde un movil Android hacia la PCmediante sockets en Java

Jorge Ventura [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, especificamente 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

Inteligencia Artificial UNMSM

Índice

1. Introducción 1

2. Extraccion de datos del dispositivo movil 12.1. Obtencion de datos de localización GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

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

3. Fundamentos de la transmisión 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. Introducción

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 localización GPS

La localizacion se obtendra en el dispositivo movil a traves de la API de localizacion de Android para lo cualse diseñara 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 transmisión 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 un“cliente” y un “servidor” respectivamente, esta conexion se realizara mediante la implementacion de un socket queutilizara el protocolo TCP. A continuación podrán 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 más objetos Socket asociados a un ServerSocket.La E/S se realiza a través 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 más 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 están 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 parámetro 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 método accept(). Este método se queda bloqueado hasta que algún cliente se conecta. Nosdevuelve un Socket, que es la conexión 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 métodos-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 envían 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 métodos writeUTF() yreadUTF(), que envían/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 elaboración 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