Вы находитесь на странице: 1из 201

1

El presente trabajo es una gua de aprendizaje para el desarrollo de aplicaciones Android y construccin de circuitos de interfaz con el mundo real para su posterior aplicacin en robtica mvil. En esta gua contiene el resultado de una investigacin de 6 meses de residencia profesional recopilando y probando diferentes mtodos, software, pruebas y conclusiones obtenidas a lo largo de este periodo. Se explican los conceptos bsicos para familiarizarse con el sistema Android y se desarrollaran aplicaciones bsicas y sencillas hasta llegar a las aplicaciones de interfaz con hardware externo que ser construido por el lector. Se proporcionan los cdigos fuente, esquemticos, software y dems recursos contenidos en el CD como medio de apoyo. Se han construido dos interfaces para experimentar con Android a travs de bluetooth y USB que sern utilizados en las prcticas de igual forma se ha diseado un robot que servir de modelo para futuros proyectos y entender mejor los conocimientos adquiridos. Se requieren nociones de programacin en algn lenguaje y tambin el uso de microcontroladores o alguna tarjeta de desarrollo como arduino o similar.

Desarrollos por Jos Luis Ku Uc Asesorado por Dr. Jos Ramn Atoche Enseat Departamento de Ingeniera Elctrica y Electrnica Agosto de 2012 Joseluisku.electronica@gmail.com Esta gua fue diseada para trabajar en computadoras con sistema operativo Windows 7 de 32 bit

INTRODUCCIN .................................................................................................................................. 4 CONCEPTOS BASICOS.......................................................................................................................... 7 INSTALACION DE LAS HERRAMIENTAS ............................................................................................... 31 JAVA JDK ....................................................................................................................................................31 ANDROID SDK ...........................................................................................................................................35 BASIC4ANDROID ............................................................................................................................ 43 CONFIGURACION DEL ENTORNO DE DESARROLLO ............................................................................. 48 INTRODUCCION A BASIC4ANDROID .................................................................................................. 53 DESARROLLO DE APLICACIONES BASICAS .......................................................................................... 65 DESARROLLO DE APLICACIONES CON LIBRERIAS ................................................................................ 85 CONSTRUCCION DE HARDWARE ..................................................................................................... 119 PIC USB ...................................................................................................................................................119 MODULO BLUETOOTH............................................................................................................................123 IOIO BOARD ............................................................................................................................................127 DESARROLLO DE APLICACIONES DE INTERFAZ ................................................................................. 130 INTERFAZ CON BLUETOOTH ...................................................................................................................130 INTERFAZ CON IOIO ................................................................................................................................145 ROBOT DROID ................................................................................................................................ 154 ESTRUCTURA MECANICA........................................................................................................................154 ELETRONICA ...........................................................................................................................................156 SOFTWARE .............................................................................................................................................162 CONCEPTOS AVANZADOS ............................................................................................................... 167 TEMAS INTERESANTES .................................................................................................................... 187 REPERTORIO DE INSTRUCCIONES DE BASIC4ANDROID ..................................................................... 190 REFERENCIAS .................................................................................................................................. 201

Qu es un Sistema Operativo?
Un sistema operativo es un conjunto de programas, su finalidad es la de gestionar el hardware desde el ms bajo nivel, administrar eficazmente los recursos y permitir la interaccin con el usuario.

Qu es Android?
Android es un sistema operativo para dispositivos mviles basado en Linux, desarrollado por Google. La mayor parte de Android est disponible bajo licencia de software libre, esto resulta una opcin muy interesante para los fabricantes, para los usuarios y desarrolladores. Android utiliza la arquitectura ARM como hardware principal e integra una variedad de sensores tales como acelermetros, giroscopios, de proximidad, barmetros, GPS, magnetmetros. Etc. Tambin ofrece conectividad a travs de medios almbricos e inalmbricos como USB, bluetooth, Wi-Fi, NFC, etc. Algunos de estos varan de acuerdo al dispositivo como puede ser una lavadora, un telfono celular, Tablet, computadora, etc. Desde su lanzamiento ha pasado por varias actualizaciones que corrigen errores y aaden funciones, actualmente el sistema operativo se encuentra en la versin 4.1 (Jelly Bean).

Qu es una Aplicacin Android?


Una aplicacin Android es un programa de alto nivel que permite la interaccin del usuario con las funciones del sistema operativo y ampla las funcionalidades del dispositivo, la extensin de estas aplicaciones estn en formato APK. Las aplicaciones se distribuyen a travs del mercado en lnea de google llamado Play Store (antes Android Market) para su descarga. Tambin es posible obtener el instalador de la aplicacin (archivo APK) y almacenarlo en el dispositivo para su instalacin. Otra forma de instalar aplicaciones es a travs del propio entorno de desarrollo a travs de una conexin USB o Wi-Fi con la computadora.

Qu es una mquina virtual?


Es un programa que ejecuta cdigo intermedio. Cuando se compila el cdigo el resultado es un conjunto de instrucciones en un formato especfico que entiende la propia mquina virtual, un

Ejemplo es la mquina virtual Java de Sun Microsystems. En pocas palabras una mquina virtual emula a un ordenador.

Qu es la Java JDK?
Java JDK (Java Development Kit) es un conjunto de software proporcionado por Sun Microsystems para desarrollar software con el lenguaje de programacin java, es utilizado por Android para generar cdigo intermedio que ser ejecutado por su propia mquina llamada Dalvik optimizada para funcionar en dispositivos con poca memoria. El sistema Android est basado en lenguaje C++(debido al ncleo Linux) sin embargo se utiliza java por su potencialidad en dispositivos mviles.

Qu es la Android SDK?
La Android SDK (Software Development Kit) es un conjunto de software proporcionado por Google que provee las herramientas para desarrollar aplicaciones para Android en el lenguaje de programacin java. Al utilizar este lenguaje de programacin se necesita que la java JDK este instalada en el equipo.

Qu se necesita para desarrollar aplicaciones Android?


Se necesita el kit de herramientas Java JDK, el kit de herramientas de Google Android SDK y un entorno para desarrollar aplicaciones siendo Eclipse el ms popular y poderoso de todos, pero el desarrollo es ms lento y complicado ya que est diseado para un nivel ms experto, sin embargo existen alternativas para hacer ms fcil el desarrollo de aplicaciones a travs de otros entornos como Processing, Mono for Android, Basic4android, App Inventor, etc.

Qu es Basic4android?
Basic4android es un entorno de desarrollo rpido de aplicaciones Android en lenguaje Basic. Este lenguaje es interpretado por el software que es convertido a cdigo Java para finalmente crear el empaquetado APK.

Cmo utilizar Android en Robtica?


Un dispositivo Android en Robtica se puede utilizar como un accesorio de un Robot o bien como controlador principal del mismo. Algunas aplicaciones como accesorio puede ser dotar al robot con un sistema de visin a travs de la cmara o proporcionarle conexin a internet por medio de Wi-Fi, tambin utilizarlo como un mando a distancia por bluetooth o para desplegar datos de sensores y proveer una interfaz de usuario con la pantalla tctil, etc. Como controlador principal puede ampliarse la funcionalidad del robot a travs de las aplicaciones y hacer operaciones ms

Complejas ya que se cuenta con un procesador ms potente para controlar las funciones principales. De esta forma el robot puede ampliar sus capacidades conectando hardware externo.

Cmo conectar Hardware externo a un dispositivo Android?


Una parte fundamental del robot son los sensores como sensores de lnea, medidores de distancia, sensores de temperatura, de luz ambiente, y actuadores como motorreductores, servomotores, solenoides, vlvulas, etc. Para poder establecer una interfaz entre estos y un dispositivo Android es necesario algn medio almbrico o inalmbrico, casi siempre apoyados de un Microcontrolador. Por ejemplo se puede establecer una interfaz por bluetooth utilizando algn modulo que funcione como puerto serie tales como el HC-05, HC-06, BTM-180, etc. Tambin es posible construir una interfaz a travs de Wi-Fi utilizando alguna tarjeta como los shields para arduino. Con la llegada de Android 4.0 se implement la conectividad NFC que es similar a la tecnologa RFID para comunicarse con medios inalmbricos. Una interfaz cableada simple es utilizar la salida de audio para implementar un protocolo de comunicacin con algn Microcontrolador. Otra manera de establecer una interfaz es a travs del puerto USB por medio del protocolo ADB o ADK, en la que un Microcontrolador acta como un Host USB. Existen tarjetas dedicadas a aplicaciones con Android tales como IOIO, Arduino USB Host shield, Arduino ADK. Este ltimo el ADK es un protocolo diseado por google para la conexin de accesorios de hardware pero requiere de la versin Android Gingerbread (2.3.4) o superior para funcionar.

LAS APLICACIONES ANDROID

COMPONENTES DE UNA APLICACIN ANDROID Una aplicacin Android puede estar formada bsicamente por actividades, servicios, interfaces de usuario e intentos a continuacin se definen las ms importantes: Activityes: Son componentes de una aplicacin que corresponde a una pantalla una actividad es un subprograma, lo anlogo a las ventanas de Windows Views: Son los componentes de la interfaz de usuario que permiten interactuar con las aplicaciones Layouts: Son la interfaz de usuario lo anlogo a los formularios de Windows Intents: Describen que quiere hacer una aplicacin. Es un medio de comunicacin con otras aplicaciones. Services: Son cdigo que se ejecuta en segundo plano y no tienen interfaz de usuario. CICLO DE VIDA DE LAS ACTIVITYES Un Proceso es un programa en ejecucin que es gestionado por el sistema operativo. Cada aplicacin hecha en Basic4android se ejecuta en su propio proceso. Un proceso puede tener tambin ms subprocesos que son tiles para tareas en segundo plano para entender mejor esto se explicara el ciclo de vida de las actividades. Un proceso se inicia cuando el usuario inicia la aplicacin, suponiendo que es la primera vez que la aplicacin se ejecuta y termina cuando el sistema operativo lo decida, por ejemplo por falta de memoria esto se conoce como asesinar el proceso. Una aplicacin de Basic4android est hecha de una o ms actividades. Cada actividad cuenta con sus propias variables que pueden ser globales o locales. Las variables locales se declaran en cada subrutina y las variables globales se pueden declarar en las variables de procesos (Process Globals) y las variables de actividad (Activity Globals) Algunos objetos y variables tienen una manera de declararse, ms adelante se muestra en los ejemplos.

A continuacin se explicaran los principales eventos de una actividad: Activity Create: Este sub se llama cuando se crea la actividad. La actividad se crea: Cuando el usuario inicia por primera vez la aplicacin ha cambiado la configuracin del dispositivo (el usuario gira el dispositivo) y la actividad fue destruida Cuando la actividad en segundo plano y el sistema operativo decidi destruirla para liberar memoria.

El propsito principal de este evento o subrutina es cargar o crear la interfaz de usuario e inicializar objetos y variables (entre otros usos), se puede saber si es la primera vez que la aplicacin se crea, esto a travs del parmetro FirstTime. Activity Resume: Se llama justo despus de acabar el evento Activity_Create o reanudar una actividad en pausa (actividad que se traslad a segundo plano y ahora se vuelve al primer plano). Tener en cuenta que cuando se abre una actividad diferente, la actividad actual primero es pausada y, a continuacin, se crear la otra actividad si es necesario y regresa Activity_Pause: Se llama cada vez que la actividad se mueve del primer plano al segundo plano. Esto puede suceder porque: 1. 2. 3. 4. Se inici una actividad diferente. Se presion el botn de Home. Un cambio de configuracin levantada (se rota el dispositivo por ejemplo). Se presion el botn Back.

En los escenarios 1 y 2, se interrumpir la actividad y por ahora se mantiene en memoria en espera para ser reutilizada posteriormente. En el escenario 3 la actividad se interrumpir, destruir y creara (y reanudara) nuevamente. En el escenario 4 la actividad se pausara y destruir. Pulsando el botn back es similar al cierre de la actividad. En este caso no se necesita guardar cualquier informacin especfica Existe un parmetro en Basic4Android llamado UserClosed que ser cierto en este ltimo escenario y falso en todos los dems. Se puede utilizar UserClosed para decidir qu datos guardar y tambin si se desea restablecer cualquiera de las variables de proceso relacionados con su estado inicial.

Cuando se inicie un nuevo proyecto en Basic4android aparecer una ventana con una actividad y las partes mencionadas anteriormente Process_Globals, Globals, Activity_Create, Activity_Resume y Activity_Pause

Figura 1.- Vista general de una actividad en Basic4Android En Basic4Android una Activity tiene las siguientes propiedades: Desde el men del proyecto: Full Screen establece si la actividad ocupa toda la pantalla (la barra de estado del sistema operativo se oculta). Include Title establece si se muestra el ttulo de la actividad

Desde el Diseador de interfaces: Drawabble establece el tipo de fondo puede ser un color, un gradiente o un bitmap Title Color establece el color del titulo Las dos opciones del men del proyecto

10

LAS INTERFACES DE USUARIO Los Layout (interfaces de usuario) en Android permiten interactuar con las aplicaciones mediante objetos conocidos como Views (vistas) como lo son etiquetas, botones, cajas de texto, etc. Estas interfaces de usuario se pueden crean desde cdigo XML (en eclipse) requiere de mayor tiempo y conocimientos ms profundos del tema. Basic4Android ofrece una herramienta llamada Designer para disear las interfaces de usuario de una manera rpida y sencilla, a continuacin se describen las principales caractersticas de los Layout y los Views 1. Button

El Button (botn) es un View muy comn y utilizado en las interfaces de usuario Principales eventos: Clic cuando el usuario toca el Button Principales propiedades comunes: Enabled habilita o deshabilita el Button Text establece el texto del Button Visible esconde o muestra el Button Principales propiedades especiales: Drawable establece el estilo grafico del Button (por default o configurable)

2.

CheckBox

El CheckBox (caja de verificacin) es un View utilizado para marcar o seleccionar opciones

11

Principales eventos: CheckedChange cuando el CheckBox cambia de estado Principales propiedades comunes: Enabled habilita o deshabilita el CheckBox Text establece el texto del CheckBox Visible esconde o muestra el CheckBox Principales propiedades especiales: Checked establece si estar marcado por default (se utiliza tambin para saber si esta seleccionado)

3. EditText

El EditText (Texto Editable) es un View utilizado como entrada de caracteres al hacer clic en el aparece el teclado de Android para introducir datos generalmente no se usan eventos. Principales eventos: TextChanged cuando el usuario toca el EditText EnterPressed cuando se presiona la tecla enter Principales propiedades comunes: Enabled habilita o deshabilita el EditText Text establece el texto del EditText Visible esconde o muestra el EditText Principales propiedades especiales: PassWord establece si se usa el modo contrasea SingleLine establece si se usa el modo de solo una lnea

12

InputType elige el tipo de entrada (letras, nmeros, etc.)

4. ImageView

El ImageView (Vista de imagen) es un View muy comn y utilizado para desplegar imgenes tambin puede ser utilizado como botn. Principales eventos: Clic cuando el usuario toca el ImageView Principales propiedades comunes: Enabled habilita o deshabilita el ImageView Visible esconde o muestra el ImageView Principales propiedades especiales: ImageFile indica la imagen que contendr el ImageView Gravity establece la forma de contener la imagen (centro, estrecho, etc.)

5. Label

El Label (Etiqueta) es un View muy comn y utilizado para desplegar texto pero al igual que el ImageView puede ser utilizado como botn. Principales eventos: Click cuando el usuario toca el Label

13

Principales propiedades comunes: Enabled habilita o deshabilita el Label Visible esconde o muestra el Label Principales propiedades especiales: Text Style configura el tipo de fuente, tamao, color, etc. Drawable establece el estilo grafico del Label

6. ListView

El ListView (Vista de lista) es un View utilizado para presentar una lista de elementos seleccionables llamados tems. Los elementos de la lista se construyen desde cdigo Principales eventos: ItemClick cuando el usuario toca algn elemento del ListView Principales propiedades comunes: Enabled habilita o deshabilita el ListView Visible esconde o muestra el ListView Principales propiedades especiales: Drawable establece el estilo grafico del ListView

14

FastScroollEnabled Habilita o deshabilita la barra de desplazamiento rpido cuando se desliza el ListView

7. Panel

El Panel (Tablero) es un View utilizado para agrupar Views. Principales eventos: Touch cuando el usuario toca el Panel (coordenadas) Principales propiedades comunes: Enabled habilita o deshabilita el Panel Visible esconde o muestra el Panel Principales propiedades especiales: Drawable establece el estilo grafico del Panel

8.

ProgressBar

El ProgressBar (Barra de avance) es un View utilizado para mostrar el avance de alguna operacin o alguna cantidad en forma de barra como por ejemplo en una descarga. Principales eventos: No tiene eventos Principales propiedades comunes:

15

Enabled habilita o deshabilita el ProgressBar Visible esconde o muestra el ProgressBar Principales propiedades especiales: Indeterminate establece el estilo grafico del ProgressBar Progress establece el avance del ProgressBar (accesible solo desde cdigo)

9. RadioButton

El RadioButton (Radio-Botn) es un View utilizado para marcar o seleccionar opciones cuando hay varios RadioButton existe una agrupacin si estn dentro de un panel solo se puede seleccionar uno si existe otro fuera del panel tambin se puede seleccionar pero no se podr seleccionar otro que este en el mismo grupo que este ltimo. Por ejemplo es til cuando selecciona un dispositivo bluetooth para emparejarse ya que solo se puede emparejar con uno a la vez. Principales eventos: CheckedChange cuando el RadioButton cambia de estado Principales propiedades comunes: Enabled habilita o deshabilita el RadioButton Text establece el texto del RadioButton Visible esconde o muestra el RadioButton Principales propiedades especiales: Checked establece si estar marcado por defualt (se utiliza tambin para saber si esta seleccionado)

10. SeekBar

16

El SeekBar (Barra de bsqueda) es un View deslizable para controlar numricamente una accin, por ejemplo para cambiar el brillo de la pantalla o el volumen de audio. Es lo contrario al ProgressBar Principales eventos: ValueChanged cuando el SeekBar cambia de posicin Principales propiedades comunes: Enabled habilita o deshabilita el ProgressBar Visible esconde o muestra el ProgressBar Principales propiedades especiales: MaxValue establece el valor mximo que puede tomar (tipo entero) Value establece el avance del SeekBar (se usa tambin para saber la posicin)

11. Spinner

El Spinner (Hilandero) es un View tipo lista conocido en el ambiente Visual Basic como ComboBox tiene un funcionamiento similar al ListView, pero a diferencia de este la lista de tems se despliega hasta hacer tocar la flecha. Los elementos de la lista se construyen desde cdigo Principales eventos: ItemClick cuando el usuario toca algn elemento del Spinner Principales propiedades comunes: Enabled habilita o deshabilita el Spinner Visible esconde o muestra el Spinner Principales propiedades especiales: Prompt establece el ttulo que aparecer cuando la lista de tems se despliega (Spinner abierto)

17

12. TabHost

El TabHost (Husped de pestaas) es un View utilizado para mostrar varias pestaas cada una con su propia interfaz de usuario. Es til cuando la cantidad de informacin que se quiere mostrar no alcanza en la pantalla. Cada pestaa requiere de un Layout. Principales eventos: TabChanged cuando el usuario toca una pestaa diferente Principales propiedades comunes: Enabled habilita o deshabilita el TabHost Visible esconde o muestra el TabHost Principales propiedades especiales: Solo son accesibles desde cdigo

13. ToggleButton

El ToggleButton (botn conmutador) es un View similar al Button tradicional pero con la caracterstica que cuando se toca hace un cambio de estado (como un CheckBox). Cuenta tambin con un grfico para indicar su estado. Principales eventos: CheckedChange cuando el usuario toca el ToggleButton

18

Principales propiedades comunes: Enabled habilita o deshabilita el ToggleButton Visible esconde o muestra el ToggleButton Principales propiedades especiales: Checked establece el estado por defualt (se utiliza tambin para saber el estado) Text On establece el texto a mostrar cuando el estado del ToggleButton es verdadero Text Off establece el texto a mostrar cuando el estado del ToggleButton es falso

14. WebView

El WebView (Vista Web) es un View usado para funciones de navegacin como mostrar una pgina de internet, permite tambin el uso de JavaScript. Principales eventos: PageFinished este evento se ejecuta despus de que la pgina es cargada por completo Override Url este evento se ejecuta antes de cargar cualquier Url Principales propiedades comunes: Enabled habilita o deshabilita el WebView Visible esconde o muestra el WebView Principales propiedades especiales:

19

JavaScriptEnabled habilita o deshabilita el uso de JavaScript ZoomEnabled habilita o deshabilita el zoom en el WebView

Cuando el usuario ha terminado de disear su interfaz de usuario el resultado final que contiene todos los Views agregados al diseo y las configuraciones establecidas es llamado Layout. El diseo de un Layout puede realizarse desde la herramienta Designer para facilitar el proceso, a partir de este punto se cuenta con dos opciones: la primera es crear el Layout con el emulador y la segunda desde el dispositivo conectado a la PC por USB o en red.

A continuacin se describen las partes ms importantes en el sistema operativo con respecto a la pantalla de usuario:

20

LA PANTALLA PRINCIPAL 1. Status Bar (barra de estado) en esta rea se despliegan los iconos indicadores de batera, red, hora, etc. Las notificaciones tambin aparecen en esta rea. 2. Widgets son pequeas aplicaciones en pantalla con una interfaz de usuario limitada y reducida. 3. Lanzador de aplicaciones al tocar el icono se mostraran todas las aplicaciones instaladas (este es un claro ejemplo de cambio de activity ya que se cambia de pantalla) 4. Dock en esta rea se aloja el icono lanzador de aplicaciones y otros accesos directos. 5. Home esta es la pantalla principal

EL DISEADOR EN EL EMULADOR Para un layout existen dos orientaciones de pantalla Portrait y Landscape presionando Ctrl + F11 cambiara la orientacin del emulador para poder disear la interfaz de usuario.

Figura 2.- Orientacin de pantalla Landscape (izquierda) y Portrait (Derecha)

Cuando el usuario ha terminado de disear su interfaz de usuario el siguiente paso es guardar el Layout con un nombre sin usar espacios ni caracteres especiales.

21

LOS INTENTS Y SERVICIES Aun con todas las funciones bsicas e interfaces de usuario no es suficiente para desarrollar potentes aplicaciones como sucede en el caso de la programacin de microcontroladores o en los programas de computadora ya que en estos es necesario el uso de interrupciones para hacer funciones multitarea y aprovechar al mximo los recursos. Android proporciona ciertas funciones que complementan las aplicaciones y representan la mayor parte de la potencialidad del sistema operativo los Intents y los Servicies. Los Intent son un medio para comunicar aplicaciones entre s de esta forma intercambian informacin en un formato nico con ciertos parmetros. Por ejemplo cuando se toca un vnculo que est en una aplicacin, emerge una ventana donde presenta las aplicaciones que pueden mostrar la pgina (navegadores como opera mini o la aplicacin de internet), en ese momento se ejecuta un Intent que pasara como parmetros a la aplicacin seleccionada la Url de la pgina a visitar. Los Servicies se definieron anteriormente como cdigo que se ejecuta en segundo plano y no tiene interfaz de usuario. Anteriormente se explic el ciclo de vida de las actividades y estas se destruyen al presionar la tecla back, Los servicios a diferencia pueden estarse ejecutando sin necesidad de estar en alguna aplicacin y se puede estar haciendo otras tareas. Por ejemplo el usuario puede estar navegando, jugando o escribiendo un mensaje de texto, incluso cuando el telfono est en reposo. En algn momento el sistema avisara al usuario que ha recibido un nuevo correo electrnico, o tiene una notificacin de Facebook, Esto es posible gracias a los servicios ya q no es necesario estar en la aplicacin de Facebook para recibir una notificacin, Sin embargo al tocar la notificacin en la barra de estado se lanzara una aplicacin. Las notificaciones de Android son el medio en que los servicios interactan con el usuario y con las aplicaciones.

CONFIGURACION DE LAS APLICACIONES Las aplicaciones en Android requieren de configuraciones especiales para ser distribuidas, en estas configuraciones se debe especificar la versin de Android a utilizar, nombre del paquete, orientacin de pantalla soportada, permisos, firmas, versin, icono, etc. Basic4android ha simplificado esta tarea ya que por ejemplo al incluir una librera en nuestro proyecto automticamente los permisos se agregan al archivo de configuracin conocido como Android Manifest. Estas se pueden configurar desde el men Project a continuacin se explicara las configuraciones necesarias para las aplicaciones desarrolladas en Basic4Android.

22

Full Screen

Marcando esta opcin la barra de estado permanecer oculta y la aplicacin ocupara toda la pantalla Include Title

Marcando esta opcin se muestra el ttulo de la aplicacin Choose Icon

Por medio de esta opcin se selecciona el icono usado por la aplicacin puede ser un archivo de imagen BMP, JPG, GIF, PNG. Package Name

Es un nombre en formato algo.algo por ejemplo miaplicacion.android, es un identificador nico para la aplicacin, no puede contener espacios ni caracteres especiales.

23

Application Label

Es el ttulo que parece debajo del icono de la aplicacin se permite el uso de espacios Versin

Se requiere un nmero en entero para indicar la versin de la aplicacin y una cadena de texto por ejemplo: Version Code: 1, Version String: Beta Can Install To External Storage

Seleccionando esta opcin la aplicacin se instalara en el almacenamiento externo (memoria SD) til en dispositivos con poca memoria interna. Es importante no usar esta opcin si la aplicacin proporciona Widgets y utiliza Servicies.

24

Orientations Supported

Selecciona la orientacin de la aplicacin puede ser Portrait (Retrato), Landscape (Paisaje) y Both (Ambos). Si se elige Portrait permanecer as a pesar de rotar el dispositivo. Si se elige Landscape permanecer as a pesar de rotar el dispositivo. Si se elige Both la aplicacin Rotara si el dispositivo rota y si tiene activada la rotacin automtica.

CONCEPTOS DE ELECTRONICA

MICROCONTROLADORES

Un Microcontrolador es un circuito integrado (Chip) programable, en otras palabras es una pequea computadora que necesita de hardware externo de entrada y salida. Las entradas pueden ser: sensores, interruptores, teclados, etc. Las salidas pueden ser: LEDs, Pantallas, Relevadores, Zumbadores, etc. Por medio de un software se disea el programa para el Microcontrolador en algn lenguaje como Basic, C, ensamblador, etc. En la actualidad los microcontroladores son la herramienta fundamental para el desarrollo cientfico y tecnolgico, saber sobre estos dispositivos electrnicos es muy importante ya que se encuentran en la mayora de las cosas desde un juguete hasta un transbordador espacial. Actualmente existen herramientas generales de hardware y software que facilitan el diseo con microcontroladores, reducen el tiempo, la complejidad, el costo, etc. Entre ellos destacan software de alto nivel como CCS, PIC BASIC, PROTON, MIKROC, etc. Pero existen adems herramientas especficas que facilitan an ms el proceso de desarrollo tal es el caso de plataformas como Arduino, Pingino, Basic Stamp, Picaxe, etc.

25

MICROCONTROLADORES PIC

Los PIC son una familia de microcontroladores fabricados por Microchip Technology Inc. Para transferir el cdigo de un ordenador al PIC normalmente se usa un dispositivo llamado programador. Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un simulador software y un ensamblador. Otras empresas desarrollan compiladores C y BASIC. ARDUINO

Arduino es una plataforma de electrnica abierta para la creacin de prototipos basada en software y hardware flexibles y fciles de usar. Se cre para artistas, diseadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos. Arduino puede tomar informacin del entorno a travs de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programacin Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP). Las placas pueden ser hechas a mano o compradas montadas de fbrica; el software puede ser descargado de forma gratuita

26

PINGINO

Pingino es una plataforma de desarrollo similar a Arduino, pero basada en microcontrladores PIC. Es compatible con microcontroladores de 8 y de 32 bits, todos con USB integrado (sin chip FTDI). Pingino viene con un cargador de arranque USB. Este pequeo programa que se ejecuta dentro del microcontrolador es responsable de transferir la aplicacin desde la PC a la memoria del microcontrolador. Las tarjetas Pingino se pueden utilizar de diferentes maneras dependiendo de las habilidades del usuario: Con el IDE Pingino y el Lenguaje Pingino (basado en C y casi compatible con el lenguaje Arduino) con Microchip MPLAB X IDE . Pingino es un entorno de desarrollo integrado (IDE), que da a todos la capacidad de escribir, compilar y cargar programas en una tarjeta Pingino. El lenguaje Pingino es casi compatible con el lenguaje Arduino, Bibliotecas y Shields. PICAXE

El sistema PICAXE es un sistema de programacin de microcontroladores poderoso, pero muy econmico, diseado para el uso educativo y aficionado de los microcontroladores Una de las caractersticas nicas del sistema PICAXE es que los programas pueden descargarse directamente al microcontrolador mediante un cable conectado al mismo, por lo tanto no se requiere el uso de equipos programadores/eliminadores de alto costo. Adems, el software es fcil de utilizar y gratis; por lo tanto los estudiantes pueden trabajar sus proyectos utilizando el sistema de programacin completo en casa. Los programas pueden crearse ya sea grficamente utilizando organigramas, o programando utilizando un lenguaje BASIC sencillo incluido en el software.

27

PERIFERICOS En informtica, se denomina perifricos a los aparatos y/o dispositivos auxiliares e independientes conectados al CPU de una computadora. Se consideran perifricos tanto a las unidades o dispositivos a travs de los cuales la computadora se comunica con el mundo exterior y que permitan realizar operaciones de entrada/salida. En los microcontroladores los perifricos realizan la misma tarea, pero estn implementados dentro del mismo chip. Los perifricos pueden clasificarse en 3 categoras principales:

Perifricos de entrada: captan informacin del mundo exterior. Perifricos de salida: son dispositivos que muestran o proyectan informacin hacia el mundo exterior Perifricos de entrada/salida (E/S): sirven bsicamente para la comunicacin con el medio externo. Entre los perifricos ms comunes implementados en los microcontroladores se pueden encontrar: ADCs: Convertidores Analgico a Digital, generalmente usado para obtener la informacin de sensores. PWMs: Moduladores de ancho de pulso, generalmente usado para controlar la intensidad y velocidad de ciertas cargas como focos y motores. DACs: Convertidores de Digital a Analgico, es un dispositivo para convertir datos digitales en seales de corriente o de tensin analgica. UART: Transmisor-Receptor Asncrono Universal, es un medio para la comunicacin con otros microcontroladores o dispositivos.

SENSORES Y ACTUADORES Un sensor es un dispositivo capaz de detectar magnitudes fsicas o qumicas y transformarlas en magnitudes elctricas, Los sensores trasladan la informacin desde el mundo real al mundo abstracto de los microcontroladores. Existen diferentes tipos de sensores pueden ser mecnicos, pticos, snicos, magnticos, piezoelctricos, etc. Estos dispositivos proporcionan informacin del mundo real como la temperatura, la presin, la iluminacin, aceleracin, fuerza, etc.

28

Un actuador es un dispositivo capaz de convertir energa hidrulica, neumtica o elctrica en la activacin de un proceso con la finalidad de generar un efecto sobre un proceso automatizado, son muy utilizados en los aparatos mecatrnicos, como por ejemplo, en los robots. Los motorreductores, servomotores, solenoides, etc. son los ms utilizados en robtica.

BLUETOOTH Bluetooth es una especificacin industrial para Redes Inalmbricas de rea Personal (WPAN) que posibilita la transmisin de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2,4 GHz. Los principales objetivos que se pretenden conseguir con esta norma son:

Facilitar las comunicaciones entre equipos mviles y fijos. Eliminar cables y conectores entre stos. Ofrecer la posibilidad de crear pequeas redes inalmbricas y facilitar la sincronizacin de datos entre equipos personales.

Los dispositivos Bluetooth se clasifican como "Clase 1", "Clase 2" o "Clase 3" en referencia a su potencia de transmisin, siendo totalmente compatibles los dispositivos de una clase con los de las otras.

Clase

Potencia mxima permitida Potencia mxima permitida Rango (mW) (dBm) (aproximado)

Clase 1 100 mW

20 dBm

~100 metros

Clase 2 2.5 mW

4 dBm

~10 metros

Clase 3 1 mW

0 dBm

~1 metro

29

Los dispositivos Bluetooth tambin pueden clasificarse segn su ancho de banda:

Versin

Ancho de banda

Versin 1.2

1 Mbit/s

Versin 2.0 + EDR 3 Mbit/s

Versin 3.0 + HS 24 Mbit/s

Versin 4.0

24 Mbit/s

Para utilizar Bluetooth, un dispositivo debe implementar alguno de los perfiles Bluetooth. Estos definen el uso del canal Bluetooth. As como canalizar al dispositivo que se quiere vincular. Un perfil Bluetooth es la especificacin de una interfaz de alto nivel para su uso entre dispositivos Bluetooth. Para utilizar una cierta tecnologa Bluetooth un dispositivo deber soportar ciertos perfiles.

Algunos perfiles de Bluetooth son: Advanced Audio Distribution Profile (A2DP) Distribucin de audio avanzada. Define cmo se puede propagar un stream de audio entre dispositivos a travs de una conexin Bluetooth. File Transfer Profile (FTP) Transferencia de ficheros. Da acceso remoto a los sistemas de ficheros, permitiendo listados de directorios y cambios a stos, obtencin, envo y borrado de ficheros Human Interface Device Profile (HID) Dispositivo de interfaz humana. Da soporte a dispositivos tales como ratones, joysticks y teclados.

30

Serial Port Profile (SPP) Puerto serie. Basado en la especificacin 07.10 de ETSI por medio del protocolo RFCOMM. Emula una lnea serie y provee una interfaz de reemplazo de comunicaciones basadas en RS-232, con las seales de control tpicas

USB OTG USB On-The-Go, es una extensin de la norma USB 2.0 que permite a los dispositivos USB tener ms flexibilidad en la gestin de la conexin USB. Permite que dispositivos como un reproductor de audio digital o telfono mvil acten como host, por lo que se les puede conectar un pendrive, un ratn, un teclado, un disco duro, etc....

31

1.- Descargar e instalar JAVA JDK


Link de descarga: http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html El instalador tambin se encuentra en la carpeta TOOLS del CD Aceptar los trminos y despus dar clic al archivo marcado en rojo para comenzar la descarga

Figura 1.- Descarga de JAVA JDK

32

Buscar el archivo descargado y ejecutar como administrador

Figura 2.- Ejecutar como administrador Hacer clic en siguiente

Figura 3.- Ventana de bienvenida

33

Hacer clic en siguiente

Figura 4.- Opciones de instalacin Esperar que termine la instalacin de JAVA JDK 6

Figura 5.- Instalacin en curso

34

Hacer clic en finalizar

Figura 3.- Instalacin completa Continuar con el paso 2

35

2.- Descargar, Instalar y Configurar ANDROID SDK


Link de descarga http://developer.android.com/sdk/index.html El instalador tambin se encuentra en la carpeta TOOLS del CD Hacer clic en el botn marcado en rojo para comenzar la descarga

Figura 6.- Descarga de ANDROID SDK

36

Buscar el archivo descargado y ejecutar como administrador

Figura 7.- Ejecutar como administrador Hacer clic en siguiente

Figura 8.- Ventana de bienvenida

37

Hacer clic en siguiente

Figura 8.- JAVA JDK encontrada Hacer clic en siguiente

Figura 9.- Ruta de instalacin

38

Hacer clic en siguiente

Figura 10.- Comienzo de la instalacin Hacer clic en siguiente

Figura 11.- Instalacin completada

39

Hacer clic en finalizar y esperar que se ejecute el SDK MANAGER

Figura 12.- Ejecucin del Asistente

40

Seleccionar los componentes Android SDK Platform-tools, SDK Platform y Google USB Driver marcados en rojo y hacer clic en instalar.

Figura 13.- Seleccin de componentes Marcar aceptar todos y Hacer clic en instalar

Figura 14.- Aceptar Trminos

41

Ir a la ruta de instalacin de ANDROID SDK y encontrar la carpeta Platform-tools

Figura 15.- Carpeta Platform-tools Copiar la carpeta Platform-tools y pegar en la carpeta Platforms->Android-8

Figura 16.- Copiar y Pegar Platform-tools

42

Renombrar la carpeta pegada quedando como tools

Figura 17.- Carpeta Platform-tools renombrada NOTA: para la instalacin simple copiar en archivos de programa la carpeta ANDROID contenida en la carpeta TOOLS del CD Continuar con el paso 3

43

3.- Descargar, Instalar y Configurar Basic4Android


Link de descarga http://www.basic4ppc.com/android/downloads.html

Hacer clic en el enlace marcado en rojo para comenzar la descarga

Figura 18.- Descarga de Basic4Android

44

Buscar el archivo descargado y ejecutar como administrador

Figura 19.- Ejecutar como administrador Hacer clic en siguiente

Figura 20.- Ventana de bienvenida

45

Marcar aceptar los trminos y hacer clic en siguiente

Figura 21.- Trminos del software Hacer clic en siguiente

Figura 22.- Ruta de instalacin

46

Marcar crear acceso directo y Hacer clic en siguiente

Figura 23.- Creacin de acceso directo Hacer clic en instalar

Figura 24.- Comienzo de la instalacin

47

Marcar ejecutar Basic4Android y hacer clic en finalizar.

Figura 25.- Instalacin finalizada

Nota: Es necesario activar la versin completa para ello copiar en la raz de la carpeta donde se instal Basic4Android el archivo b4a-license que est en la carpeta TOOLS-> Basic4android 1.5 del CD, despus repetir el proceso de instalacin y ejecutar Basic4android e introducir el correo contenido en el archivo clave que est en la carpeta TOOLS-> Basic4android 1.5 del CD, copiar en la raz de la carpeta donde se instal Basic4Android las carpetas Libraries y Bibliotecas adicionales que estn en la carpeta TOOLS-> Basic4android 1.5 del CD. Al copiar seleccionar reemplazar archivos si ya existen.

48

Ejecutar Basic4android y hacer clic en el men Tools->Configure Paths.

Figura 26.- Configuracin de directorios Hacer clic en el primer botn Browse y buscar JAVAC.EXE en el directorio donde se instal, Despus hacer clic en el segundo botn Browse y buscar en la carpeta Android-8 el archivo ANDROID.JAR y por ultimo hacer clic en el tercer botn Browse y buscar la carpeta Bibliotecas adicionales

Figura 27.- Ubicacin de JAVAC.EXE Y ANDROID.JAR

49

Hacer clic en Tools->Run AVD manager y esperar que se ejecute el SDK MANAGER

Figura 28.- Ejecucin de SDK MANAGER En la barra de men de SDK MANAGER hacer clic en Tool->Manage AVDs.

Figura 29.- Administrar AVDs

50

Hacer clic en nuevo

Figura 30.- Crear un AVD Rellenar los siguientes campos y despus dar clic en siguiente: Name: MY_ANDROID_DEVICE Target: Android 2.2 - API Level 8 Built-in: WQVGA400

Figura 31. - AVD creado

51

Hacer clic en OK

Figura 32.- Resultado del AVD creado. Hacer clic en Start y despus en Launch

Figura 33.- Ejecutar el AVD creado.

52

Esperar a que cargue el AVD

Figura 34.- AVD Iniciando AVD listo para usar

Figura 35.- AVD Corriendo

53

Basic4android es un entorno de desarrollo sencillo y potente orientado a dispositivos Android, es similar al lenguaje de Visual Basic con soporte adicional para los objetos. Incluye un potente diseador de interfaces de usuario con soporte integrado para mltiples pantallas y orientaciones. Es posible desarrollar y depurar con el emulador de Android o con un dispositivo real mediante USB conectado o a travs de la red local.Basic4android tiene un amplio conjunto de libreras que facilitan el desarrollo de aplicaciones avanzadas. Esto incluye: SQL, GPS, Bluetooth, cmara, IOIO, USB, servicios, JSON, animaciones, Wi-Fi, TTS, reconocimiento de voz, grficos, OpenGL, y ms.

El Entorno de Desarrollo Integrado (IDE)


Al ejecutar el IDE obtendr un formulario similar a la siguiente imagen:

54

1.- Men y Toolbar

1.1.- Toolbar

55

1.2.- Men Archivo

New Open Source Save Export as Zip Page Setup Print Preview Print

Genera un nuevo proyecto. Carga un proyecto. Guarda el proyecto actual. Exporta todo el proyecto en un archivo Zip. Configuracin de las pginas a imprimir Muestra una vista previa de impresin Imprime el cdigo.

1.3.- Menu Edicin

56

Cut Corta el texto seleccionado y lo copia al portapapeles. Cut Line Corta la lnea en la posicin del cursor. Copy Copia el texto seleccionado al portapapeles. Paste Pega el texto en el portapapeles en la posicin del cursor. Undo Deshace la ltima operacin. Redo Rehace la operacin anterior. Find Activa la funcin buscar y reemplazar. Block Comment Establece las lneas seleccionadas como comentarios. Block Uncomment Descomenta las lneas seleccionadas. Remove all Bookmarks Elimina todos los marcadores. Remove all Breakpoints Elimina todos los puntos de interrupcin Outlining Contraer cdigo 1.4.- Menu Proyecto

Add New Module Add Existing Module Change Module Name Remove Module Hide Module Activity Properties Choose Icon Package Name Application Label

Agrega un nuevo mdulo Aadir un mdulo existente Cambia el nombre del mdulo Quita el mdulo actual Oculta el mdulo actual Propiedades de la actividad, explicado abajo Elige un icono para la aplicacin. Cambia el nombre del paquete. Cambia el nombre de la aplicacin.

57

Application Versin Can internal storage Orientations Supported Compile & Run Include Debug Information Attach to Debbugger

Cambia la versin de la aplicacin. La aplicacin se instala en almacenamiento externo Orientaciones compatibles, explicado abajo. Diferentes modos de compilacin. Incluir Informacin de depuracin Conectar al depurador

Agregar un nuevo modulo Mdulo de actividad Mdulo de cdigo Mdulo de servicio

Propiedades de la actividad

Pantalla completa Incluir titulo

Orientaciones compatibles Ambos modos Solo retrato Solo paisaje

1.5.- Menu Herramientas

58

IDE Options B4A Bridge Clean Files Folder Clean Project Run AVD Manager Configure Paths Restart ADB Server Private Sign Key

Opciones de IDE Herramienta de depuracin B4A Limpiar archivos sin utilizar Limpiar proyecto Ejecutar el administrador de AVD Configurar rutas Reiniciar el servidor ADB Clave privada para firmar apps

2.- Pestaas
Hay 4 pestaas en la parte inferior derecha del IDE que mostrar la siguiente informacin.

2.1.- Pestaa de mdulos y subrutinas


Todos los mdulos del proyecto y todas las subrutinas del mdulo seleccionado aparecen en dos listas en el derecho del IDE.

Lista de mdulos Al hacer clic en un mdulo muestra su cdigo en el rea de cdigo. Lista de subrutinas del mdulo seleccionado Al hacer clic en una subrutina muestra su cdigo en medio del rea de cdigo.

59

2.2.- Archivos Esta ventana muestra todos los archivos que se han agregado al proyecto. Estos archivos se guardan en la carpeta Files.DirAssets. Estos pueden ser cualquier tipo de archivos: diseos, imgenes, textos, etc. Hacer clic en el botn Add Files para agregar archivos al proyecto. Se accede a los archivos de esa carpeta con File.DirAssets

Al hacer clic en el botn Remove Selected elimina los archivos seleccionados de la lista de la carpeta de archivos del proyecto.

Asegurarse de tener una copia de los archivos a quitar, porque no se transfieren a la papelera de reciclaje, son definitivamente perdidos si no se tiene una copia. 2.3.- Libreras Lista de las bibliotecas disponibles que se pueden utilizar en el proyecto. Comprobar las bibliotecas que se necesitan para cada proyecto. Asegurarse de que se cuenta con la ltima versin de las bibliotecas.

60

La documentacin de las bibliotecas puede encontrarse aqu: http://www.basic4ppc.com/android/documentation.html http://www.basic4ppc.com/android/wiki/index.php/Libraries

61

3.- El diseador
El diseador permite generar diseos con el emulador o un dispositivo real.

3.1.- El men del diseador

62

3.1.1- El men archivo

New Open Save Save As

Se abre un nuevo diseo de vaco. Abre un diseo existente Guarda el diseo actual. Guarda el diseo actual con un nuevo nombre.

3.1.2- El men agregar View Este men le permite seleccionar el View que desea agregar en el diseo actual en el dispositivo o el emulador.

Button CheckBox EditText ImageView Label ListView Panel ProgressBar RadioButton ScrollView SeekBar Spinner TabHost ToggleButton WebView

agrega un botn agrega una casilla de verificacin agrega unacajadetexto agrega unacaja de imagen agrega una etiqueta agrega un control tipo lista agrega un contenedor agrega una barra de progreso agrega un radio botn agrega un vista scroll agrega una barra deslizable agrega un combo agrega un tabulador agrega un botn toggle agrega una vista Web

63

3.1.3- El men herramientas

Generate Members Generar miembros Bring to Front Trae el View seleccionado al frente Send To Back Trae el View seleccionado al frente Duplicate Selected Views Duplica el View seleccionado Remove Selected Views Elimina el View seleccionado Change Grid Cambia el tamao de la cuadrcula Connect Conecta al dispositivo o el emulador Disconnect Desconecta del dispositivo o emulador

3.2- Lista de propiedades Una lista de las propiedades del View seleccionado organizados en grupos. Todas las propiedades pueden modificarse directamente en la lista. Todas las propiedades en el grupo principal y algunos de las propiedades de los otros grupos son comunes a todos los tipos de Views.

64

3.2- Variantes de diseo Las de diseo diferente pueden gestionarse en un mismo archivo de diseo para tener mayor compatibilidad con distintos tamaos de pantalla y configuraciones.

En otro captulo se explican los conceptos de pantalla tales como los pixeles, la resolucin, densidad, etc. y la metodologa para hacer aplicaciones con distintos tamaos de pantalla

65

Como primer ejemplo se desarrollara la aplicacin ms sencilla que se puede hacer para ilustrar el uso de Basic4android y el proceso de construccin de la aplicacin, se utilizara el emulador con el AVD creado en la seccin anterior y como segundo ejemplo se construir una aplicacin bsica pero con interfaz de usuario para utilizar el designer, se recomienda crear una carpeta para las aplicaciones que se desarrollaran a lo largo de la gua. Las aplicaciones listas para instalar y probar se encuentran en la carpeta APK del CD. El cdigo fuente y el proyecto de las aplicaciones se encuentran en la carpeta APLICACIONES ANDROID del CD Antes de instalar cualquier aplicacin externa a la tienda en lnea de Google es necesario activar la opcin para instalar software de terceros en el dispositivo, marcando la opcin del men Ajustes>Aplicaciones-> Orgenes desconocidos

HOLA MUNDO Descripcin de la aplicacin: Muestra un cuadro de texto al iniciar la aplicacin Interfaz de usuario: Sin interfaz de usuario Hardware: Dispositivo Android

1.

Ejecutar Basic4Android

2. Guardar el proyecto con el nombre HOLA MUNDO desde el men File->Save 3. Como el objetivo es mostrar un mensaje al iniciar la aplicacin se usara el evento Activity_Create para dar la instruccin. Existen varios tipos de mensajes en Android el que se usara en este ejemplo se conoce como MSGBOX (cuadro de mensaje) y necesita dos parmetros uno es el contenido del mensaje y el otro el ttulo. El comando deber quedar como se muestra a continuacin:

66

Msgbox("contenido","titulo")
El evento Activity_Create quedara de la siguiente manera (los textos en color verde son comentarios):

4. El siguiente paso es configurar el proyecto a travs del men Project con las siguientes configuraciones: Include Debug Information: Desmarcado Attach To Debugger: Desmarcado Todo esto con el fin de eliminar la depuracin desde Basic4Android y ejecutar normalmente la aplicacin. Para marcar o desmarcar basta con hacer clic en la opcin. Por el momento las dems opciones se quedan con la configuracin por default. 5. Dar clic en la barra de herramientas al icono RUN

Aparecer una ventana pidiendo nombre del paquete, esto puede hacerse tambin desde el men Project. El nombre del paquete deber quedar con el formato algo.algo en este ejemplo quedara como ejercicio1.android

En la siguiente ventana se debe introducir el Label de la aplicacin tambin se puede hacer desde Project. El Label de la aplicacin es aquel que aparece junto al icono en esta ocasin ser Ejercicio 1

67

6. Esperar a que termine el proceso de compilacin y que la aplicacin inicie en el emulador

El resultado ser el siguiente

Reto: Explorar el Ejercicio 2 llamado TOASTMESSAGE que se encuentra en la carpeta APLICACIONES ANDROID del CD

68

LOAD LAYOUT Descripcin de la aplicacin: Carga un Layout previamente diseado Interfaz de usuario: Todos los Views Hardware: Dispositivo Android

1. Ejecutar Basic4Android 2. Guardar el proyecto con el nombre LOAD LAYOUT desde el men File->Save 3. Dar clic en el men Designer 4. Conectarse al Emulador haciendo clic en el men del Desginer Tools->Connect

El estado de la conexin se muestra debajo del men

Es necesario que el emulador est en funcionamiento para que pueda conectarse con el Designer cuando la conexin se haya establecido el emulador quedara como se muestra en la siguiente imagen

69

5. Disear el Layout: Ponerle el ttulo Ejercicio 4 a la actividad, a travs del men propiedades del Designer, la parte superior del men indica el objeto que se est editando y debajo aparecen las propiedades. Se puede explorar otras opciones de la actividad como el fondo con la propiedad Drawable y por ejemplo poner de fondo un gradiente.

Agregar un Button al diseo haciendo clic en el men del Desginer Add View->Button el Button aparecer en el emulador

Cuando los cuadros rojos aparecen alrededor de un View significa que esta seleccionado y se puede arrastrar y cambiar su tamao. Continuar con el diseo agregando los dems Views restantes y acomodarlos para que todos sean visibles en la pantalla. 6. Guardar el Layout con el nombre mi_layout 7. Agregar al cdigo la instruccin para cargar el Layout. La manera de cargar el diseo es por medio del comando Actitvity.LoadLayout y solo se necesita como parmetro el nombre del Layout. El momento para cargar el Layout es cuando la aplicacin inicia esto es en el evento Activity_Create. El comando deber quedar como se muestra a continuacin:

70

Activity.Loadlayout("nombre_del_layout")
El evento Activity_Create quedara de la siguiente manera (los textos en color verde son comentarios):

Al escribir las instrucciones como Activity justo despus de poner el punto el autocompletado permite ver las funciones, parmetros, propiedades, etc. 8. Configurar la aplicacin repitiendo el paso 4 del primer ejemplo con los siguientes parmetros: Include Debug Information: Desmarcar (en caso de estarlo) Attach To Debugger: Desmarcar (en caso de estarlo) Can Install To External Storage: Marcar La nica diferencia con el ejemplo anterior es que la aplicacin se podr instalar en la memoria SD 9. Repetir los pasos 5 y 6 del ejemplo anterior e ingresar lo siguiente: Package Name: ejercicio4.android Label: Ejercicio 4 El resultado ser el siguiente

71

La aplicacin no hace mucho ya que el objetivo fue disear y cargar un Layout pero se puede interactuar con los Views. Otra forma de disear y ejecutar aplicaciones es desde el dispositivo real para ello es necesario activar la depuracin en el dispositivo y tener instalados los drivers. El primer paso es instalar el software proporcionado en el CD de su dispositivo Android o bien descargar el software desde la pgina del fabricante, con esto se instalaran los drivers, Despus en el men del dispositivo marcar la opcin de depuracin a travs de Ajustes->Aplicaciones->Desarrollo->Depuracin USB. Luego conectar el dispositivo y esperar a que est listo para usar. Al momento de tratar de instalarse la aplicacin o de conectar con el Designer se har con el emulador o en el dispositivo dependiendo de cul est conectado en caso de estar presentes los dos aparecer una ventana para seleccionar con cual trabajar.

Reto: Disear un Layout en orientacin Landscape con el dispositivo real

72

ACTIVITY MENU Descripcin de la aplicacin: Muestra un mensaje segn la opcin seleccionada Interfaz de usuario: Men tem (solo disponible desde cdigo) Hardware: Dispositivo Android A partir de este punto se omitirn los pasos bsicos tales como ejecutar el IDE, guardar el proyecto, etc. Se usara siempre la opcin de instalar la aplicacin en el almacenamiento externo, tambin se omitirn los comentarios de cdigo en las imgenes para tener mayor espacio ya que se proporciona todo el cdigo fuente con comentarios. Todo lo anterior con el fin de enfocarse en los nuevos conceptos. Este ejemplo utiliza un tipo de control que solo se puede crear desde cdigo conocido como men tem y un tipo de mensaje utilizado en el ejercicio 2 a modo de reto, llamado Toastmessage, el objetivo es entender el flujo del programa. Nombre del Proyecto: ACTIVITY MENU Package Name: ejercicio3.android Application Label: Ejercicio 3 Los tems de men aparecen cuando el usuario presiona la tecla men del dispositivo. Para crear un tem se utiliza el comando Activity.AddMenuItem que necesita dos parmetros uno es el texto del tem y el otro es el evento o la subrutina asociada a el boton, recordar que los botones tiene un evento principal que es el clic. La sintaxis del comando es la siguiente: Activity.AddMenuItem("titulo","evento") Es un comando de inicializacin o construccin por lo tanto debe declararse en el evento Activity_Create

73

Se ha construido dos tems uno con el ttulo opcin 1 y el otro con el titulo opcin 2. El parmetro ms importante es el evento puede ser cualquier texto pero se debe usar una metodologa para no equivocarse al momento de tocar el tem opcin 1 el flujo del programa buscara la subrutina evento_opcion_1, pasara lo mismo con el tem opcin 2. Por lo tanto adems de definir un evento habr que construir la subrutina que pueden agregarse al final del cdigo como se muestra a continuacin:

Cada subrutina comienza por Sub seguido del nombre del evento que siempre debe ser el mismo que se declara como cuando construye un tem seguido de un guion y el evento fundamental. Por ejemplo se defini evento_opcion_1 y el evento fundamental es el clic en el caso del tem opcin 1, Por lo tanto queda como evento_opcion_1_clic. Cada subrutina termina con End Sub y es en este bloque donde se pondrn todas las acciones a realizar al tocar el tem. En este caso para cada tem aparecer un Mensaje tipo Toast al tocarlo Al correr la aplicacin y presionar el botn men del dispositivo aparecern los tems y al tocar un tem aparecer el mensaje Toast

74

Un mensaje Toast es aquel que se desvanece despus de un tiempo Reto: Aumentar los tems y los mensajes a 4

BUTTON Descripcin de la aplicacin: Muestra un mensaje al tocar el botn Interfaz de usuario: 1 Button Hardware: Dispositivo Android En este ejemplo se hace uso del primer View para interactuar con la aplicacin. Al tocar el botn se mostrara un cuadro de mensaje (MSGBOX). Disear el Layout agregando un Button y guardarlo con el nombre layout_ejercicio_5. El propsito de este ejemplo es vincular los Views con el cdigo Nombre del Proyecto: BUTTON Package Name: ejercicio5.android Application Label: Ejercicio 5 El primer paso para vincular el Boton con el cdigo es declararlo, pero al ser un View esto se puede hacer desde el designer por medio del men Tools->Generate Members aparecer una ventana en la que se muestran los Views utilizados en el diseo y tambin la actividad

Al expandir los elementos aparecern sus eventos

75

Se deben marcar los Views y eventos que se desean vincular al diseo en este caso se marcara el Button1 y su evento clic y despus dar clic al botn Generate members.

Automticamente el objeto se declara en Sub Globals

Y tambin la subrutina correspondiente al evento del objeto, el comando Msgbox es agregado por el usuario

Al correr la aplicacin y tocar el Button1 uno aparecer el Msgbox

76

Reto: Usar el Button1 con otro evento

LABEL Descripcin de la aplicacin: Cambia el Texto de un Label al tocar un Button Interfaz de usuario: 1 Button, 1 Label Hardware: Dispositivo Android A partir de este punto se omitir tambin el proceso de diseo del Layout, generar los miembros y cargar el Layout, en la parte superior de cada ejemplo se especifica los Views necesarios para la interfaz de usuario, se proporciona adems los Layout de cada ejercicio estn en la carpeta APLICACIONES ANDROID->FILES del CD, tambin se especificara las propiedades y eventos necesario para cada View. En este ejemplo se hace de un View visto anteriormente y un view de texto llamado Label. Al tocar el boton el texto del Label cambiara. Nombre del Proyecto: LABEL Package Name: ejercicio6.android Application Label: Ejercicio 6 El Layout deber quedar como se muestra a continuacin:

77

El cdigo necesario para cambiar el texto del Label es a travs de la propiedad Text y su sintaxis es la siguiente: Label1.Text="Cualquier_Texto" El evento Click del Button1 deber quedar de la siguiente manera

El resultado de la aplicacin al tocar el Button1 ser el siguiente

Reto: Agregar un botn para restablecer el texto del Label

78

SEEKBAR Descripcin de la aplicacin: Muestra la posicin de un Seekbar en un Label Interfaz de usuario: 1 Seekbar, 1 Label Hardware: Dispositivo Android Nombre del Proyecto: SEEKBAR Package Name: ejercicio7.android Application Label: Ejercicio 7 El Layout deber quedar como se muestra a continuacin:

El Seekbar es un tipo de View numrico, dependiendo la posicin en que se encuentre ser su valor, este valor se puede leer con la propiedad Value. El evento ser ValueChanged que es cuando cambia su posicin. Los valores que toma son enteros y por medio de la propiedad Max se puede configurar el mximo valor que puede tomar. El cdigo necesario para leer la posicin es el siguiente: Variable=SeekBar1.Value Donde Variable es una variable declarada necesaria para guardar el valor, pero el lenguaje Basic permite asignar directamente un valor entero a un Label. El cdigo del evento del Seekbar deber quedar de la siguiente forma:

79

El resultado de la aplicacin al deslizar el Seekbar ser el siguiente

Reto: Avisar al usuario cuando se ha llegado al mnimo y al mximo valor

PROGRESSBAR Descripcin de la aplicacin: Muestra la posicin de un Seekbar en un Label y en un ProgressBar Interfaz de usuario: 1 Seekbar, 1 Label, 1 ProgressBar Hardware: Dispositivo Android Nombre del Proyecto: ProgressBar Package Name: ejercicio8.android Application Label: Ejercicio 8 El Layout deber quedar como se muestra a continuacin:

80

El ProgressBar tiene el funcionamiento contrario al SeekBar se puede configurar la posicin o progreso a travs de la propiedad Progress, siendo 100 el valor mximo que puede tomar, y adems no tiene eventos. El cdigo necesario para escribir la posicin es el siguiente: ProgressBar1.Progress=algn valor entero Donde algn valor entero puede ser una constante o una variable por ejemplo al leer la posicin de un Seekbar se obtiene un entero por lo cual se puede asignar directamente. El cdigo del evento del Seekbar deber quedar de la siguiente forma:

El resultado de la aplicacin al deslizar el Seekbar ser el siguiente

Reto: Ajustar lo necesario para aumentar el rango a 1024

RADIOBUTTON Descripcin de la aplicacin: Cambia el color del texto de un Label segn la opcin seleccionada Interfaz de usuario: 3 RadioButton, 1 Label Hardware: Dispositivo Android

81

Nombre del Proyecto: RADIOBUTTON Package Name: ejercicio9.android Application Label: Ejercicio 9 El Layout deber quedar como se muestra a continuacin:

El RadioButton es un control de seleccin y su estado puede saberse a travs de la propiedad Checked, siendo True o False los dos valores que puede tomar, el evento utilizado es el CheckedChange que es cuando cambia de estado, cuando estn agrupados solo se puede seleccionar un RadioButton. El cdigo necesario para leer su estado es el siguiente: Variable=RadioButton1.Checked Donde Variable es de tipo booleano, sin embargo la manera general de usar estos controles es a travs de bloques IF THEN. Un color se puede establecer de una manera fcil por medio de la funcin Colors, el autocompletado mostrara las diferentes opciones disponibles. Para este ejemplo se utilizan los colores rojo, verde y azul Cada RadioButton establece un color para el texto del Label por lo tanto se pondr una instruccin en cada evento correspondiente, el cdigo deber quedar como se muestra a continuacin.

82

El resultado de la aplicacin al seleccionar cada RadioButton ser el siguiente:

Reto: agregar otro grupo de RadioButton para controlar el color del texto de otro Label

83

CHECKBOX Descripcin de la aplicacin: Controla el estilo de un Label segn las opciones marcadas Interfaz de usuario: 3 CheckBox, 1 Label Hardware: Dispositivo Android Nombre del Proyecto: CHECKBOX Package Name: ejercicio10.android Application Label: Ejercicio 10

El Layout deber quedar como se muestra a continuacin:

El CheckBox es un control de seleccin igual al RadioButton, con la diferencia de que se puede seleccionar ms de uno. El cdigo necesario para leer su estado es el siguiente: Variable=CheckBox1.Checked Donde Variable es de tipo booleano, sin embargo al igual que un RadioButton la manera general de usar estos controles es a travs de bloques IF THEN. Este ejemplo es parecido al anterior con la diferencia que se controla el estilo de texto: negrita, minscula y resaltado, el cdigo deber quedar como se muestra a continuacin.

84

El resultado de la aplicacin al combinar las opciones ser el siguiente:

Reto: Sustituir los CheckBox por ToggleButton

85

En el bloque anterior se desarrollaron aplicaciones bsicas utilizando los principales Views para familiarizarse con el entorno Basic4Android, a continuacin se realizaran aplicaciones que incluyan el uso de libreras para explorar las funciones caractersticas de Android como los sensores, las notificaciones, el reconocimiento de voz, etc. Al igual que en el captulo anterior las aplicaciones listas para instalar y probar se encuentran en la carpeta APK del CD, tambin el cdigo fuente y el proyecto de las aplicaciones se encuentran en la carpeta APLICACIONES ANDROID del CD

ANIMATION Descripcin de la aplicacin: Anima un objeto con la librera ANIMATION Interfaz de usuario: 2 Button, 6 RadioButton Hardware: Dispositivo Android Nombre del Proyecto: ANIMATION Package Name: ejercicio11.android Application Label: Ejercicio 11

El Layout deber quedar como se muestra a continuacin:

86

La librera Animation est orientada a aplicar animaciones a los Views, para utilizar cualquier librera es necesario incluirla en el proyecto marcando la correspondiente de las que aparecen disponibles en la pestaa Libs del lado inferior derecho del IDE, la librera Core siempre aparecer marcada ya que contiene los comandos bsicos para cualquier aplicacin.

La librera ANIMATION ofrece 6 tipos diferentes de animaciones, para construir una aplicacin primero se debe declarar el objeto como tipo Animation en este caso lo que se pretende es explorar las 6 opciones por lo tanto se debe declarar esa cantidad de objetos, tambin se necesita

87

una variable que se declara como x que ms adelante se explica, el cdigo correspondiente a la declaracin debe quedar de la siguiente manera:

Cualquier variable que se declara en Basic se declara de la siguiente forma: Dim nombre_de_la_variable As tipo_de_variable

En la parte Sub Globals del cdigo aparecen tambin los objetos declarados ya que esto lo hace automticamente el designer al generar miembros. El siguiente paso es construir cada una de las animaciones, ya que esto es una creacin o inicializacin el cdigo deber ir en la parte Activity_Create como se muestra a continuacin:

88

Para una animacin se debe definir 4 cosas: el tipo de animacin, la duracin de la animacin, las veces que se repetir y el modo de repeticin. Las tres ltimas son iguales para todos los tipos y se establecen por medio de las propiedades Duration, RepeatCount y RepeatMode respectivamente. El desarrollador no debe olvidar para acceder a las propiedades primero se escribe el nombre del objeto seguido de punto y el autocompletado muestra todas sus propiedades, constantes y funciones. La duracin se expresa en milisegundos, la cantidad de repeticiones en un entero y el modo de repeticin por medio de una constante del propio objeto que puede ser REPEAT_REVERSE O REPEAT_RESTART, lo que significa que la animacin har reversa o reiniciara

89

para repetir. Un punto muy importarte para tener una idea de la sintaxis de los comandos es identificar qu tipo de propiedad es, en un objeto pueden aparecer los siguientes smbolos:

El primero (mano) indica que la propiedad necesita un valor proporcionado a travs del operador de asignacin =, Como es el caso de Duration. El segundo smbolo (cuadro purpura) indica que la propiedad es ms compleja que necesita ciertos parmetros como es el caso de LoadLayout() , casi siempre de esa forma con los parntesis. El ltimo icono (cuadro azul) significa que es una constante y se debe usar como en el caso de Repeat_Reverse. El IDE muestra tambin ejemplos de sintaxis como en el caso de los tipos de animacin. Para ilustrar cada tipo de animacin se utilizan 6 RadioButton y un boton para ejecutar la accin de iniciar la animacin. Por lo tanto se debe checar el estado de cada RadioButton y de alguna forma hacerle saber al boton cual esta seleccionado. Esto se hace por medio de la variable X como se muestra a continuacin:

90

El Button2 ser el encargado de iniciar las animaciones por medio de la propiedad Start, cabe aclarar que el Button1 solo sirve para que a travs de l se muestre la animacin de un View, el cdigo quedara de la siguiente manera:

El resultado de la aplicacin (animaciones alpha, rotate y scale) ser el siguiente

Reto: Controlar las coordenadas de la animacin translate por medio del evento Touch de la actividad

91

TTS Descripcin de la aplicacin: Convierte de texto a voz Interfaz de usuario: Sin interfaz de usuario Hardware: Dispositivo Android Nombre del Proyecto: TTS Package Name: ejercicio12.android Application Label: Ejercicio 12 La librera TTS (Text To Speech) es una funcin de Android que permite convertir texto en voz implementado desde la versin 2.2 de Android (froyo). Para utilizar esta caracterstica es necesario tener instalado en el dispositivo los datos de voz, esto se puede verificar en el men Ajustes>Entrada y Salida de Voz->Ajustes de sntesis de Voz->Escuchar un ejemplo, si no se logra escuchar el ejemplo ser necesario instalar los datos de voz a travs de Ajustes->Entrada y Salida de Voz->Ajustes de sntesis de Voz->Instalador Datos de Voz, Este proceso conduce a la tienda en lnea de Google para descargar los datos. El primer paso es marcar la librera TTS, despus declarar el objeto sintetizador_de_voz como tipo TTS como se muestra a continuacin:

El siguiente paso es inicializar el objeto a travs de la propiedad Initialize y requiere solo de un parmetro en este caso un evento que se nombrara como Event_sintetizador el cdigo debe quedar de la siguiente manera:

92

El evento fundamental del TTS es cuando ha terminado de inicializarse llamado Ready y por medio de su variable local Success se puede saber si la operacin fue exitosa o surgi algn problema, para sintetizar un texto se utiliza la propiedad Speak y se ingresan dos parmetros uno es el texto a sintetizar y el otro especifica si se puede interrumpir la sntesis o terminar (esto en caso de que en el momento de estar hablando se presente otra instruccin de sntesis). El cdigo queda de la siguiente manera:

El resultado de la aplicacin ser un mensaje de voz al iniciar Reto: Implementar las propiedades Pitch y SpeechRate

VOICE RECOGNITION Descripcin de la aplicacin: Convierte de voz a texto Interfaz de usuario: 1 Button Hardware: Dispositivo Android Nombre del Proyecto: VOICE RECOGNITION Package Name: ejercicio13.android Application Label: Ejercicio 13 La librera VOICE RECOGNITION (reconocimiento de voz) es una funcin de Android que permite convertir texto en voz implementado desde la versin 2.2 de Android (froyo), No todos los fabricantes implementan esta funcin por lo tanto habr que averiguar si el dispositivo lo soporta, una forma es verificar si est instalada la aplicacin de bsqueda por voz. El principio de funcionamiento es el siguiente: el usuario indica que introducir un comando de voz, la aplicacin indica el momento para hacerlo, graba el mensaje, la enva a un servidor, y el servidor regresa las coincidencias. Este proceso es muy rpido pero requiere conexin a internet.

93

En este caso la librera a incluir es la llamada Phone ya que Basic4android la considera una funcin telefnica se necesita declarar un objeto tipo VoiceRecognition pero requiere que sea en el rea Sub Process_Globals, el nombre ser VR, el cdigo deber quedar de la siguiente manera:

El siguiente paso es inicializar el objeto con el nombre de un evento, como se mencion anteriormente es posible saber si la funcin de reconocimiento de voz es soportada a travs de la propiedad IsSupported, la propiedad Prompt establece el texto para indicar que es momento de hablar. El cdigo correspondiente se muestra a continuacin:

El reconocimiento de voz responde a un evento llamado Result que es cuando se ha completado el proceso, a travs de Success se puede saber si se realiz con xito o hubo algn problema, y los resultados de la conversin se obtienen de la variable Texts, el cdigo es el siguiente:

94

Con lo cual se muestra a travs de un mensaje Toast el primer resultado obtenido, se toma el primer elemento de la lista con Get(). El ltimo paso es iniciar el reconocimiento de voz con el evento clic del Button1 esto se logra con la propiedad Listen del objeto VR como se muestra a continuacin:

Para correr la aplicacin es necesario desde el dispositivo Reto: Mostrar todos los resultados de la lista TIMER Descripcin de la aplicacin: Muestra un contador Interfaz de usuario: 2 Button, 1 Label Hardware: Dispositivo Android Nombre del Proyecto: TIMER Package Name: ejercicio14.android Application Label: Ejercicio 14 El Timer es un objeto muy importante en el desarrollo de aplicaciones, Junto con las interrupciones forman la base para el multiproceso. El Timer est implementado en la librera Core por lo tanto no es necesario marcar ninguna extra. El Layout deber quedar como se muestra a continuacin:

95

Se necesita declarar un objeto tipo Timer en el rea Sub Globals con el nombre Temporizador, tambin una variable tipo Byte con el nombre X, el cdigo deber quedar de la siguiente manera:

El siguiente paso es inicializar el objeto con el nombre de un evento y una cantidad entera que expresa el tiempo en que se generara una interrupcin en milisegundos. El cdigo correspondiente se muestra a continuacin:

El Timer responde a un evento llamado Tick que significa una cuenta o que ha pasado el tiempo especificado para interrumpir, en esta subrutina se incrementa la variable X para despus mostrar un contador en el Label1, el cdigo es el siguiente:

96

Se utilizan 2 Button uno para iniciar y el otro para detener las interrupciones del Timer a travs de su propiedad Enabled, el cdigo es el siguiente:

El resultado ser un contador en pantalla. Reto: Utilizar un SeekBar para configurar el tiempo de cada cuenta. PROXIMITY SENSOR Descripcin de la aplicacin: Detecta la proximidad de un objeto Interfaz de usuario: 1 ProgressBar, 1 Label Hardware: Dispositivo Android, algn objeto Nombre del Proyecto: PROXIMITY SENSOR Package Name: ejercicio15.android Application Label: Ejercicio 15 El Sensor de proximidad parte del hardware del telfono utilizado para funciones telefnicas, su rango de alcance vara segn el dispositivo, pero no mide distancia si no que indica si hay algo cercano o no. Para utilizarlo es necesario incluir la librera Phone. El Layout deber quedar como se muestra a continuacin:

97

Se necesita declarar un objeto tipo PhoneSensors en el rea Sub Globals con el nombre Proximidad, el cdigo deber quedar de la siguiente manera:

El siguiente paso es inicializar el objeto con el tipo de sensor, esto se hace a travs de una constante del propio objeto llamado TYPE_PROXIMITY. El cdigo correspondiente se muestra a continuacin:

Para hacer que el sensor comience a funcionar automticamente se utiliza el evento Activity_Resume para que de esa forma vuelva a funcionar si la aplicacin regresa del segundo plano, esto se logra a travs de StartListening y se especifica el nombre del evento, el evento Acitivity_Pause se utiliza para liberar el sensor con StopListening y pueda ser utilizado por otra aplicacin:

98

El sensor de proximidad responde a un evento llamado SensorChanged que es cuando un objeto se aproxima o aleja, en esta subrutina se muestra en un Label el valor que entrega el sensor a travs de la variable Values() y despus se compara para mostrar una representacin en un ProgressBar, el cdigo es el siguiente:

La aplicacin necesita probarse en el dispositivo real ya que en el emulador no se cuenta con un sensor de proximidad. Reto: Hacer que el dispositivo vibre al acercarse un objeto.

MAGNETOMETER Descripcin de la aplicacin: Mide la intensidad de campo magntico Interfaz de usuario: 1 ProgressBar, 1 Label Hardware: Dispositivo Android, algn objeto metlico o inductivo Nombre del Proyecto: MAGNETOMETER Package Name: ejercicio16.android Application Label: Ejercicio 16 El Sensor magntico es parte del hardware del telfono utilizado como brjula electrnica, orientacin, detector de metales, etc., la gran mayora de los dispositivos Android implementan este sensor, mide la intensidad de campo magntico en los tres ejes X,Y,Z, la librera para usar este sensor es Phone como en el ejemplo anterior. El Layout deber quedar como se muestra a continuacin:

99

Se necesita declarar un objeto tipo PhoneSensors en el rea Sub Globals con el nombre Magnetometer, y tambin 3 variables tipo Float para guardar las lecturas del sensor, el cdigo deber quedar de la siguiente manera:

El siguiente paso es inicializar el objeto con el tipo de sensor, esto se hace a travs de una constante del propio objeto llamado TYPE_MAGNETIC_FIELD. El cdigo correspondiente se muestra a continuacin:

100

Para hacer que el sensor comience a funcionar automticamente se utiliza el evento Activity_Resume para que de esa forma vuelva a funcionar si la aplicacin regresa del segundo plano, esto se logra a travs de StartListening y se especifica el nombre del evento, el evento Acitivity_Pause se utiliza para liberar el sensor con StopListening y pueda ser utilizado por otra aplicacin:

El sensor magntico responde a un evento llamado SensorChanged que es cuando cambia el valor del campo magntico en cualquiera de los ejes, en esta subrutina los valores que entrega el sensor se guardar en sus respectivas variables, a una cuarta variable se le asigna el total del valor del campo magntico haciendo una operacin matemtica (raz cuadrada), se muestra el resultado en un Label y en un ProgressBar, el cdigo es el siguiente:

La aplicacin necesita probarse en el dispositivo real ya que en el emulador no se cuenta con un sensor magntico. Reto: Hacer una aplicacin que detecte metal.

101

ADVANCED CAMERA Descripcin de la aplicacin: Captura una foto Interfaz de usuario: 1 Panel, 1 ImageView, 1 Button Hardware: Dispositivo Android Nombre del Proyecto: ADVANCED CAMERA Package Name: ejercicio17.android Application Label: Ejercicio 17 La cmara es un dispositivo muy importante en robtica con ella se pueden hacer aplicaciones por ejemplo para robots exploradores a un bajo costo y fcil implementacin, para usarla en basic4android se utilizara el propsito bsico que es capturar imgenes y guardarlas, la librera para usar el hardware se llama ADVANCED CAMARA, esta librera de terceros tiene ms funciones que la librera original de Basic4android El Layout deber quedar como se muestra a continuacin:

Se necesita declarar un objeto tipo AdvancedCamara en el rea Sub Globals con el nombre Cmara, el cdigo deber quedar de la siguiente manera:

102

El siguiente paso es inicializar el objeto especificando un panel y el nombre de un evento, el parmetro ms importante es el medio que se usa para mostrar el preview de la cmara y siempre ser un panel. El cdigo correspondiente se muestra a continuacin:

Para hacer que el sensor comience a funcionar automticamente se utiliza el evento Ready de la cmara y a travs de Success se verifica si la inicializacin fue exitosa, se establece la orientacin de la cmara en retrato por medio de la propiedad OriPortrait y por ltimo se pone en funcionamiento a travs de StarPreview. El evento Acitivity_Pause se utiliza para liberar el sensor con Release para que pueda ser utilizado por otra aplicacin, pero antes se detiene el preview con StopPreview, el cdigo queda de la siguiente manera:

Para tomar una fotografa se construye una subrutina debe llamarse siempre PictureTaken ya que actuara como un evento de la cmara que bsicamente lo que hace es abrir un medio para escribir en memoria un archivo, por lo pronto el lector no le debe prestar mucha importancia a entender las instrucciones con respecto a la variable Out, despus de la captura la imagen se muestra en un ImageView, el cdigo es el siguiente:

103

En Android existen 5 directorios para trabajar con archivos: File.DirAssets: Se trata de archivos distribuidos con la aplicacin en el empaquetado APK, para incluir archivos con la aplicacin se utiliza la pestaa Files y con el boton Add Files como se muestra en la imagen

File.DirInternal / File.DirInternalCache: Estas dos carpetas se almacenan en la memoria principal y son privadas para la aplicacin, ninguna otra aplicacin puede accesar a estos archivos.

File.DirRootExternal: el directorio raz del almacenamiento externo (memoria SD) File.DirDefaultExternal: La carpeta predeterminada para una aplicacin en almacenamiento externo. Otras aplicaciones pueden acceder a la carpeta mediante la ruta: [dispositivo externo] / Android / data / [nombre del paquete] / files / En el ejemplo se usa el directorio File.DirRootExternal para guardar la imagen. Para mostrar la captura se utiliza el ImageView1 y por medio de la propiedad Bitmap se carga la imagen con ayuda de la funcin LoadBitmap, esta funcin requiere dos parmetros uno es el directorio y el otro el nombre completo del archivo.

104

Por ultimo con un Button se llama a la subrutina para tomar capturar la fotografa con TakePicture como se muestra en el cdigo:

Al correr la aplicacin con el emulador el resultado es el siguiente:

Reto: Agregar la funcin de tomar foto con cuenta regresiva.

ABZXING Descripcin de la aplicacin: Leer cdigos de barra Interfaz de usuario: 1 Button Hardware: Dispositivo Android, cdigo de barras o QR Nombre del Proyecto: ADVANCED CAMERA

105

Package Name: ejercicio18.android Application Label: Ejercicio 18 La funcin de tomar fotos con la cmara no es suficiente para implementarse en proyectos de robtica, pero reconocer objetos requiere tambin de conocimientos ms avanzados, la librera ABZXING proporciona la funcin de escanear cdigos de barras de una manera sencilla a travs del enlace con la aplicacin BarcodeScanner, se necesita tener instalada esta aplicacin que se proporciona en la carpeta APK del CD e incluir la librera ABZXING en el proyecto El Layout deber quedar como se muestra a continuacin:

Se necesita declarar un objeto tipo ABZXING en el rea Sub Globals con el nombre Escner, el cdigo deber quedar de la siguiente manera:

El comienzo del escaneo es controlado por el Button1 con la propiedad ABGetBarCode y se especifica el evento y el tipo de cdigo a leer, en este caso cdigos de barras de productos, el cdigo es el siguiente:

106

El ABZXING responde al evento BarCodeFound que es cuando ha terminado de escanear, y el cdigo decodificado se obtiene a travs de la variable Barcode y se muestra con un cuadro de dialogo (MSGBOX), el cdigo es el siguiente:

Es necesario correr la aplicacin con un dispositivo real. Reto: Modificar la aplicacin para escanear cdigos QR.

ACELEROMETER Descripcin de la aplicacin: Mide la aceleracin en los ejes X, Y, Z Interfaz de usuario: 3 Label Hardware: Dispositivo Android Nombre del Proyecto: ACELEROMETER Package Name: ejercicio19.android Application Label: Ejercicio 19 El acelermetro es un sensor que est en todos los dispositivos Android y provee una mayor experiencia multimedia en las aplicaciones, entrega el valor de la aceleracin en los tres ejes X, Y, Z, la librera para usar este sensor es Phone como en el ejemplo anterior. El Layout deber quedar como se muestra a continuacin:

107

Se necesita declarar un objeto tipo PhoneAccelerometer en el rea Sub Globals con el nombre Acelermetro, el cdigo deber quedar de la siguiente manera:

Para hacer que el sensor comience a funcionar automticamente se utiliza el evento Activity_Resume para que de esa forma vuelva a funcionar si la aplicacin regresa del segundo plano, esto se logra a travs de StartListening y se especifica el nombre del evento, el evento Acitivity_Pause se utiliza para liberar el sensor con StopListening y pueda ser utilizado por otra aplicacin:

108

El acelermetro responde a un evento llamado AccelerometerChanged que es cuando cambia el valor de la aceleracin en cualquiera de los ejes, en esta subrutina los valores que entrega el sensor se muestran en un Label para cada una de las variables, el operador & concatena el texto fijo y el valor de la variable, el cdigo queda de la siguiente forma:

La aplicacin necesita probarse en el dispositivo real ya que en el emulador no se cuenta con un acelermetro. Reto: Detectar inclinacin los ejes X, Y (usar los valores 4 y -4 para comparar).

TABHOST Descripcin de la aplicacin: Carga 3 Layout utilizando un View TABHOST Interfaz de usuario: TabHost Hardware: Dispositivo Android Nombre del Proyecto: ACELEROMETER Package Name: ejercicio20.android Application Label: Ejercicio 20

El TabHost es un view til para cuando la interfaz de usuario no alcanza en la pantalla, para esto se requiere un Layout por cada pestaa del View, No se necesita ninguna librera esta ya que esta implementado en Core Primero se necesita disear un layout con el control TabHost, el diseo debe como se muestra a continuacin

109

Despus es necesario crear 3 Layout adicionales ya que en el ejemplo se usara 3 pestaas, es importante que los Views tengan diferente nombre en cada layout, despus de crear los layout debern agregarse por medio de la pestaa Files de Basic4android, Los layout se muestran a continuacin:

Y los layout debern aparecer agregados al proyecto como se muestra en la siguiente imagen:

110

Si al momento de abrir el cdigo fuente el programa indica que no se encuentra algn archivo como por ejemplo un layout, se deber ubicar el archivo por este medio. Esto sucede cuando hay un cambio de lugar de la carpeta donde se guard el cdigo, todos los layout utilizados en esta gua se ubican en la carpeta APLICACIONES ANDROID->FILES del CD. La construccin del TabHost se lleva a cabo en el evento Activity_Create, para ello se va aadiendo cada pestaa por medio de AddTab y se define el titulo y el layout, el cdigo queda de la siguiente manera:

El resultado es el siguiente:

111

Reto: Integrar la aplicacin 3 aplicaciones de las anteriores utilizando un TabHost

NOTIFICATION Descripcin de la aplicacin: Muestra una notificacin en la barra de estado al iniciar la aplicacin Interfaz de usuario: Sin interfaz de usuario Hardware: Dispositivo Android Nombre del Proyecto: NOTIFICATION Package Name: ejercicio21.android Application Label: Ejercicio21

Las notificaciones en la barra de estado son una caracterstica muy peculiar de Android, por este medio un proceso notifica al usuario al recibir un nuevo correo, mensaje, programa en ejecucin, etc. Tambin establecen la interaccin del usuario con los servicios, esta funcin esta implementada en el Core as que no es necesario alguna librera extra. Lo primero es declarar un Objeto tipo Notificatin con el nombre Notificacin Despus se construye la notificacin en el evento Activity_Create, se inicializa solo con Initialize, despus se indica el icono que aparecer en la barra de notificaciones en este caso al poner iconse usa el icono de la aplicacin (se puede poner otro icono con LoadBitmap), despus con SetInfo se proporciona la informacin de la notificacin especificando el ttulo, el contenido y a qu actividad llamar cuando se toque la notificacin en este caso al poner solo los smbolos indica que ira a la actividad Main , por ltimos se despliega la notificacin con Notify() (el nmero 1 se refiere a se afecta a la primera notificacin) , el cdigo queda de la siguiente manera:

112

Al correr la aplicacin aparece una notificacin en la barra de estado y se debe deslizar para ver el contenido:

Reto: Desplegar una notificacin cuando el reconocimiento de voz tenga resultados.

MEDIAPLAYER Descripcin de la aplicacin: Reproduce un archivo de audio WAV al iniciar la aplicacin Interfaz de usuario: Sin interfaz de usuario Hardware: Dispositivo Android Nombre del Proyecto: MEDIAPLAYER Package Name: ejercicio22.android Application Label: Ejercicio22 El MediaPlayer es una funcin que reproduce archivos de audio, esto le da un toque decorativo a la aplicacin por ejemplo en un robot se puede usar los sonidos de R2D2, el objeto esta implementado en el Core as que no es necesario alguna librera extra. Lo primero es declarar un Objeto tipo MediaPlayer con el nombre MP en el rea de Sub Process_Globals. Despus en el evento Activity_Create se inicializa poniendo la propiedad

113

Initialize, luego se indica el archivo a reproducir por medio de Load especificando el directorio y el nombre del archivo (previamente agregado con la pestaa Files), por ltimo se reproduce con Play, el cdigo queda de la siguiente manera:

Reto: Controlar el volumen multimedia con un SeekBar.

RTC Descripcin de la aplicacin: Obtiene la fecha y hora Interfaz de usuario: 6 Label, 1 Button Hardware: Dispositivo Android Nombre del Proyecto: RTC Package Name: ejercicio27.android Application Label: Ejercicio27 Este ejemplo utiliza la funcin de fecha y hora para implementar un reloj tipo calendario. Esta implementado en el Core por lo tanto no se necesita incluir alguna librera extra El layout deber quedar de la siguiente manera:

114

No se necesita declarar algn objeto especfico para hora y fecha, pero si se necesita una variable para guardar el tiempo actual, que debe ser una variable Long ya que la dimensin de datos en grande, al inicio un MSGBOX muestra la fecha y hora actual en un formato por medio de la funcin DateTime.Now(), despus a travs de las dems funciones se descompone por horas, minutos, etc. , para actualizar el tiempo se utiliza el Button1, el cdigo queda de la siguiente manera:

Declaracin de variables y objetos:

Inicializacin:

115

Actualizacin con el Button1:

El resultado de la aplicacin ser el siguiente:

116

Reto: Actualizacin automtica del tiempo.

GPS Descripcin de la aplicacin: Muestra la informacin de los satlites GPS Interfaz de usuario: 4 Label Hardware: Dispositivo Android Nombre del Proyecto: GPS Package Name: ejercicio26.android Application Label: Ejercicio26 El sensor GPS indica la posicin actual y el estado de los satlites a los que est conectado el dispositivo Android. La funcionalidad para poder acceder al GPS es por medio de la librera GPS. Esta funcin requiere una conexin de dato activa y habilitar el uso de satlites GPS en el men del dispositivo Ajustes->Ubicacin Y Seguridad->Usar Satlites GPS. El layout deber quedar como se muestra en la imagen

El objeto GPS debe de ser declarado en Sub Process_Globals, para no declararlo cada vez que necesite utilizarlizarse. El cdigo queda de la siguiente manera:

117

El segundo paso es iniciar el objeto GPS, utilizando el parmetro Initialize, el cdigo queda de la siguiente manera:

En Activity_Resume se verifica si el GPS est activado por medio de GPSEnabled, si no lo esta se enva un mensaje al usuario para activarlo, en caso de estar activado se pone en funcionamiento por medio de Start (), los dos ceros se refieren a el tiempo mnimo y distancia mnima a la que sea desea leer los cambios, generndose un evento cuando uno de los dos ha cambiado de valor, en este caso trabajara a la mxima frecuencia y resolucin, en el evento Activity_Pause se detiene el GPS con Stop el cdigo queda de la siguiente manera:

El GPS responde a tres eventos LocationChanged, UserEnabled y GpsStatus. En este ejemplo se utiliza el primero y el ultimo.

118

En el evento LocationChanged se obtiene la informacin de la posicin (latitud, longitud y velocidad) por medio de las propiedades ConverToMinutes() y Speed, Despus se muestra el resultado en los Label1, Label2 y Label1 respectivamente. En el evento GpsStatus se obtiene por medio de un ciclo For que va de 0 hasta la cantidad de satlites conectados, en la Label4 se muestra esta informacin. Es necesario probar la aplicacin en el dispositivo real. Reto: Agregar cada satlite encontrado en un View Spinner y mostrar su informacin en un MSGBOX al tocar el tem.

119

En este captulo se construir el hardware necesario para establecer interfaces con dispositivos Android, se considera que el lector tiene experiencia en la construccin de circuitos impresos, se proporciona la lista de materiales, el diagrama esquemtico y el PCB, el proyecto se encuentra en la carpeta PCB del CD.

PIC USB
La tarjeta PIC USB est diseada para la implementacin rpida de prototipos ya que su firmware puede ser actualizado desde una conexin USB y la distribucin de los componentes electrnicos facilita la conexin de hardware extra, est basada en el microcontrolador PIC18F2550 a continuacin se describen las partes ms importantes:

ENTRADA USB conecta la tarjeta a travs del USB a la computadora para actualizar el firmware ALIMENTACION EXTERNA entrada de pilas o fuente de alimentacin. Rango de 6 a 30 V.

120

SELECTOR DE ALIMENTACION a travs de un jumper se selecciona si la tarjeta se alimenta desde el USB o a travs de la alimentacin externa. PUERTOS I/O 0-9 entradas y salidas correspondientes al PORTC (8 y 9) con funcin especial de UART y al PORTB (0-7) con funciones especiales de bus I2C e Interrupciones. PUERTOS I/O 10-12 entradas y salidas correspondientes al PORTC con funcin especial de salidas PWM. PUERTOS I/O 13-17 entradas y salidas correspondientes al PORTA con funcin especial de entradas analgicas. BOOT botn para entrar en modo boot. LED POWER indicador de alimentacin. LED RUN indicador de modo boot. PUERTO ICSP conector para actualizacin de firmware por medio de un programador de microcontroladores La lista de materiales necesarios para su construccin es la siguiente: 1 Microcontrolador PIC PIC18F2550 1 Cristal de cuarzo de 20 MHZ 1 Regulador de 5v LM7805 2 LED de 3 mm 1 Push Button 2 Capacitores electrolticos de 47 uf 1 Capacitor cermico de 0.1 uf 1 Capacitor cermico de 470 nf 2 Resistor de 330 ohm 1 Resistor de 10 k 1 Base para CI de 28 Pines 1 Conector USB tipo B hembra 1 Terminal de 2 pines 1 Tira de pines macho 1 Tira de pines Hembra 1 Jumper 1 Placa fenlica de una cara de 5x10 El diagrama esquemtico se muestra a continuacin

121

122

Los componentes deben quedar montados segn la siguiente imagen:

El PCB es el siguiente:

La tarjeta terminada deber quedar de la siguiente forma:

123

El siguiente paso es programar el microcontrolador a travs de un programador externo a travs del puerto ICSP el archivo a descargar al microcontrolador se llama Bootloader.hex se encuentra en la carpeta HEX del CD, a continuacin se detalla el orden de los pines en la tarjeta.

Para verificar el funcionamiento de la tarjeta primero se debe energizar, el LED POWER deber encender, despus conectar el cable USB y presionar el botn BOOT, la computadora deber reconocer el dispositivo y en breve deber parpadear el LED RUN.

MODULO BLUETOOTH
Esta modulo facilita la conexin con la tarjeta PIC USB a travs de una conexin UART, est basado en el dispositivo HC-06 que acta como un puerto serie para establecer la conexin con un dispositivo Android:

BLUETOOTH HC-06 dispositivo bluetooth modelo HC-06 LED STATUS indica el estado de la conexin. RESISTORES adaptan los niveles de voltaje para compatibilidad 5V.

124

REGULADOR 3.3V proporciona alimentacin al mdulo bluetooth

La lista de materiales necesarios para su construccin es la siguiente: 1 Bluetooth HC-06 1 Regulador 3.3 V 1 LED 1 Resistor 330 ohm 1 Resistor 10 k 1 Resistor 15 K 4 Pines 1 Placa fenlica una cara 5x5 El diagrama esquemtico se muestra a continuacin

Los componentes en rojo van en la parte sin cobre de la placa y los componentes en gris donde estn las pistas ya que son de montaje superficia , deben quedar montados segn la siguiente imagen:

125

En caso de utilizar un regulador diferente los pines GND deben quedar unidos y el orden de las conexiones se muestra en la imagen:

El PCB es el siguiente:

La tarjeta terminada deber quedar de la siguiente forma:

Para verificar el funcionamiento del mdulo bluetooth se debe alimentar por medio de los pines VDD Y GND con 5v, esto se puede lograr conectndolo a la tarjeta PIC USB, a continuacin se detalla la interfaz UART del mdulo y su conexin con la tarjeta:

126

Y la conexin con la tarjeta PIC USB debe quedar de la siguiente forma:

La siguiente figura muestra el modulo conectado a la tarjeta:

El ltimo paso es encontrar el modulo Bluetooth con el dispositivo Android aparecer con el nombre Linvor

127

IOIO BOARD
La tarjeta IOIO DE Sparkfun es un hardware dedicado a la interfaz con dispositivos Android utilizando la depuracin, acta como un HOST USB, para mejorar la alimentacin de la tarjeta se ha diseado un adaptador

ENTRADA USB proporciona alimentacin a la tarjeta IOIO ALIMENTACION EXTERNA entrada de pilas o fuente de alimentacin. Rango de 5 a 30 V. SELECTOR DE ALIMENTACION a travs de un jumper se selecciona si la tarjeta se alimenta desde el USB o a travs de la alimentacin externa. PUERTOS I/O 1-18 entradas y salidas dela tarjeta IOIO. PUERTOS I/O 33-48 entradas y salidas dela tarjeta IOIO. POWER switch on-off de alimentacin. ENTRADA PARA CARGA proporciona energa a las bateras.

128

La lista de materiales necesarios para su construccin es la siguiente: 1 tarjeta IOIO 3 pines macho 4 Tiras de pines hembra 1 Jack o bornera para PCB 1 Terminal de 2 pines 1 Conector USB tipo B 1 Microswitch 1 Jumper 1 Placa fenlica de una cara de 5x10

El diagrama esquemtico se muestra a continuacin

Los componentes deben quedar montados segn la siguiente imagen:

129

El PCB es el siguiente:

Para la base del IOIO se ha usado pines hembra dobles para mayor estabilidad, pero basta con pines sencillos, el rea con driles (huecos) se puede usar para una interfaz UART e I2C los grupos de 4 son para los pines y los dems para colocar 2 resistencias de 10k, la tarjeta terminada deber quedar de la siguiente forma:

Para comprobar el funcionamiento se debe energizar la tarjeta (se encender el LED rojo ) y conectar el dispositivo Android al IOIO, deber estar activada la depuracin, la tarjeta ser reconocida por el dispositivo y el LED amarillo del IOIO dar un destello.

130

En este captulo se desarrollaran aplicaciones para conectar hardware externo a un dispositivo Android para controlar cargas o para leer el estado de algn sensor, es recomendable contar con un protoboard y algunos componentes electrnicos como LEDs, Potencimetros, Servomotores, para hacer ms interactivo el aprendizaje, se utilizara el software PICC para los programas de la tarjeta PIC USB.

INTERFAZ BLUETOOTH
Como primer ejemplo se desarrollara la aplicacin ms sencilla que consiste en construir un esqueleto de aplicacin con las funciones bsicas como conectarse a un dispositivo y notificar, esto servir de base para desarrollar futuras aplicaciones para una interfaz bluetooth. Las aplicaciones listas para instalar y probar se encuentran en la carpeta APK del CD. El cdigo fuente y el proyecto de las aplicaciones se encuentran en la carpeta APLICACIONES ANDROID del CD El cdigo fuente para la tarjeta PIC USB se encuentra en la carpeta APLICACIONES PIC del CD, tambin en este apartado se explica el algoritmo para establecer la interfaz.

BLUETOOTH Descripcin de la aplicacin: Realiza funciones bsicas para una interfaz bluetooth Interfaz de usuario: Sin Layout Hardware: Dispositivo Android, Modulo Bluetooth, Tarjeta PIC USB Nombre del Proyecto: BLUETOOTH Package Name: ejercicio23.android Application Label: Ejercicio23

131

Para utilizar el Bluetooth en Basic4android se debe incluir la librera Serial al proyecto ya que este es el perfil ms sencillo a utilizar. Para una aplicacin bluetooth se debe conocer ciertos puntos como el estado de la conexin, la lista de dispositivos vinculados, el dispositivo con el que se quiere trabajar, etc. El primer paso es declarar un objeto tipo Serial en el rea de Process_Globals para poder utilizar el bluetooth.

El siguiente paso es inicializar el bluetooth creando un evento a travs de la propiedad Initialize, el cdigo se muestra a continuacin:

El primer punto a considerar es monitorear el estado del bluetooth, para avisarle al usuario que lo active en caso de no estarlo ya que no es posible usarlo si est activado, y si est activado tiene que ponerse a escuchar las conexiones entrantes para que otros dispositivos puedan hacer peticiones de conexin. El estado se obtiene a travs de la propiedad IsEnabled y para escuchar conexiones es a travs de la propiedad Listen, el momento efectivo para hacerlo es en el evento Activity_Resume, el cdigo queda de la siguiente manera:

132

Es posible correr la aplicacin y verificar el funcionamiento, de otra forma el siguiente punto a considerar es obtener la lista de dispositivos apareados o vinculados, este resulta ser el paso ms complejo en todo el proceso. El momento ms adecuado para obtener la lista es cuando el usuario intenta conectarse a un dispositivo bluetooth como el mdulo de la tarjeta PIC USB, como no se dise ningn Layout el medio para iniciar el proceso de conexin ser un tem de men, esto resulta cmodo ya que solo ocupara la pantalla cuando sea necesario, por lo tanto se comenzara por construir 2 tem de men para controlar la conexin y desconexin. El cdigo debe quedar de la siguiente forma:

Y sus respectivos eventos quedan de la siguiente manera:

Para obtener la lista de dispositivos apareados se necesita una lista y un mapa que bsicamente son arreglos de objetos que almacenan cadenas de caracteres de informacin, como por ejemplo en el caso del bluetooth se almacena el nombre de un dispositivo y su direccin MAC, ya que pueden ser varios dispositivos la bsqueda se realiza con un ciclo For, las variables se deben definir como se muestra a continuacin:

133

Primero se debe guardar en un mapa la lista de dispositivos apareados mediante GetpairedDevices Despus se inicializa la lista, luego se copia a la lista todo el contenido del mapa, el tamao del mapa se obtiene con Size, y con GetKeyAt () se obtiene cada elemento del mapa.

Este proceso se debe implementar tal y como se muestra en el cdigo de ejemplo, no es necesario tratar de entender que es lo que hace cada instruccin si no el algoritmo. El lector tal vez se preguntara por que se usa un mapa y no se almacena directamente en una lista, la razn es porque la propiedad GetPairedDevices retorna un mapa, el cdigo debe quedar implementado como se muestra a continuacin:

Ya que se ha obtenido la lista de dispositivos apareados el siguiente paso es desplegar la lista para que el usuario seleccione un dispositivo para conectarse. Esto se logra con el comando InputList que necesita como parmetros la lista que debe mostrar (esta es otra razn por lo cual se usa una lista), el ttulo, y el dispositivo seleccionado por default (-1 indica que no se selecciona ninguno).

InputList(Lista, "Seleccionar Dispositivo", -1)

134

El cdigo queda de la siguiente manera:

Hasta el momento al correr la aplicacin el resultado ser el siguiente:

Se puede apreciar que un InputList es un conjunto de RadioButtons y la propiedad es que cuando estn agrupados solo uno puede seleccionarse, esto es eficaz para seleccionar el dispositivo para conectarse (ah el motivo de usar lista). El siguiente paso es realizar la conexin con el dispositivo seleccionado, en el cdigo mostrado anteriormente el InputList se le asign a la variable Dispositivo_Selecionado, esta variable debe ser declarada como tipo int, antes de dar la orden conectar se debe saber si se seleccion algn dispositivo de la lista, esto se logra por medio de DialogResponse.Cancel . Por ltimo se da la orden conectar por medio de Connect, que resulta ser una instruccin ms compleja pero lo que

135

Hace es obtener la direccin MAC del dispositivo seleccionado para conectarse. El cdigo modificado se muestra a continuacin:

El penltimo paso es monitorear el estado de la conexin con el evento Connected del bluetooth que por medio de la variable Success indica si la operacin fue exitosa o hubo algn problema, Ya que esta variable es local no se podr usar en otra parte del cdigo para preguntar el estado de la conexin, para ello se requiere usar una variable auxiliar de tipo Boolean, el cdigo correspondiente se muestra en la siguiente imagen:

En el evento Connected se pregunta si la conexin fue exitosa, se establece el valor de la variable Conectado y por medio de un mensaje Toast se notifica al usuario.

136

El ltimo paso es finalizar la conexin por medio de la propiedad Disconnect del bluetooth, el tem de men (desconectar) y el cierre de la aplicacin controlan la desconexin, solo es necesario desconectarse cuando se encuentra conectado a un dispositivo y para ello se utiliza la variable Conectado, el cdigo debe quedar de la siguiente manera:

Con esto se ha concluido el desarrollo de la aplicacin base para bluetooth, el siguiente paso es preparar la interfaz. El resultado al conectarse con algn dispositivo ser el siguiente:

137

LA INTERFAZ
El modulo bluetooth viene con las siguientes configuraciones de fbrica: BaudRate: 9600 Paridad: N (sin paridad) Bits de datos: 8 Bits de parada: 1 ID: linvor Password: 1234 Al conectar el modulo bluetooth a la tarjeta PIC USB y energizarlo el LED comenzara a parpadear y al realizar la bsqueda con el dispositivo Android aparecer como se muestra en la siguiente imagen

138

Al seleccionar el dispositivo de nombre linvor aparecer un dialogo pidiendo la contrasea, introducir 1234:

El dispositivo aparecer con la leyenda vinculado.Deconectado, como se muestra en la imagen de abajo:

Con esto queda todo listo para continuar con el siguiente ejemplo.

BLUETOOTH TX Descripcin de la aplicacin: Controla un LED por medio de bluetooth Interfaz de usuario: 1 Label, 2 Button

139

Hardware: Dispositivo Android, Modulo Bluetooth, Tarjeta PIC USB, LED Nombre del Proyecto: BLUETOOTH TX Package Name: ejercicio24.android Application Label: Ejercicio24

Utilizando el ejemplo anterior se agregara la funcin de enviar datos a travs de bluetooth hacia el modulo conectado a la tarjeta PICUSB, el objetivo es prender y apagar un LED conectado al pin 0. El algoritmo es sencillo, consiste en enviar un carcter 1 para encender y 2 para apagar. El layout debe quedar como se muestra en la siguiente imagen:

El medio necesario para el envi de caracteres se conoce como TextWriter, este objeto se debe declarar en el rea Sub Globals, el cdigo queda como se muestra a continuacin:

140

El siguiente paso es inicializar el TextWriter y el momento preciso es cuando se ha establecido la conexin, se debe inicializar como un medio de salida de datos, para ello se usa la propiedad OutputStream del bluetooth, el cdigo debe quedar de la siguiente manera:

Para enviar caracteres a traves del TextWriter se utiliza la propiedad Write() especificando los caracteres a enviar, la funcion Flush limpia el TexWriter, se utiliza la variable conectado ya que si se envian datos sin una conexin activa Android arrojara un error.Por ultimo el estado del LED se indica en un Label. El codigo queda de la siguiente manera:

141

La tarjeta PIC USB debe tener conectado un LED como se muestra en la imagen

El cdigo fuente se encuentra en la carpeta APLICACIONES PIC del CD, para editarlo abrir el archivo BLUETOOTH_RX.c el cdigo est desarrollado en PIC C de CCS. El archivo listo para su descarga a la tarjeta se encuentra en la carpeta HEX del CD, conectar la tarjeta PIC USB mientras se presiona el botn BOOT hasta que el LED RUN comience a parpadear, despus abrir el programa PICUSB LOADER que se encuentra en la carpeta TOOLS del CD, el resultado ser una ventana como esta:

Device attached indica que la tarjeta esta lista, para descargar el archivo dar clic en el botn Importar y buscar el archivo BLUETOOTH_RX.hex, despus dar clic al botn Programar, el programa indicara el progreso como se muestra en la siguiente imagen:

142

El ltimo paso es dar clic en el botn Correr, el LED dejara de parpadear y el programa comenzara a funcionar.

BLUETOOTH RX Descripcin de la aplicacin: Muestra el carcter recibido por medio de bluetooth Interfaz de usuario: 1 Label Hardware: Dispositivo Android, Modulo Bluetooth, Tarjeta PIC USB Nombre del Proyecto: BLUETOOTH RX Package Name: ejercicio25.android Application Label: Ejercicio 25 Utilizando el ejercicio 23 se agregara la funcin de recibir datos a travs de bluetooth enviados por el modulo conectado a la tarjeta PICUSB segn el estado del botn BOOT, el objetivo es ver en un Label el carcter recibido. El layout debe quedar como se muestra en la siguiente imagen:

143

El medio necesario para la recepcin de caracteres se conoce como TextReader, este objeto se debe declarar en el rea Sub Globals. No existe un evento que responda cuando se ha recibido un carcter, por lo tanto es necesario preguntar peridicamente con un Timer, el cdigo queda como se muestra a continuacin:

El siguiente paso es inicializar el TextReader y el momento preciso es cuando se ha establecido la conexin tal como se hizo con el envo de caracteres, se debe inicializar como un medio de entrada de datos, para ello se usa la propiedad InputStream del bluetooth, en esta parte el Timer se habilita pero debe inicializarse para interrumpir cada 10 ms (no se muestra en la imagen puesto que se explic anteriormente). El cdigo debe quedar de la siguiente manera:

Para recibir caracteres a traves del TextReader se utiliza el evento del Timer y para leer los datos es necesario que se cumplan 2 cosas: que exista una conexin activa y el TextReader este listo, esto se verifica por medio de la variable Conectado y la propiedad Ready. Para mostrar los datos en el Label se utiliza la propiedad ReadLine, es importante que al momento de enviar el carcter

144

Con el microcontrolador se use el terminador de linea \n . El codigo queda de la siguiente manera:

El ltimo paso es deshabilitar el Timer como se hizo al finalizar la conexin bluetooth, cuando se cierra la aplicacin y cuando se desconecta, el cdigo queda de la siguiente manera:

El cdigo fuente se encuentra en la carpeta APLICACIONES PIC del CD, para editarlo abrir el archivo BLUETOOTH_TX.c el cdigo est desarrollado en PIC C de CCS. Cargar el archivo BLUETOOTH_RX.hex a la tarjeta.

Reto: combinar los 2 ejercicios anteriores en una sola aplicacin, El cdigo fuente para interfaz se encuentra en la carpeta APLICACIONES PIC del CD, para editarlo abrir el archivo BLUETOOTH_RXTX.c el cdigo est desarrollado en PIC C de CCS, cargar el archivo BLUETOOTH_RXTX.hex a la tarjeta.

145

INTERFAZ IOIO
Como primer ejemplo se desarrollara la aplicacin ms sencilla que consiste en construir un esqueleto de aplicacin con las funciones bsicas para utilizar la tarjeta IOIO y controlar el LED OnBoard. Las aplicaciones listas para instalar y probar se encuentran en la carpeta APK del CD. El cdigo fuente y el proyecto de las aplicaciones se encuentran en la carpeta APLICACIONES ANDROID del CD

IOIO Descripcin de la aplicacin: Controla el LED OnBoard de la tarjeta IOIO

Interfaz de usuario: 1 ToggleButton Hardware: Dispositivo Android, Modulo Bluetooth, Tarjeta IOIO, adaptador para IOIO Nombre del Proyecto: IOIO Package Name: ejercicio28.android Application Label: Ejercicio28 Para utilizar la tarjeta IOIO en Basic4android se deben incluir las libreras IOIO y IOIOlib al proyecto. El layout debe quedar como se muestra en la siguiente imagen:

146

Para una aplicacin con IOIO el primer paso es declarar un objeto tipo IOIO y un objeto tipo DigitalOutput en el rea de Sub Globals

El siguiente paso es inicializar el IOIO simplemente con la propiedad Initialize, despus esperar la conexin de la tarjeta por medio de WaitForConnect, mostrar la versin de hardware, por ultimo abrir un PIN como salida en este caso el 0 ya que el LED OnBoard se conecta a ese pin, en caso de necesitar otra salida solo se debe cambiar el nmero, el cdigo se muestra a continuacin:

Al salir de la aplicacin se debe cerrar los pines utilizados y desconectar de la tarjeta IOIO, esto se logra por medio de las propiedades Close Y Disconnect() respectivamente, el evento Activity_Pause queda de la siguiente manera:

147

Para controlar el encendido del LED se utiliza el evento CheckedChange del ToggleButton, a travs de la propiedad Write se escribe el dato de salida, el LED se activa en bajo por lo que se usa el comando Not() para invertir el estado del ToggleButton en la escritura como se muestra en la siguiente imagen:

Al ejecutar la aplicacin y conectar la tarjeta el resultado ser el siguiente:

IOIO ANALOG Descripcin de la aplicacin: Muestra la lectura de una entrada analgica Interfaz de usuario: 1 ProgressBar, 1 Label Hardware: Dispositivo Android, Modulo Bluetooth, Tarjeta IOIO, adaptador para IOIO, Potencimetro Nombre del Proyecto: IOIO ANALOG Package Name: ejercicio29.android

148

Application Label: Ejercicio29 . El layout debe quedar como se muestra en la siguiente imagen:

La diferencia con el ejercicio anterior es que se debe declarar un objeto tipo AnalogInput y al igual que en el ejemplo BLUETOOTH RX se utilizara un Timer para la lectura de datos, el cdigo queda de la siguiente manera:

El Timer se debe inicializar a 30 milisegundos y habilitar justo despus de que se conecta la tarjeta, en este caso se utiliza el pin 40 para abrir una entrada analgica en caso de necesitar otra entrada solo se debe cambiar el nmero (33-46), el cdigo se muestra a continuacin:

149

Al salir de la aplicacin se debe deshabilitar el Timer, cerrar los pines utilizados y desconectar de la tarjeta IOIO, el evento Activity_Pause queda de la siguiente manera:

Para leer la entrada analgica se utiliza el evento Tick del Timer, a travs de la propiedad Voltaje se obtiene la tensin de entrada en el pin analgico (no debe ser mayor de 3.3 v para no daar el IOIO), y este valor es asignado a un Label, por ltimo se hace un ajuste para representar el voltaje de entrada en un ProgressBar como se muestra en la siguiente imagen:

La tarjeta IOIO debe tener conectado un potencimetro como se muestra en la imagen

150

Al ejecutar la aplicacin y conectar la tarjeta el resultado ser el siguiente:

IOIO PWM OUTPUT Descripcin de la aplicacin: Controla la intensidad de un LED o posicin de un servo Interfaz de usuario: 1 SeekBar, 1 Label Hardware: Dispositivo Android, Modulo Bluetooth, Tarjeta IOIO, adaptador para IOIO, LED, Servo Nombre del Proyecto: IOIO PWM OUTPUT Package Name: ejercicio30.android Application Label: Ejercicio30

151 . El layout debe quedar como se muestra en la siguiente imagen:

La diferencia con el ejercicio anterior es que se debe declarar un objeto tipo PwmOutput, el cdigo queda de la siguiente manera:

En este ejercicio se utiliza el pin 12 para abrir una salida PWM a 1 khz en caso de necesitar otra entrada solo se debe cambiar el nmero (3-7,9-14), el cdigo se muestra a continuacin:

152

Al salir de la aplicacin se debe cerrar los pines utilizados y desconectar de la tarjeta IOIO, el evento Activity_Pause queda de la siguiente manera:

Para controlar la salida PWM se utiliza el evento ValueChanged del SeekBar, a travs de la propiedad PulseWidth se controla el ancho de pulso de la salida PWM (de 0 a 1024), y este valor es asignado a un Label, pero este proceso se debe realizar solo si la salida PWM esta lista, esto se verifica por medio de la propiedad IsInitialized como se muestra en la siguiente imagen:

La tarjeta IOIO debe tener conectado un LED como se muestra en la imagen

Tambin se puede conectar un servo como se muestra en la imagen

153

Al ejecutar la aplicacin y conectar la tarjeta el resultado ser el siguiente:

154

DESCRIPCION
DROID es un Robot-Smartphone basado en una interfaz Bluetooth con la tarjeta PIC USB, Es un medio didctico para el desarrollo de aplicaciones mviles, utiliza el telfono como accesorio o como cerebro, aprovechando la potencia de los procesadores de un telfono inteligente y sensores, es accesible, expandible, ya que aumenta la funcionalidad del robot, es econmico y de fcil construccin.

ESTRUCTURA MECNICA
El chasis est construido con PVC espumado mejor conocido como Sintra es un material liviano, resistente, termoformable, autoextinguible, no absorbe la humedad, se puede cortar, aserrar, pintar, perforar, etc., Sin embargo el lector puede utilizar otro material para construir su estructura ya que depender del tipo de motores que utilice, los motores utilizados en el robot fueron sacados de unos carritos de juguete, que tienen una relacin de 50:1. Loa motores recomendados son los motorreductores de plstico ya que las ruedas estn diseadas para estos motores. La Sintra est disponible en modo de pliegos de diferentes tamaos y colores, un cter y kola loca ser necesario para cortar las piezas y unirlas para formar la estructura. En la imagen de abajo se muestra algunos pliegos de Sintra

Los motorreductores de plstico se pueden encontrar en tiendas especializadas de robtica, al igual que las ruedas. Una buena eleccin de motorreductor es con la relacin 1:48, que

155 Proporcionar 200 rpm y un rango de alimentacin de 3 a 12 v. En la imagen de abajo se muestra un motorreductor y las ruedas de la empresa Robodacta.

Con paciencia y dedicacin se puede construir una estructura utilizando los materiales mencionados anteriormente y lograr tener montados los motores, incluso una base hecha de trovicel para colocar el Smartphone como se muestra en la siguiente imagen del robot Androidmie.

Droid es mucho ms simple debido al reciclaje de los motores y ruedas, por lo que ha quedado de la siguiente forma:

156

ELECTRONICA
La electrnica consta de tres partes una es la tarjeta PIC USB, la segunda el modulo bluetooth y la tercera el DROID SHIELD, este ltimo es el encargado de proporcionar el driver para controlar los motores, la conexin de la energa y los sensores. El proyecto se encuentra en la carpeta PCB del CD. El DROID SHIELD est diseado para albergar la tarjeta PIC USB y utiliza un chip SN75441110NE como driver de los motores, a continuacin se describen las partes ms importantes:

ENTRADA PARA PILAS terminal de 2 tornillos para alimentar el circuito CONECTOR MOTOR L terminal de 2 tornillos para conectar el motor izquierdo. CONECTOR MOTOR R terminal de 2 tornillos para conectar el motor derecho DRIVER chip SN754410NE puente H BASE PARA PIC USB tiras de pines hembra para conectar la tarjeta PIC USB CONECTOR SENSOR L 3 pines macho para conectar el sensor de proximidad izquierdo CONECTOR SENSOR R 3 pines macho para conectar el sensor de proximidad derecho SENSORES EXTRA rea para conectar hasta 3 sensores analgicos

157

La lista de materiales necesarios para su construccin es la siguiente: 1 Driver Puente H SN754410NE 1 Base para CI de 16 Pines 3 Terminal mini de 2 pines 2 Tira de 3 pines macho 1 Tira de pines Hembra 1 Placa fenlica de una cara de 5x10 El diagrama esquemtico se muestra a continuacin

158

Los componentes deben quedar montados segn la siguiente imagen:

El PCB es el siguiente:

Adicionalmente se puede dar un acabado a la placa con los Labels

La tarjeta terminada deber quedar de la siguiente forma:

159

Droid posee 2 sensores de proximidad GP2Y0A21YK0F de la marca Sharp que miden la distancia a la que se encuentra un objeto en un rango de 10 a 80 cm, estos sensores entregan una tensin analgica dependiendo de la distancia, funcionan con un voltaje de alimentacin de 4.5 a 5.5 v y un consumo tpico de 30 mA, en la siguiente figura se muestra el sensor y las conexiones necesarias:

Para conectarlos es necesario un cable especial llamado JST de 3 vas, el sensor y cable se pueden encontrar en tiendas como Robodacta y Pololu.

Los sensores deben quedar conectados como se muestra en la siguiente figura:

160

Los sensores cuentan con unos orificios en los costados para atornillarse, en el robot han quedado de la siguiente manera: .

Para la conexin de los motores es necesario soldar entre los terminales de cada motor un capacitor de 0.1 uf para reducir el ruido elctrico que generan, y la conexin en el DROID SHIELD debe quedar como se muestra en la siguiente imagen:

161

El robot utiliza 6 pilas recargables AAA de Ni-Cd conectadas en serie para proporcionar un voltaje 7.2 V , y una corriente de 1 A, se puede usar cualquier otra pila con la restriccin en corriente de hasta 2 A y un voltaje de 12 V como mximo, en la siguiente imagen se muestra como se deben conectar:

El robot con toda la electrnica montada queda como se muestra en la siguiente imagen:

162

Para verificar el funcionamiento de los motores cargar el archivo TEST_MOTORES.HEX contenido en la carpeta HEX del CD, el robot realizara la siguiente secuencia: Adelante-Atrs-IzquierdaDerecha-Detenido. Para verificar el funcionamiento de los sensores cargar el archivo TEST_SENSORES.HEX contenido en la carpeta HEX del CD, el LED RUN de la tarjeta PIC USB deber encender al acercar un objeto.

SOFTWARE
El software del robot consta de dos partes: uno es el programa del Microcontrolador y el otro la aplicacin para el dispositivo Android Una vez terminado el montaje se debe cargar el archivo DROID CONTROLLER.HEX contenido en la carpeta HEX del CD, el LED RUN de la tarjeta PIC USB deber parpadear lentamente. El cdigo fuente del programa del Microcontrolador es el archivo DROID CONTROLLER.c contenido en la carpeta APLICACIONES PIC del CD, est desarrollado en PIC C de CCS. El programa del Microcontrolador se encarga de controlar la velocidad y giro de los motores, procesar los datos del bluetooth y leer los sensores. El protocolo de comunicacin es simple: para que el robot se mueva en una direccin la aplicacin del dispositivo Android debe enviar un carcter numrico del 1 al 8, y el estado de los sensores se enva simplemente con el valor. Tambin se debe instalar en el dispositivo Android el archivo DROID.APK contenido en la carpeta APK del CD, El cdigo fuente es el archivo DROID contenido en la carpeta APLICACIONES ANDROID del CD, esta aplicacin se proporciona como una base para implementacin de proyectos en robtica con dispositivos Android. Al iniciar la aplicacin aparecer una pantalla como la siguiente:

163

Despus de dar clic al botn aceptar aparecer una pantalla que simula los ojos del robot y sus principales funciones se describen a continuacin:

BOTON PLAY inicia el funcionamiento del robot BOTON SALIR libera el hardware y cierra la aplicacin BOTON CONECTAR selecciona el dispositivo bluetooth y el modo de conexin ESTADO muestra las acciones realizadas por el robot NIVEL DE SENSOR 1 muestra una representacin de la lectura del sensor de proximidad izquierdo NIVEL DE SENSOR 2 muestra una representacin de la lectura del sensor de proximidad derecho PREVIEW DE LA CAMARA muestra la vista previa de la cmara OJOS DEL ROBOT simula el estado de nimo del robot

El primer paso para usar la aplicacin es conectarse a un dispositivo bluetooth tocando el botn CONECTAR, aparecer un cuadro de dialogo mostrando los diferentes modos de conexin como se muestra en la siguiente imagen:

164

Existen 2 modos de conexin: CONTROLLER o REMOTE, el primero es obligatorio ya que se conecta a el modulo bluetooth del controlador del robot, el modo REMOTE sirve para conectarse a otro dispositivo Android, por ejemplo para controlar el robot desde una Tablet, al tocar el botn CONTROLLER aparecer la lista de dispositivos apareados:

Se deber seleccionar el dispositivo correspondiente al mdulo bluetooth en este caso linvor, cuando se establezca la conexin aparecern 2 diferentes pantallas, una para conexin exitosa y otra para conexin errnea:

165

El siguiente paso es seleccionar un modo de funcionamiento, presionando el botn men aparecer un tem para seleccionar el modo:

Existen 3 modos de funcionamiento: BRAIN, REMOTE C y OTHER. En el modo BRAIN el dispositivo Android acta como cerebro del robot , en este modo se muestra un preview de la cmara y la funcin principal del cdigo es que el robot pueda ser controlado desde otro dispositivo; en el modo REMOTE C el dispositivo Android acta como un control remoto, es decir se retira de la base del robot para controlar por medio del acelermetro los movimientos; El modo OTHER est diseado para alguna otra funcin, el usuario puede modificar el cdigo y agregar sus funciones, por ejemplo controlar el robot por voz, detectar metales, etc. Sin embargo la funcin demo implementada es evadir obstculos mediante los sensores de proximidad. En todos los modos el robot reproduce sonidos de R2D2, en la siguiente imagen se muestran los 3 modos.

166

Algunas prcticas propuestas son las siguientes: 1. 2. 3. 4. 5. 6. 7. Controlar los movimientos del robot a travs del reconocimiento de voz Buscar metales por medio del magnetmetro Evadir obstculos por medio del sensor de proximidad del telfono Clasificar objetos por medio de cdigos QR Mostrar la ubicacin del Robot en google usando el GPS. Formar una red de 2 robots para implementar una coreografa de baile simple. Agregar sensores al robot para implementar el programa sigue lneas en el dispositivo Android 8. Agregar sensores al robot para implementar el programa luchador de sumo en el dispositivo 9. Disear un controlador con la tarjeta IOIO y la aplicacin del Robot 10. Reconocimiento de objetos a travs de la cmara

167

En el bloques anteriores se desarrollaron aplicaciones bsicas y con libreras para familiarizarse con el entorno desarrollo y las funciones de Android, en este apartado se realizaran aplicaciones para implementar tcnicas y algoritmos en la recepcin y envi de datos a travs de bluetooth y configuraciones avanzadas del dispositivo. Al igual que en el captulo anterior las aplicaciones listas para instalar y probar se encuentran en la carpeta APK del CD, tambin el cdigo fuente y el proyecto de las aplicaciones se encuentran en la carpeta APLICACIONES ANDROID del CD

SEEKBAR Y PWM Descripcin de la aplicacin: Controla la intensidad de un LED Interfaz de usuario: 1 Label, 1 SeekBar Hardware: Dispositivo Android, Tarjeta PIC USB, Modulo Bluetooth, LED Nombre del Proyecto: SEEKBAR_Y_PWM Package Name: SEEKBAR_Y_PWM.ANDROID Application Label: SEEKBAR Y PWM Tcnica: Envi de ms de un carcter por bluetooth y su procesamiento con el microcontrolador El Layout deber quedar como se muestra a continuacin:

168

Esta aplicacin es muy similar a la desarrollada en el ejercicio 24 en la que un botn controla el encendido de un LED enviando un carcter. La diferencia es que ahora un SeekBar controla la intensidad de un LED por lo que se requiere enviar ms de un carcter, la tcnica consiste en implementar un protocolo de comunicaciones propio, que contenga un carcter de inicio, los datos y un carcter de fin. En este ejemplo se utiliza como delimitadores los parntesis entonces el protocolo queda de la siguiente forma: (datos) Entonces al enviar los caracteres en el evento del SeekBar el cdigo quedara dela siguiente manera:

Se puede apreciar que el envo no es difcil, pero el procesamiento de la cadena de caracteres en el Microcontrolador es un poco ms elaborado. Para empezar el Microcontrolador debe detectar el momento en que llega el carcter (, despus guardar los datos y la posicin en la que se encuentran, detectar el carcter ) para reiniciar el ciclo, y por ultimo convertir esa cadena de texto en un valor. Es recomendable el uso de interrupciones por UART para evitar la prdida de datos. Teniendo en cuenta que el SeekBar Varia de 0 a 100 el mnimo numero de caracteres que puede enviar son 3 y el mximo son 5, para (0) y (100) respectivamente. Entonces es necesario declarar una variable char en forma de arreglo para guardar los datos, siendo 5 la dimensin mnima, el cdigo del Microcontrolador usa para ello la siguiente lnea: char dato[10]; Para detectar cada carcter recibido se utiliza la funcin Kbhit() , al recibir cada carcter se debe ir guardando en la variable dato[] especificando la posicin en los corchetes, debido a que no se

169

Sabe en qu momento se recibirn 3,4 o 5 caracteres la posicin de los datos y del carcter de fin ) ser variable, por lo tanto se usa la variable entera Position para usarla como apuntador como se muestra a continuacin: if(kbhit()) { dato[position]=getc(); } El siguiente paso es detectar el carcter de inicio, servir para saber que inicia la trama e indicar mediante una variable llamada Inicio que ya se puede incrementar la variable Position y acomodar el dato en la siguiente posicin del arreglo: if(dato[position]==40) { inicio=1; } Luego se incrementa la posicin mediante la variable Inicio: if(inicio==1) { position=position+1; } El siguiente paso es detectar el fin de la cadena para reiniciar el ciclo, es decir hacer el apuntador Position = 0, la bandera Inicio=0 y guardar la posicin en la que terminan los datos, que siempre es una posicin antes que el carcter ). El cdigo queda de la siguiente manera: if(dato[position]==41) { fin=position-1; inicio=0; position=0; } Ahora solo resta extraer los datos y convertirlos a un valor numrico, si se han recibido 3 caracteres (para un valor del SeekBar de un digito por ejemplo 5) las variables quedan como Position=2, Fin=1, por lo tanto los caracteres se han acomodado de la siguiente forma: dato[0]=(, dato[1]=5 y dato*2]=). Si se han recibido 4 caracteres (para un valor del SeekBar de dos dgitos

170

Por ejemplo 20) las variables quedan como Position=3, Fin=2, por lo tanto los caracteres se han acomodado de la siguiente forma: dato [0]=(, dato[1]=2, dato*2]=0 y dato*3]=). Si se han recibido 5 caracteres (para un valor del SeekBar de tres dgitos por ejemplo 100) las variables quedan como Position=4, Fin=3, por lo tanto los caracteres se han acomodado de la siguiente forma: dato [0]=(, dato[1]=1, dato*2]=0, dato*3]=0 y dato*4]=). Conociendo estos valores es posible convertir a un valor numrico, como los caracteres se envan en cdigo ASCII el carcter 0 corresponde al valor decimal 48, por lo tanto se le resta esa cantidad, de esta forma se obtienen los dgitos. El ltimo paso es formar la cantidad multiplicando cada digito por su valor correspondiente (unidad, decena y centena) y sumarlos, el cdigo queda de la siguiente manera: if(fin==1) pwm=dato[1]-48; if(fin==2) pwm=(dato[1]-48)*10+(dato[2]-48); if(fin==3) pwm=(dato[1]-48)*100+(dato[2]-48)*10+(dato[3]-48); El valor del SeekBar ha quedado guardado en la variable pwm. El cdigo correspondiente a la tarjeta PIC USB se encuentra en la carpeta APLICACIONES PIC del CD con el nombre SEEKBAR_Y_PWM.c

PROGRESSBAR Y ADC

Descripcin de la aplicacin: Muestra la lectura de un canal analgico Interfaz de usuario: 1 Label, 1 ProgressBar Hardware: Dispositivo Android, Tarjeta PIC USB, Modulo Bluetooth, Potencimetro Nombre del Proyecto: PROGRESSBAR_Y_ADC Package Name: PROGRESSBAR_Y_ADC.ANDROID Application Label: PROGRESSBAR Y ADC Tcnica: Envi de ms de un carcter por bluetooth con el microcontrolador

El Layout deber quedar como se muestra a continuacin:

171

Esta aplicacin es muy similar a la desarrollada en el ejercicio 25 en la que el Boton BOOT de la tarjeta PIC enva un carcter de acuerdo a su estado. La diferencia es que ahora se lee un canal analgico de la tarjeta por lo que se requiere enviar ms de un carcter, la tcnica en el caso del microcontrolador consiste en formatear la cadena usando instrucciones printf, en basic4android la recepcin de los caracteres y su conversin es facilitada por medio del lenguaje por lo que los datos de entrada se pueden asignar directamente al Label y al ProgressBar

Entonces al recibir los caracteres en el evento del Timer el cdigo quedara dela siguiente manera:

Para el envo de datos con el microcontrolador se usa la instruccin printf y su sintaxis es la siguiente: Printf( );

172

Para enviar un valor fijo basta con poner el texto entre , por ejemplo para enviar un 100 el comando queda de la siguiente manera: Printf(100); Sin embargo la lectura del ADC es una cantidad variable, para enviar variables se puede usar los siguientes formateadores de cadena: c s u d Lu Ld x X f g e Carcter en ASCII Cadena Entero sin signo en formato decimal Entero con signo en formato decimal Entero sin signo de 16 bit en formato decimal Entero con signo de 16 bit en formato decimal Entero en formato hexadecimal (minsculas) Entero en formato hexadecimal (maysculas) Flotante con punto decimal Flotante redondeado Flotante en exponencial

A cada modificador se le antepone el smbolo % y con una coma despus del segundo smbolo se especifica la variable a enviar, por ejemplo para enviar una variable llamada S1 : Printf(%u,S1); Otros modificadores muy utilizados son el retorno de carro y carcter de salto de lnea \r y \n Por lo tanto si en Basic4Android se utiliza la funcin ReadLine ser necesario enviar el carcter de salto de lnea al final, el cdigo quedara de la siguiente manera: Printf(%u\n,S1); Por ltimo el ADC retorna valores de 0 a 255 mientras que el ProgressBar va de 0 a 100, en el cdigo del microcontrolador se hace un ajuste dividiendo la variable entre 2 para hacer ms aproximada la representacin en el ProgressBar, se debe incluir un pequeo retardo de algunos milisegundos para no sobrecargar de datos al sistema Android, el cdigo queda de la siguiente manera:

printf("%u\n",ADC/2); delay_ms(100);

173

El cdigo correspondiente a la tarjeta PIC USB se encuentra en la carpeta APLICACIONES PIC del CD con el nombre PROGRESSBAR_Y_ADC.c

LED RGB Descripcin de la aplicacin: Controla los colores de un LED RGB Interfaz de usuario: 1 Label, 3 SeekBar Hardware: Dispositivo Android, Tarjeta PIC USB, Modulo Bluetooth, LED RGB Nombre del Proyecto: LED_RGB Package Name: LED_RGB.ANDROID Application Label: LED RGB Tcnica: Envi de ms de un carcter y ms de una variable por bluetooth y su procesamiento con el microcontrolador El Layout deber quedar como se muestra a continuacin:

Esta aplicacin es muy similar a la desarrollada en el ejercicio SEEKBAR_Y_PWM en la que un SeekBar controla la intensidad de un LED enviando ms de un carcter. La diferencia es que ahora son 3 SeekBar controlando la intensidad de 3 LED (correspondientes a Rojo, Verde y Azul del LED) por lo que se requiere enviar ms de un carcter y una forma de diferenciar un valor de otro, la tcnica consiste agregar un identificador nico para cada variable al protocolo de comunicaciones propio,. En este ejemplo se utiliza como identificadores las letras R,G y B por lo que el protocolo queda de la siguiente manera (datosIdenfiticador)

174

Entonces al enviar los caracteres en el evento de cada SeekBar se muestra en los Label la posicin y se utiliza la instruccin Colors.RGB() para colorear el Label, el cdigo quedara dela siguiente manera:

Al igual que el ejemplo mencionado anteriormente el envo no es difcil, y en cuanto al programa del microcontrolador solo habr que agregar el cdigo para detectar cada identificador Para detectar cada carcter identificador se utiliza la parte de cdigo donde se detecta el fin de la cadena para reiniciar el ciclo y guardar en una variable llamada Identificador el carcter recibido que indica R,G o B, y los datos ahora terminaran dos posiciones antes antes que el carcter ). El cdigo queda de la siguiente manera:

175

if(dato[position]==41) { identificador=dato[position-1]; fin=position-1; inicio=0; position=0; } Ahora solo resta extraer los datos como en el ejemplo antes mencionado y asignarlo a la variable correspondiente dependiendo del identificador, el cdigo queda de la siguiente manera: if(identificador=='R') { if(fin==2) pwm1=dato[1]-48; if(fin==3) pwm1=(dato[1]-48)*10+(dato[2]-48); if(fin==4) pwm1=(dato[1]-48)*100+(dato[2]-48)*10+(dato[3]-48); } if(identificador=='G') { if(fin==2) pwm2=dato[1]-48; if(fin==3) pwm2=(dato[1]-48)*10+(dato[2]-48); if(fin==4) pwm2=(dato[1]-48)*100+(dato[2]-48)*10+(dato[3]-48); } if(identificador=='B) { if(fin==2) pwm3=dato[1]-48; if(fin==3) pwm3=(dato[1]-48)*10+(dato[2]-48); if(fin==4) pwm3=(dato[1]-48)*100+(dato[2]-48)*10+(dato[3]-48); }

176

El valor del SeekBar1 ha quedado guardado en la variable pwm1, el valor del SeekBar2 ha quedado guardado en la variable pwm2 y el valor del SeekBar3 ha quedado guardado en la variable pwm3. El cdigo correspondiente a la tarjeta PIC USB se encuentra en la carpeta APLICACIONES PIC del CD con el nombre LED_RGB.c

MULTIPLES LECTURAS Descripcin de la aplicacin: Muestra la lectura de 3 canales analgicos Interfaz de usuario: 4 Label, 3 ProgressBar Hardware: Dispositivo Android, Tarjeta PIC USB, Modulo Bluetooth, 3 Potencimetro Nombre del Proyecto: MULTIPLES_LECTURAS Package Name: MULTIPLES_LECTURAS.ANDROID Application Label: MULTIPLES LECTURAS Tcnica: Envi de ms de un carcter y ms de una variable por bluetooth con el microcontrolador y su procesamiento en Basic4Android.

El Layout deber quedar como se muestra a continuacin:

Esta aplicacin es muy similar a la desarrollada en el ejercicio PROGRESSBAR_Y_ADC en la que se lee un canal analgico de la tarjeta PIC USB y se envan varios caracteres . La diferencia es que

177

Ahora se leen 3 canales analgicos de la tarjeta por lo que se requiere enviar ms de un carcter y diferenciar cada variable al enviarlas, en basic4android la recepcin de los caracteres y su conversin es facilitada por medio del lenguaje por lo que los datos de entrada se pueden asignar directamente al Label y al ProgressBar, pero habr que implementar un algoritmo para identificar cada canal analgico, esto se logra con el uso de identificadores como en el caso del ejemplo LED RGB, entonces al recibir los caracteres en el evento del Timer se tendr que procesar la cadena y el lenguaje simplifica este proceso. Lo primero que se debe saber es el tamao de la cadena, el identificador (siempre el penltimo carcter), y despus unir los caracteres, se utiliza un Label para recibir la cadena y 3 Label para cada canal analgico, el cdigo correspondiente al algoritmo cuando la cantidad enviada es de un digito quedara dela siguiente manera:

El cdigo correspondiente al algoritmo cuando la cantidad enviada es de dos dgitos quedara dela siguiente manera:

178

El cdigo correspondiente al algoritmo cuando la cantidad enviada es de tres dgitos quedara dela siguiente manera:

Para el envo de datos con el microcontrolador se usa la instruccin printf como en el ejemplo PROGRESSBAR_Y_ADC, pero agregando el identificador en este caso se ha usado A,B y C: printf("%uA\n",ADC1/2); printf("%uB\n",ADC2/2); printf("%uC\n",ADC3/2); delay_ms(70);

La lectura del canal analgico 0 ha quedado guardado en el Label2, la lectura del canal analgico 1 ha quedado guardado en el Label3 y la lectura del canal analgico 2 ha quedado guardado en el Label4. El cdigo correspondiente a la tarjeta PIC USB se encuentra en la carpeta APLICACIONES PIC del CD con el nombre MULTIPLES_LECTURAS.c

SERVICIO Descripcin de la aplicacin: Lectura continua de datos por Bluetooth Interfaz de usuario: 1 Label Hardware: Dispositivo Android, Tarjeta PIC USB, Modulo Bluetooth Nombre del Proyecto: SERVICIO Package Name: BLUETOOTHCONTINUOS.ANDROID Application Label: BLUETOOTH CONTINUOS

179 Tcnica: Monitorear continuamente la recepcin de datos Bluetooth (incluso con el dispositivo Bloqueado o en reposo). El Layout deber quedar como se muestra a continuacin:

El primer paso es crear un servicio, el mdulo de servicio se agrega desde el men Project como se muestra en la siguiente imagen

Aparecer una ventana pidiendo el nombre del servicio, en este ejemplo se ha usado Notificador El servicio ser el encargado de algunas funciones de la conexin Bluetooth y la recepcin de datos, Por lo tanto lo primero es declarar todos los elementos necesarios para tales funciones, ya que un servicio no tiene interfaz de usuario no es posible usar un Label para guardar los caracteres recibidos por lo que se tiene que declarar una variable tipo String, el cdigo queda de la siguiente manera:

180

El siguiente paso es inicializar el Timer y Bluetooth como en ejemplos anteriores, pero ahora en el evento Service_Create que es cuando se crea el servicio, el cdigo quedara dela siguiente manera:

Despus en el evento Service_Start el servicio se debe ejecutar por medio de la funcin StartForeground() especificando una notificacin (no olvidar que la notificacin es el modo de interactuar con el usuario), por lo tanto habr que declarar el objeto tipo Notification y una variable Int para contar las notificaciones, el cdigo quedara dela siguiente manera:

En el evento Tick del Timer se procesan los datos recibidos como en ejemplos anteriores y si se recibe un 2 se despliega una nueva notificacin, el cdigo queda como se muestra a continuacin:

181

Por ultimo en el evento Service_Destroy que es cuando se destruye el servicio se deber finalizar la conexin Bluetooth, el cdigo queda de la siguiente manera:

El siguiente paso es construir la Actividad , en esta se deber cargar el layout, y el nico objeto declarado deber ser un Label que es el del Layout, la Actividad ser quien controle el inicio y cierre del servicio y la obtencin de los dispositivos apareados , por lo tanto habr que declarar 3 men tem, el cdigo queda de la siguiente manera:

El evento clic del tem Menu_conectar se encarga de obtener la lista de dispositivos y dems pasos como se vio en ejemplos anteriores, con la nica diferencia de que habr que llamar a cada variable y objeto poniendo antes el nombre del servicio seguido de punto como se muestra a continuacin:

182

Tambin en el evento Connected del Bluetooth habr que hacer los cambios en el cdigo mencionados anteriormente y deber quedar como se muestra en la imagen:

183

El ltimo paso es controlar el inicio y detencin del servicio con los tems restantes como se muestra a continuacin:

Para verificar el funcionamiento cargar a la tarjeta PIC USB el archivo SERVICIO.HEX contenido en la carpeta HEX del CD, Se enviara el carcter 2 al presionar el botn BOOT.

Para correr la aplicacin presionar la tecla men del dispositivo y seleccionar Iniciar:

Aparecer una notificacin indicando que el servicio ha iniciado, luego seleccionar Conectar y elegir el dispositivo Bluetooth:

184

Aparecer un mensaje Toast indicando que se ha establecido la conexin, y al presionar el botn BOOT de la tarjeta PIC USB aparecer una nueva notificacin:

185

AJUSTES DE MODULO BLUETOOTH


Los dispositivos Bluetooth poseen un juego de instrucciones para configurar ciertos parmetros como el nombre o ID, Password, BaudRate, Modo, etc. Varan segn la versin de firmware de cada fabricante, algunos necesitan cierta secuencia de activacin y desactivacin de pines para ingresar al modo comando, el mdulo HC-06 solo necesita que se especifique los parmetros usando comandos AT a travs de la UART: En el disco se incluyen 3 ejemplos que cambian el ID, Password y BaudRate del mdulo bluetooth, quedando como ID=linvor, Password=0000 y BaudRate=115200, los archivos para descargar a la tarjeta PIC USB se encuentran en la carpeta HEX nombrados como BLUETOOTH_NAME.hex, BLUETOOTH_PASSWORD.hex y BLUETOOTH_BAUD.hex , tambin se proporciona el cdigo fuente en la carpeta APLICACIONES PIC con los mismos nombres pero con extensin .c

Cambiar el nombre
Para cambiar el nombre se utiliza el comando AT+NAME y se enva a travs de una instruccin Printf, el comando queda como se muestra a continuacin: printf("AT+NAMElinvor"); El nombre debe ir inmediatamente despus del comando, por ejemplo si se desea cambiar el nombre a Android el comando quedara de la siguiente manera: printf("AT+NAMEAndroid");

Cambiar el PassWord
Para cambiar el Password se utiliza el comando AT+PIN, el comando queda como se muestra a continuacin: printf("AT+PIN0000"); Se requieren 4 digitos y deben ir inmediatamente despus del comando, por ejemplo si se desea cambiar el Password a 2012 el comando quedara de la siguiente manera: printf("AT+PIN2012");

Cambiar el BaudRate
Para cambiar el BaudRate se utiliza el comando AT+BAUD, el comando queda como se muestra a continuacin: printf("AT+BAUD8");

186

Se requieren 1 digito para establecer el BaudRate y debe ir inmediatamente despus del comando, para cambiar el BuadRate se tiene las siguientes opciones:

Por ejemplo si el BaudRate se quiere cambiar a 19200 el comando quedara de la siguiente manera: printf("AT+BAUD5");

187

ANDROID USB HOST + ARDUINO UNO

Desde la versin 3.0 de Android (Honeycomb) se implement la funcin de USB HOST en el sistema, es posible escribir un driver en una aplicacin para reconocer convertidores de SERIE a USB con chips FTDI como el integrado en un arduino uno y de esta forma establecer una interfaz.

SINGLE BOARD COMPUTERS + ANDROID

Las SBC son computadoras en una sola tarjeta y de bajo costo dotadas con salidas de video, USB, RED, entrada para perifricos, etc. El sistema operativo se instala por medio de la memoria SD, sus prestaciones son similares a los Smartphone de media gama o hasta la potencia de una tablet de gama alta, Existe una gran variedad de tarjetas ya disponibles y varias versiones de sistemas operativos como Android y Linux. Entre las SBC destaca la Raspberry pi, la Gooseberry, la Beagle Bone, etc.

188

GOOGLE ADK

Google ha desarrollado y liberado un protocolo llamado ADK (Accesory Development Kit) para el desarrollo de accesorios para dispositivos con Android 2.3.4 o superior (Gingerbread), Una tarjeta como USB HOST intercambia datos con un dispositivo Android para establecer una interfaz. Existen varias tarjetas ya disponibles como PIC24F starter kit de Microchip, Google ADK de RT, IOIO (actualizando firmware ADK), Incluso el USB HOST SHIELD para arduino. OPENCV + ANDROID

OpenCV es una libreria para el tratamiento de imagenes, puede ser integrada en dispositivos Android, para ello se requiere trabajar a un nivel ms bajo es decir desarrollar aplicaciones nativas con el Android NDK. ANDROID + NFC

189

Desde la versin 4 de Android (Ice Cream Sandwich) se implement el NFC (Near Field Communication) que es un sistema de comunicaciones de corto alcance que permite el intercambio de datos entre dispositivos, los protocolos estn basados en RFID, algunas aplicaciones son el pago de servicios, identificacin de objetos, intercambio de archivos, etc.

APPLE MFI

Para desarrollar accesorios o algn hardware para dispositivos de Apple el desarrollador se debe registrar en el programa MFI de Apple para acceder a la documentacin de sus dispositivos, Existen varias formas de establecer interfaces con dispositivos de Apple por ejemplo a travs de Wifi utilizando algn Shield para arduino o el transceiver MRF24WB0MA, tambin desde el conector Doc de Apple, o a travs de Bluetooth utilizando alguno de los mdulos compatibles que ya integren el coprocesador de Apple para vincularse como el BT-11M de Amped o el PAN1321 de Panasonic.

190

Descripcin: funciones bit a bit Objeto: Bit Propiedades:

Not (N como Int) como Int Devuelve el complemento bit a bit de un valor dado. Or (N1 como Int, N2 como Int) como Int Devuelve el OR bit a bit de los dos valores. ParseInt (valor como String, Radix como Int) como Int Analiza el valor como un entero usando la base especificada. Radix - debe estar entre 2 a 36. ShiftLeft (N como Int, Shift como Int) como Int Desplaza N turnos a la izquierda. Shift - nmero de posiciones a desplazar. ShiftRight (N como Int, Shift As Int) como Int Desplaza N turnos a la derecha. Mantiene valor del signooriginal Shift - nmero de posiciones a desplazar. ToBinaryString (N como Int) como String Devuelve una representacin de cadena de N en base 2. ToHexString (N como Int) como String Devuelve una representacin de cadena de n en base 16.

191

ToOctalString (N como Int) como String Devuelve una representacin de cadena de N en base 8.

UnsignedShiftRight (N como Int, Shift como Int) como Int Desplaza N turnos a la derecha. Corre ceros en los lugares vacos Shift - nmero de posiciones a desplazar. XOR (N1 como Int, N2 como Int) como Int Devuelve el XOR bit a bit de los dos valores. Descripcin: Palabras clave Objeto: predefinido Propiedades: ABS (nmero como Double) como Double Devuelve el valor absoluto. ACos (Value como Double) como Double Devuelve el ngulo medido en radianes. ACosD (Value como Double) como Double Devuelve el ngulo medido en grados. Array Crea una matriz de dimensin nica del tipo especificado. La sintaxis es: matriz como tipo (lista de valores). Ejemplo: Dim Days() As String Days() = Array As String("Domingo", "Lunes",...) ASC (Char como Char) como Int Devuelve el punto de cdigo unicode del primer carcter o caracteres de la cadena. ASin (Value como Double) como Double Devuelve el ngulo medido en radianes. ASinD (Value como Double) como Double

192

Devuelve el ngulo medido en grados. ATan (Value como Double) como Double Devuelve el ngulo medido en radianes. ATanD (Value como Double) como Double Devuelve el ngulo medido en grados. BytesToString (Data () como Byte, StartOffset como Int, longitud como Int, CharSet como String) Decodifica las matrices de bytes dado como una cadena. Datos:la matriz de bytes. StartOffset:el primer byte para leer. Longitud: nmero de bytes que leer. CharSet - el nombre del juego de caracteres. Ejemplo: Dim s As String s = BytesToString (Buffer, 0, Buffer.Length, "UTF-8")

cE como Double Constante e (base de logaritmo natural). CharsToString (Chars() como Char, StartOffset como Int, Length como Int) como String Crea una nueva cadena copiando los caracteres de la matriz. Comienza desde StartOffset y el nmero de caracteres a copiar equivale a la longitud. Chr (UnicodeValue como Int) como Char Devuelve el carcter que est representado por el valor unicode determinado. Continue Detiene la ejecucin de la iteracin actual y contina con el siguiente. Cos (Radians como Double) como Double Calcula la funcin trigonomtrica coseno. ngulo medido en radianes. CosD (Degrees como Double) como Double Calcula la funcin trigonomtrica coseno. ngulo medido en grados.

193

cPI como Double Constante PI.

CRLF como String Carcter de nueva lnea. El valor de chr (13). Density como Float Devuelve la escala del dispositivo, que es DPI / 160. (DPI significa puntos por pulgada). Dim Declara una variable. DipToCurrent (Length como Int) como Int Escala el valor, que representa una longitud especfica en un dispositivo de densidad predeterminada (densidad = 1.0), al dispositivo actual. Por ejemplo, el siguiente cdigo establece el valor de ancho de este botn para tener el mismo tamao fsico en todos los dispositivos. Button1.Width = DipToCurrent (100) Exit Se cierra el bucle ms interno. ExitApplication Inmediatamente termina la aplicacin y detiene el proceso. La mayora de las aplicaciones no usan este mtodo y prefieren Activity.Finish que permite que el sistema operativo decida cuando asesinar el proceso. False como Boolean File como File Metodos relacionados con archivos. Floor (Number Double) como Double Devuelve el Double ms grande que es menor o igual al nmero especificado y es igual a un entero.

194 For Sintaxis: For variable = valor1 To valor2

GetDeviceLayoutValues como LayoutValues Devuelve los valores de Layout del dispositivo Ejemplo: Log(GetDeviceLayoutValues) GetType (object como Object) como String Devuelve una cadena que representa el tipo del objeto java. If Sintaxis: If condicin then Declaracin Else Declaracin End If InputList (Items como List, Title como String, CheckedItem como Int) como Int Muestra un cuadro de dilogo modal con una lista de elementos y RadioButton. Pulsando sobre un elemento se cerrar el cuadro de dilogo. Devuelve el ndice del elemento seleccionado o DialogResponse.Cancel si el usuario presiona el botn Back. List - elementos para mostrar. Title - Ttulo del dilogo. CheckedItem - el ndice del elemento que ser seleccionado por default. Usar -1 si ningn elemento debe ser preseleccionado. InputMultiList (elementos como lista, ttulo como String) como List Muestra un cuadro de dilogo modal con una lista de elementos y CheckBox. El usuario puede seleccionar varios elementos. El cuadro de dilogo se cierra pulsando sobre el botn OK Devuelve una lista con los ndices de los elementos seleccionados. La lista est ordenada. Devuelve una lista vaca si el usuario ha presionado la tecla back. IsBackgroundTaskRunning (ContainerObject como Object, TaskId como Int) como Boolean Comprueba si una tarea en segundo plano, presentada por el objeto contenedor y con el id especificado, se est ejecutando.

195

IsNumber (Text como String) como Boolean Comprueba si la cadena especificada puede analizarse de forma segura como un nmero.

LastException como Exception Devuelve la ltima excepcin que fue capturada (si existe tal excepcin). LoadBitmap (Dir como String, FileName As String) como Bitmap Carga el Bitmap. Tener en cuenta que el sistema de archivos Android distingue maysculas de minsculas. Se debe considerar el uso de LoadBitmapSample si el tamao de la imagen es grande. El tamao real del archivo no es relevante, normalmente se almacenan imgenes comprimidas. Ejemplo: Activity.SetBackgroundImage (LoadBitmap (File.DirAssets,"SomeFile.jpg")) LoadBitmapSample (Dir como String, FileNamecomo String, MaxWidth como Int, MaxHeight como Int) como Bitmap Carga el mapa de bits con el tamao especificado. Ejemplo: Activity.SetBackgroundImage (LoadBitmapSample (File.DirAssets, "SomeFile.jpg", Activity.Width, Activity.Height)) Log (MessageAs String) Registra un mensaje. El registro puede verse en la pestaa LogCat. Logarithm (Number como Double, Base como Double) como Double Max (Number1 como Double, Number2 como Double) como Double Devuelve el nmero ms grande entre los dos nmeros. Min (Number1 como Double, Number2 como Double) como Double Devuelve el nmero menor entre los dos nmeros. MsgBox (Message como String, Title como String) Muestra un cuadro de mensaje modal con el mensaje y el ttulo especificado. El cuadro de dilogo mostrar un botn OK. Ejemplo: MsgBox ("Hola mundo", "Este es el ttulo")

196

Msgbox2 (Message como String, Title como String, Positive como String, Cancel como String, Negative como String, Icon como android.graphics.Bitmap) como Int Muestra un cuadro de mensaje modal con el mensaje y el ttulo especificado. Message - el mensaje del cuadro de dilogo. Ttle - el ttulo del cuadro de dilogo. Positive - el texto a mostrar para el botn "positivo". Usar "" si no desea mostrar el botn. Cancel - el texto a mostrar para el botn "cancelar". Usar "" si no desea mostrar el botn. Negative - el texto a mostrar para el botn "negativo". Usar "" si no desea mostrar el botn. Icon - un mapa de bits que se dibujar cerca del ttulo. Usar Null si no desea mostrar un icono. Devuelve uno de los valores de DialogResponse. Ejemplo: Dim resultado AsInt resultado = Msgbox2 ("Este es el mensaje", "Este es el ttulo", "positivo", "", "negativo", LoadBitmap (File.DirAssets, "smiley.gif")) If resultado = DialogResponse.Positive Then... Not (Value como Boolean) como Boolean Invierte el valor de un booleano. NULL como Object PerXToCurrent (Percentage como Float) como Int Devuelve el tamao real de determinado porcentaje de la anchura de la actividad. Ejemplo: Button1.Width = PerXToCurrent(50) ' Button1.Width = 50% * Activity.Width PerYToCurrent (porcentaje como Float) como Int Devuelve el tamao real de determinado porcentaje de la altura de la actividad. Ejemplo: Button1.Height = PerYToCurrent(50) ' Button1.Height = 50% * Activity.Height Power (Base como Double, Exponent como Double) como Double Devuelve el valor Base elevado a la potencia Exponent ProgressDialogHide Esconde un cuadro de dilogo de progreso visible.

197 ProgressDialogShow (Text como String) Muestra un cuadro de dilogo con una barra giratoria circular y el texto especificado.

A diferencia de los mtodos de Msgbox e InputList, el cdigo no se bloquear. Se debe llamar a ProgressDialogHide para quitar el cuadro de dilogo. El cuadro de dilogo tambin se eliminar si el usuario presiona la tecla atrs. ProgressDialogShow2 (Text como String, Cancelable como Boolean) Muestra un cuadro de dilogo con una barra giratoria circular y el texto especificado. A diferencia de los mtodos de Msgbox y InputList, el cdigo no se bloquear. Se debe llamar a ProgressDialogHide para quitar el cuadro de dilogo. Cancelable - si el usuario puede descartar el cuadro de dilogo presionando la tecla atrs. Quotecomo String Carcter Quote. El valor de chr (34). Return Devuelve un valor especificado Rnd (Min como Int, Max como Int) como Int Devuelve un entero aleatorio entre Min (inclusive) y Max (exclusivo). Round(Number como Double) como Long Devuelve el Long ms cercano al nmero dado. Round2 (Number como Double, DecimalPlaces como Int) como Double Redondea el nmero determinado y deja el nmero especificado de dgitos fraccionarios. Select Compara un valor nico para varios valores. Ejemplo: Dim valor As Int valor = 7 Select valor Case 1: Log("un") Case 2, 4, 6, 8:Log("par") Case 3, 5, 7, 9:Log("impar ms grande que uno")

198 Case Else Log("mayor que 9") End Select

Sin (Radians como Double) como Double Calcula la funcin trigonomtrica seno. ngulo medido en radianes. SinD (Radians como Double) como Double Calcula la funcin trigonomtrica seno. ngulo medido en grados.

Sqrt(Value como Double) como Double Devuelve la raz cuadrada positiva. StartActivity (Activity como Object) Inicia una actividad o trae al primer plano si ya existe. La actividad puede ser una cadena con el nombre de la actividad de destino o puede ser la propia actividad. Despus de esta llamada se interrumpir la actividad actual y se reanudar la actividad de destino. Tab como String Carcter de tabulacin. Tan (Radians como Double) como Double Calcula la tangente trigonomtrica. ngulo medido en radianes. TanD (Degrees como Double) como Double Calcula la tangente trigonomtrica. ngulo medido en grados. ToastMessageShow (Message como String, LongDuration como Boolean) Muestra un mensaje que se desvanece automticamente. Message - el mensaje de texto a mostrar. LongDuration - si es true muestra el mensaje durante un largo perodo, de lo contrario muestra el mensaje durante un Perodo corto. True como Boolean While

199 Bucle mientras la condicin es verdadera. Sintaxis: Do While condicin ... LOOP Descripcin: valores relacionados con la pantalla Objeto: Layout Values Propiedades: Heightcomo Int La altura de la pantalla (pxeles). Escale como Float El valor de escala del dispositivo que es igual a DPI/ 160. Para la mayora de los dispositivos, el valor ser 1 o 1.5 (alta resolucin). toString como String Widthcomo Int La anchura de la pantalla (pxeles). Descripcin: cadenas Objeto: String Propiedades: CharAt (Index como Int) como Char Devuelve el carcter en el ndice especificado. CompareTo (Other como String) como Int Lexicogrficamente compara las dos cadenas. Devuelve un valor menor que 0, si la cadena actual precede a otro. Devuelve 0 si las cadenas son iguales. Devuelve un valor mayor que 0 si la cadena actual viene despus de otra. Notar que maysculas preceden a minsculas. Ejemplos: "abc".CompareTo("da") ' < 0 "abc".CompareTo("Abc") ' > 0

200 "abc".CompareTo("abca")' < 0 EndsWith (Suffix como String) como Boolean Devuelve true si esta cadena termina con el sufijo determinado. EqualsIgnoreCase (other como String) como Boolean Devuelve true si dos cadenas son iguales ignorando su caso. GetBytes (Charset como cadena) como Byte() Codifica la cadena en una nueva matriz de bytes. Ejemplo: Dim Data() As Byte Datos = "Una cadena".GetBytes("UTF8") Length como Int Devuelve la longitud de la cadena. Replace (Target como String, Replacement como String) como String Devuelve una nueva cadena resultante de la sustitucin de todas las apariciones de destino con Reemplazo. StartsWith (Prefix como String) como Boolean Devuelve true si esta cadena comienza con el prefijo especificado. SubString (BeginIndex como Int)como String Devuelve una nueva cadena que es una subcadena de la cadena original. La nueva cadena incluir el carcter BeginIndex y se extender hasta el final de la cadena. Ejemplo: "012345".SubString(2) ' devuelve "2345" ToLowerCase como String Devuelve una nueva cadena en minscula ToUpperCase como String Devuelve una nueva cadena en mayscula.

201

http://www.basic4ppc.com/android/documentation.html http://www.basic4ppc.com/forum/index.php http://developer.android.com/index.html https://github.com/ytai/ioio/wiki http://www.pinguino.cc/ http://www.neoteo.com/modulo-bluetooth-hc-06-android http://romotive.com/ http://android.serverbox.ch/ http://robots-everywhere.com/re_wiki/index.php?title=Serial_on_Android_using_the_audio_port http://developer.android.com/tools/adk/index.html http://webdelcire.com/wordpress/archives/1045 http://appinventor.mit.edu/

Вам также может понравиться