usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la...

20
MONITOREO AGV UTILIZANDO UN SISTEMA DE INFORMACION PARA DISPOSITIVOS MOVILES CON ANDROID La plataforma Android es compatible con la pila de red Bluetooth, que permite que un dispositivo intercambiar datos de forma inalámbrica con otros dispositivos Bluetooth. El marco de aplicación permite el acceso a la funcionalidad Bluetooth a través de la API de Android Bluetooth. Estas API permiten que las aplicaciones se conecten de forma inalámbrica a otros dispositivos Bluetooth, permitiendo realizar conexiones punto a punto y multipunto, realizando funciones inalámbricas. Utilizando el API de Bluetooth, una aplicación para Android puede realizar las siguientes actividades: Analizar en busca de otros dispositivos Bluetooth Consultar el adaptador Bluetooth local para dispositivos Bluetooth vinculados Establecer canales RFCOMM Conectarse a otros dispositivos a través de descubrimiento de servicios Transferencia de datos hacia y desde otros dispositivos Administrar conexiones de múltiples PERMISOS PARA BLUETOOTH Para poder utilizar los permisos de bluetooth es necesario habilitar uno de los 2 permisos que android maneja que son: BLUETOOTH Y BLUETOOTH_ADMIN El permiso de BLUETOOTH es necesario para realizar cualquier tipo de conexión con otro dispositivo bluetooth,como son solicitar una conexión, aceptar una conexión y transferencia de datos. Se debe solicitar el permiso de BLUETOOTH_ADMIN para iniciar la búsqueda de nuevos dispositivos o manipular la configuración del Bluetooth. Para poder declarar el permiso de bluetooth es necesario abrir el archivo manifest generalmente llamado AndroidManifest.xml localizado en la raíz del proyecto android.

Transcript of usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la...

Page 1: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

MONITOREO AGV UTILIZANDO UN SISTEMA DE INFORMACION PARA DISPOSITIVOS MOVILES CON ANDROIDLa plataforma Android es compatible con la pila de red Bluetooth, que permite que un dispositivo intercambiar datos de forma inalámbrica con otros dispositivos Bluetooth. El marco de aplicación permite el acceso a la funcionalidad Bluetooth a través de la API de Android Bluetooth. Estas API permiten que las aplicaciones se conecten de forma inalámbrica a otros dispositivos Bluetooth, permitiendo realizar conexiones punto a punto y multipunto, realizando funciones inalámbricas.

Utilizando el API de Bluetooth, una aplicación para Android puede realizar las siguientes actividades:

Analizar en busca de otros dispositivos Bluetooth Consultar el adaptador Bluetooth local para dispositivos Bluetooth vinculados Establecer canales RFCOMM Conectarse a otros dispositivos a través de descubrimiento de servicios Transferencia de datos hacia y desde otros dispositivos Administrar conexiones de múltiples

PERMISOS PARA BLUETOOTH

Para poder utilizar los permisos de bluetooth es necesario habilitar uno de los 2 permisos que android maneja que son: BLUETOOTH Y BLUETOOTH_ADMIN

El permiso de BLUETOOTH es necesario para realizar cualquier tipo de conexión con otro dispositivo bluetooth,como son solicitar una conexión, aceptar una conexión y transferencia de datos.

Se debe solicitar el permiso de BLUETOOTH_ADMIN para iniciar la búsqueda de nuevos dispositivos o manipular la configuración del Bluetooth.

Para poder declarar el permiso de bluetooth es necesario abrir el archivo manifest generalmente llamado AndroidManifest.xml localizado en la raíz del proyecto android.

Page 2: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

PREPARANDO EL BLUETOOTH PARA INICIAR LA CONEXIÓN

Antes de que una aplicación pueda comunicarse atravez de bluetooth, es necesario verificar que el disposito sea compactible con el bluetooth, si es asi , verificar que tenga encendido el bluetooth en el dispositivo.

Si el bluetooth es compatible y no se encuentra encendido se imprime una alerta en pantalla preguntando al usuario si desea habilitar el bluetooth.

Page 3: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

CONSULTA DE DISPOSITIVOS

La búsqueda de dispositivos es un procedimiento de exploración que busca en el área dispositivos Bluetooth habilitados solicitando información sobre cada uno de ellos. Sin embargo, un dispositivo Bluetooth responderá a una solicitud de descubrimiento sólo si está habilitado para ser visible. Si un dispositivo se puede detectar, responderá a la petición de descubrimiento mediante el intercambio de cierta información, como por ejemplo el nombre del dispositivo, la clase, y su dirección MAC única. Con esta información, el dispositivo realiza el descubrimiento puede entonces elegir para iniciar una conexión con el dispositivo descubierto.

Antes de realizar una búsqueda de dispositivos disponibles en el area, consultamos los dispositivos emparejados para visualizar si el dispositivo al que se desea conectar el usuario esta en la lista de ya conocidos.

Primero se verifica si hay dispositivos emparejados para evitar el alto consumo de batería.

Page 4: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

DESCUBRIENDO NUEVOS DISPOSITIVOS

Para inciar el descubriento de nuevos dispositivos solo es necesario llamar el startdiscovery().el proceso de descubrimiento es asincrónico y el método devolverá inmediatamente con un valor boolenao que indica si el descubrimiento se ha iniciado con éxito.

La aplicación debe registrar un Broadcastreceiver para el ACTION_FOUND itencion con el fin de recibir información de cada dispositivo detectado.

Page 5: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

HABILITAR EL DESCUBIRMIENTO

Si usted desea que el dispositivo este en modo visible para que otros lo puedan ver al momento de crear una vinculación se debe llamar al Startactivityforresult con el ACTION REQUEST DISCOVERABLE.se ejecutara un solicitud sin detener la aplicación para que se pueda descubrir el dispositivo durante los 120 segundos restantes.

Page 6: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

DESARROLLO VISUAL DE LA APLICACIÓN.

Para iniciar con el proceso de desarrollo de una aplicación en android, nos enfocamos en el desarrollo visual de la aplicación. Inicialmente en el XML encargado de la pantalla principal que recibe el nombre de main.xml que está ubicado en la carpeta res de la aplicación.

Al abrir el main.xml el entorno de desarrollo habilita inmediatamente una paleta de herramientas que ayudan a la construcción del entorno grafico más ágilmente.

Para el desarrollo de nuestro entorno grafico se necesita crear 2 TextView que son libros y estado, 2 EditText que cargaran la información que llegue del AGV,1 EditText que se encargara de recibir los datos que se enviaran al AGV.

Para la creación del mapa que pinta la posición de nuestro dispositivo AGV es necesario utilizar una subclase especial de la vista llamada SurfaceView que permite tomar el control total del dibujo en un hilo.

Para poder hacer esto es necesario crear una clase que extienda de surfaceview e implemente el surfaceholder.callback que permite crear una notificación de cuando ocurra algún cambio de la superficie.

Luego, dentro de esta clase, creamos una clase que extiende de Thread que se encargará de realizar todas las operaciones de dibujo en la superficie.

En nuestro proyecto la clase que controlara el surfaceview se llama WaveformView.java

Page 7: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

WaveformView.java

Dentro de la clase se definira unos objectos y variables que son de una estructura ya finida para el desarrollo de clases surfaceview.

Es necesario importar los objetos necesarios para poder trabajar ese tipo de clases, primero se bebe declarar la clase principal que lleva el mismo nombre del archivo y definimos el tipo de clase que es una surfaceview implementando llamados.

Page 8: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

El plot area size es el tamaño que va tener la vista en el dispositivo,en este caso solo se declara ya que el tamaño lo determina el tamaño de la pantalla de cada dispositivo.

Se declara 2 variables de nombre X y Y encargadas de guardar la posición que el dispositvo AGV envía mendiante la conexión bluetooth. Las variables tipo paint se define para asignarle un color respetivo a cada una de ella en esta parte solo se define la variable pero el color no es asignado aun.

El surfacecreated inicia el hilo y dibuja toda la interfae grafica dentro del dispositivo, uno de los problemas que mas se presenta es a la hora de minimizar una actividad y la interface ya está declarada es que inmediatamente la aplicación se cierra creando una excepción diciéndole al usuario que la interface ya fue creada y no puede declararse 2 veces.

Por eso es necesario verificar que si la interface ya fue creada continúe y no cree un nuevo hilo grafico de la interface.

Page 9: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Como su nombre lo indica sirve para destruir toda interface grafica creada inicialmente y cerrar el hilo de la interface.

Ondraw se encarga de dibujar todo el diseño de la aplicación en el dispositivo, en este caso ondraw llama a la clase plotpoints que es la que contiene todo lo que debe ser dibujado en el background de la aplicación.

Page 10: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Plotpoints contiene todo lo que debe dibujar la clase ondraw, primero que todo antes de poder dibujar es necesario saber qué tipo de pantalla tiene el dispositivo que ejecuta la aplicación, para realizar esto es necesario llamar los objetos de la clase displaymetrics que determinaran el ancho y largo de la pantalla que contiene la aplicación.

Las variables Height y width que fueron declaradas en la clase principal del surfaceview almacenaran el tamaño de la pantalla. antes que nada los primero que se debe dibujar es el fondo que va tener la aplicación.

Los objectos de la clase bitmap nos permiten dibujar un fondo de pantalla basado en una imagen ya prediseñada, en este caso la imagen resive el nombre de planobiblio y se encuentra en la carpeta drawable.

Page 11: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Para tener mas control a la hora de visualizar la ubicación de nuestro dispositivo AGV el plano se divira en cuadrantes, la división se realiza según el tamaño de la pantalla y siempre tendrá 10 cuadrantes de acho y largo.

Por utimo se pinta la posición de inicion de nuestro dispositvo AGV que se representara con un circulo de color verde en el mapa.

WaveformPlotThread.java

Page 12: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Un thread es una unidad de ejecución concurrente es decir carga una clase cada vez que ocurra un evento que afecte el funcionamiento del surfaceview, dibujándolo de nuevo como sucedió al inicio de la apliacacion.

Page 13: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

BlueagvActivity.java

Esta es la clase principal donde se contiene toda la actividad de la aplicación, en esta clase de controla las vista y las actividad que el bluetooth realiza.

Antes que nada se debe declarar la clase principal que contendrá la actividad de la aplicación

El controlador de bluetooth emite unos mensajes según el estado en que se encuentra se declaran para los 5 estados posibles que el bluetooth puede estar.

Page 14: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Los códigos de intención de solicitud se declaran para determinar que acción se debe ejecutar cuando un usuario toca la pantalla para realizar una acción.es la aplicación de localización del AGV se determinaron 3 posibles actividades del bluetooth que son conexión segura,insegura,encendido del bluetooth.

Se invocan todas las vistas del diseño de la aplicación que van a ser utilizadas en la actividad principal, se crea un variable para guardar el nombre del dispositivo conectado,guardar el hilo de la conversación,se invoca el adaptador bluetooth del dispositivo.

Oncreate es el método que android llamara para crear la actividad, en el se carga el diseño de la aplicación que esta diseñado en el main.xml que se explico anteriormente, llama al adaptador bluetooth y verifica que exista. Si el dispositivo no existe entonces la aplicación de finaliza.

Page 15: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Inicia la actividad y verifica si el dispositivo bluetooth esta activado, de no ser asi imprime un alert de solicitud de activación del bluetooth en el dispositivo.

Si el dispositivo esta activado entonces llama a la clase setupchat.

Inicializa todos los elementos de la parte visual para poder hacer uso de ellos, permitiendo el la impresión de datos en el contenido de cada uno y la interacción con el usuario.

Page 16: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Permite colocar el dispositivo en modo visible para que otros dispositivos lo puedan ver y crear un canal de comunicación.

Sendmessage permite enviar los strings que el usuario escribió en nuestro Smartphone a el dispositivo conectado, verificando antes de enviar que realmente si exista un emparejamiento entre dispositivo, si existe obtiene los strings del mensaje y los almacena en una variable send que enviara al otro dispositvo los datos.

Page 17: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

El handler es el controlador que se encarga de recibir la información que el dispositivo de bluetooth resive existen 5 estados

declarados MESSAGE_STATE_CHANGE, MESSAGE_WRITE, MESSAGE_DEVICE_NAME, MESSAGE_READ, MESSAGE_TOAST.

El de mayor importancia para nosotros es el MESSAGE_READ encargado de recibir los datos que el dispositivo conectado envía.

Los otros casos siempre se contruiran de la misma manera para cualquier tipo de conexión que sea bluetooth.

Page 18: usb.edu.cobibliotecadigital.usb.edu.co/bitstream/10819/2475/3/... · Web viewEsta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si

Esta clase es la encarga de conectar los dispositivos encontrados o emparejados con el Smartphone, si edctecta que el dispositivo no esta habilitado se llamara REQUEST_ENABLE_BT, pero si el dispositivo esta encendido inmediatamente se inicia la creación del canal rffcom de conexion