martes, 21 de febrero de 2012

Movilidad en Anki

En este artículo vamos a intentar ver cómo podemos tener Anki funcionando en varios ordenadores a la vez usando DropBox. De hecho lo que vamos a hacer es tener funcionando Anki en dos PC'S, en una tablet Android y via Web.

Dos ordenadores windows a la vez.

Va casi sólo. Realmente lo único que tenemos que hacer es crearnos una cuenta Anki. Para ello vamos a 'Ajustes / Preferencias / Red'



Ahí podemos dar de alta nuestra cuenta y aceptar los cambios.

Ahora vamos a 'Fichero / Sincronizar'  y subiremos, descargaremos o actualizaremos los 'mazos' que tengamos en nuestro espacio común respecto a nuestro disco local.  Para entendernos.  Yo hago cambios en mi máquina A. Cuando acabe sincronizo y traslado los cambios al 'espacio común'. Luego desde una máquina B, sincronizo y recibo los cambios del 'espacio común'. Como veis en la captura de pantalla de arriba estos procesos de sincronización pueden automatizarse un poco.

Multimedia

Es cierto que con lo anterior ya nos funcionaría todo siempre y cuando no tuviéramos multimedia en nuestras tarjetas, con esto me refiero a imágenes, sonidos o LaTeX (aunque al fin y al cabo son imágenes). Dichos archivos deberíamos guardarlos en otro espacio común. DropBox es una de las opciones que tenemos.

Para ello lo primero que debemos hacer es instalar DropBox.

Y luego tenemos que corregir un problema de incompatibilidad de Anki con las últimas versiones de DropBox.

Vamos a 'Archivo / Descargar / Complemento compartido...', ponemos 'dropbox' en Buscar y descargamos el plug-in 'Fix DropBox Folder Location'.



Reiniciamos Anki, ahora le diremos que queremos tener nuestros archivos multimedia en DropBox.  Esto lo veremos desde 'Ajustes / Preferencias / Básico', seleccionando 'Conservar medios en DropBox' en el apartado 'Multimedia'


La próxima vez que intentemos cargar o sincronizar un mazo de nuestro 'espacio común' nos saldrá este mensaje:

 
Al pulsar OK se nos abrirá una ventana del 'Explorador de Windows' en el que se nos muestra un archivo llamado 'right-click-me'. Pulsamos sobre él con el botón derecho del ratón y seleccionamos 'DropBox' y 'Copiar enlace público'.
 

Ahora pegamos el texto (CTRL + V) en la ventana 'Pegue la ruta aquí' que nos ha abierto Anki.


Con esto conseguiremos tener todos los archivos multimedia sincronizados automáticamente en cualquier equipo.

Anki en la web
Además hemos hecho algo sin darnos cuenta. Abrid el siguiente enlace:  Ankiweb.
Después de logarnos podremos ver todo nuestro trabajo en una página web!


domingo, 19 de febrero de 2012

Anki vs. LaTeX

En esta entrada intentaré ver algunos problemas y sus soluciones que nos pueda ocasionar el uso de LaTeX con el Anki.
  • Me he bajado mazos con fórmulas y se ven estupendamente. Si copio una de esas fórmulas en una de mis tarjetas me da 'Error al ejecutar Latex'.
Aunque lo parezca, Anki no construye textos LaTeX. Se generan imágenes y se guardan en nuestra carpeta nombre_del_mazo.media. Para que se generen, debemos instalar LaTeX. No habrá que hacer nada más, lo instalamos y ya funciona.
Para Windows podemos descargarnos LaTeX desde aquí. En principio bastaría con la instalación Básica.
  • Ya lo he hecho, ahora me sale el mismo error y un montón de palabros debajo.
 Mmm... estamos trabajando con las etiquetas [LATEX][/LATEX]?  Prueba con [$][/$]  (lo que en LaTeX se conoce con ambiente de ecuación)
  • Mesaletodoeltextojunto
Eso es que está s utilizando las etiquetas [$][/$]. Prueba con [LATEX][/LATEX]
  • Mmm... antes me has dicho lo contrario. ¿Te estás quedando conmigo?
Que va. Si intentas poner una fórmula entre las etiquetas [LATEX] te dará error. Si pones texto entre etiquetas [$][/$] no podrás poner texto. Y si intentas jugar con ellas alternándolas, para resolver el problema, obtendrás resultados  inesperados. Prueba a usar sólo la etiqueta [LATEX] y cuando llegue la fórmula en lugar de [$][/$] pon:
\begin{math}
\end{math}
Por ejemplo:
                El teorema de Pitágoras.
\begin{math}
        x^{2} + y^{2} = h^{2}.
        \end{math}
Podríamos en lugar de {math}, usar {displaymath} que nos centraría la fórmula en pantalla o bien {equation} que enumera la fórmula.
  • Qué letrota, ¿no? ¿Puedo hacerla más chiquita?
Puedes, prueba con los siguientes comandos (estan ordenados de más pequeño a más grande):
         \tiny
         \scriptsize
         \footnotesize
         \small
         \normalsize
         \large
         \Large
         \LARGE
  • Ya veo, si se puede cambiar el tamaño de la letra también se podrá cambiar la fuente supongo... 
Supones bien. Dispones de los siguiente comandos:

       \rm          roman
       \em          italic
       \bf          boldface
       \sl          slanted
       \sf          sans serif
       \sc          small caps
       \tt          typewriter
  • ¿Como hago un salto de línea? 
\\
  • ¿Podrías poner algún ejemplo práctico? 
 n^2  
a_n
\frac{n}{2}
\sqrt[3]{3x^2+5}
\sum_{k=1}^n k

n\in\mathbb{N}

miércoles, 15 de febrero de 2012

Android Manifest (II) - Etiqueta manifest

Una aplicación Android no tiene un único punto de entrada. No es como con Java que tenemos un método main. Los componentes de una aplicación Android ejecutan las acciones mediante 'intents' específicos.

Los componentes que incluye nuestra aplicación y a que 'intents' reaccionan se especifican en el archivo manifest.xml. También se define la 'activity' que se mostrará por defecto cuando se inicie la aplicación.

En el archivo manifest.xml también se definirá:

  • La versión de nuestra aplicación para el Android Market.
  • Las versiones de Android en que nuestra aplicación se puede ejecutar.
  • Los perfiles de Hardware que nuestra aplicación requiere, como Multi-Touch , resoluciones de pantalla específicas o soporte para OpenGl.
  • Permisos para utilizar componentes específicos como escribir en la tarjeta SD o acceder a la red.

Manifest.XML 'pelao'



Como vemos, el archivo manifest se engloba todo dentro de una única etiqueta . Es decir que iniciará y cerrará el archivo.

La etiqueta puede contener diversos atributos:

  • xmlns:android="http://schemas.android.com/apk/res/android" 
Se trata de un namespace  para XML al que llamaremos android y usaremos en el archivo manifest, se trata de un standard que usaremos siempre.
  • package 
Definimos el nombre del paquete raíz de nuestra aplicación y debe ser único en el mundo. Referiremos todas las clases de nuestra aplicación a este paquete.
  • android:versionCode
Especifica la versión de nuestra aplicación. Tiene que se un número que se irá incrementando cada vez que publiquemos una nueva versión de nuestra aplicación. Lo usará el  'Android Market' para seguir el desarrollo de nuestra aplicación.
  • android:versionName
Especifica la versión de nuestra aplicación. Se mostrará a los usuarios del 'Android Market' cuando navegue por nuestra aplicación. Podemos usar cualquier string que nos guste.
  • android:installLocation="preferExternal"
Sólo estará disponible si configuramos el 'target' (versiones admitidas para nuestra aplicación) y éste es Android 2.2 o superior. Este atributo indica dónde queremos que se instale la aplicación. Con el valor preferExternal le decimos que queremos que sea en la tarjeta SD.  Si tenemos una versión de Android inferior, simplemente se ignorará.

Estos atributos ya los vimos la primera vez que hablamos del archivo manifest, sólo que en esa ocasión los creamos a través del asistente.

Si os interesa el tema echad un vistazo a Android Manifest (III)

lunes, 13 de febrero de 2012

Componentes principales de una aplicación Android

Sigo resumiendo los videotutoriales de Jesús Conde, la idea es tenerlos accesibles como consulta sin necesidad de buscar y buscar en los videos, vamos, lo que siempre he hecho cuando aprendo algo nuevo, pero esta vez en lugar de tenerlo en un Word 'pa mí' lo cuelgo por si a alguien más le sirve. La diferencia es que uso un lenguaje más 'formal' y dirigido a un posible público.

En este capítulo y los siguientes me basaré en este video, aunque la idea es que con el tiempo vaya ampliando conocimientos y contenido, de manera que al final la autoría sea sólo mía.

Componentes principales de una aplicación Android
 Componentes visibles, con una interface de Usuario y que servirán para interactuar con la aplicación.
  • Services
Procesos que funcionan en segundo plano y son no visibles. Monitorean el resto de componentes y actividades de la aplicación. Por ejemplo, un service puede monitorear un chat para comprobar cuando hay una nueva entrada en el mismo.
 Son los mensajeros de la aplicación. Pueden notificarnos eventos que tienen lugar en el sistema, como por ejemplo que se haya conectado un cable USB. También son usados para iniciar otros compenentes de nuestra aplicación: Pueden lanzar activities o pueden pedir a otras aplicaciones externas que ejecuten una acción, por ejemplo que se abra una galería de fotos o iniciar la aplicación de la cámara para tomar una foto.
  •  Broadcast Receivers

Son los receptores de emisión y reaccionan ante 'intents' específicos. Cuando se recibe un 'intent', un broadcast receiver puede ser el encargado de ejecutar una acción: puede iniciar una activity específica o puede devolver otro intent al sistema para que siga el proceso.
  • Content Providers
Son los encargados de poner en contacto nuestra aplicación con otras aplicaciones del sistema.

domingo, 12 de febrero de 2012

Manejo del dispositivo virtual Android (AVD)

Supongamos que tenemos el Dispositivo Virtual Android (AVD) creado. Si no lo tenemos ver aquí.

Para abrir el AVD debemos pulsar sobre el botón 'Android Virtual Device Manager', seleccionar el dispositivo que queramos y pulsar 'Start', después pulsar 'Launch'. También podemos acceder desde menú por Window / AVD Manager.


Teclas Rápidas
  • [CTRL] + [F11] - Cambia la orientación de pantalla a 'paisaje' (Landscape).
  •  [CTRL] + [F12] - Cambia la orientación de pantalla a 'retrato' (Portrait).

  •  [ALT] + [ENTER] -  Cambia el emulador a 'pantalla completa' o sale de la misma.
  •  Todas las teclas
Emulated Device Key Keyboard Key
Home HOME
Menu (left softkey) F2 or Page-up button
Star (right softkey) Shift-F2 or Page Down
Back ESC
Call/dial button F3
Hangup/end call button F4
Search F5
Power button F7
Audio volume up button KEYPAD_PLUS, Ctrl-5
Audio volume down button KEYPAD_MINUS, Ctrl-F6
Camera button Ctrl-KEYPAD_5, Ctrl-F3
Switch to previous layout orientation (for example, portrait, landscape) KEYPAD_7, Ctrl-F11
Switch to next layout orientation (for example, portrait, landscape) KEYPAD_9, Ctrl-F12
Toggle cell networking on/off F8
Toggle code profiling F9 (only with -trace startup option)
Toggle fullscreen mode Alt-Enter
Toggle trackball mode F6
Enter trackball mode temporarily (while key is pressed) Delete
DPad left/up/right/down KEYPAD_4/8/6/2
DPad center click KEYPAD_5
Onion alpha increase/decrease KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)

Podemos ver este resumen aquí

Home 
Es el escritorio principal dónde colocamos las aplicaciones (widgets) más usadas. Consta de varias pantallas por las que podemos desplazarnos o bien arrastrando con el ratón o bien con los botones inferiores (3). También tenemos acceso rápido al teléfono (1) y al navegador web (2). Si tenemos conexión a internet desde nuestra máquina, el navegador web funcionará perfectamente. También podremoas acceder a las aplicaciones instaladas (4)

Aplicación Teléfono
Es una aplicación preconstruida en Android que nos permite hacer y recibir llamadas, establecer contactos, favoritos...  


Aplicaciones Instaladas
 Pulsando sobre el botón correspondiente en la pantalla inicial ('Home') veremos las aplicaciones instaladas en ese momento.



De entre las aplicaciones preinstaladas tenemos 'Dev Tools' que nos permite establecer la configuración para el desarrollo de aplicaciones.


Botón Menú 
Este botón despliega el menú particular para cada una de las pantallas en la que estemos posicionados.


  • Añadir Contactos
Para añadir un contacto, desde la aplicación teléfono pulsamos 'Contacts'. Al pulsar en el botón 'Menu' del emulador nos aparecerá una barra de menús con la opción de añadir contactos. También podemos importarlos y exportarlos.


  • Mensajes SMS
Para acceder a los mensajes SMS pulsamos la opción 'Menú' desde la pantalla 'Home' y después 'Notifications'

  • Configuración
También desde 'Home', pulsando 'Menu' y 'Settings', accederemos a la configuración del dispositivo. Nos podemos desplazar por él por ejemplo con los cursores.


jueves, 9 de febrero de 2012

DDMS (Dalvik Debug Monitor Service)

Siguiendo con la tónica que he empezado, voy a tomar apuntes a partir de los videotutoriales de Jesús Conde, en este caso usaré este vídeo, a partir del minuto 14:20, sin embargo os aconsejo que lo veáis desde el principio.


El DDMS (Dalvik Debug Monitor Service) es una utilidad de depuración integrada en Eclipse.

Accederemos a él desde la parte derecha de la botonera como una nueva perspectiva, aunque también se puede lanzar de forma independiente de Eclipse desde la carpeta donde tengamos instalado el SDK en la subcarpeta tools (ddms.bat)


Consta de cinco partes funcionales:
  • Manejo de Tareas (1): Veremos los emuladores y teléfonos que tengamos conectados y sus instancias.
  • Manejo de Archivos (2)
  • Interacción con el emulador (3)
  • Sistemas de Log (4)
  • Capturas de Pantalla (5)

Pestaña Threads
Desde esta pestaña podemos ver los procesos e hilos de ejecución de las instancias individuales del dispositivo o emulador. Para ello seleccionamos el proceso que queramos inspeccionar (1) y pulsamos el botón 'Update Threats'  (2)


Pestaña Heap
Sirve para ver la pila y las actualizaciones que se vayan haciendo en ella. Si lanzamos un proceso de recolección de basura podemos ver como cambia. Para ello con el proceso seleccionado (1), pulsamos el botón 'Update Heap' (2)


Detener un proceso
Para tal cometido no hay más que seleccionar el proceso y pulsar el botón 'Stop Process'
 
   
Depurar un proceso
Elegimos el proceso y pulsamos sobre el botón 'Debug'.


Hay que tener abierto el código fuente de alguna aplicación. Esta funcionalidad sólo esta disponible desde Eclipse, no pudiéndose llevar a cabo en la ejecución independiente del DDMS.

Pestaña File Explorer
Además de navegar por los archivos de nuestro emulador o dispositivo conectado, nos permite transferir archivos entre el dispositivo y nuestra máquina de desarrollo. Para recibir archivos desde el dispositivo usaremos el botón 'Pull a file from the device' (1) y para mandarlos el botón 'Push a file onto the device' (2). Al pulsarlos se nos abrirá el explorador de archivos. También podemos añadir nevas carpetas con el botón 'New Folder' (3) o borrar archivos con el botón 'Delete the selection' (4) o pulsando la tecla [suprimir] en el teclado. En el caso del borrado NO nos pedirá confirmación, así que cuidadito...


Emulator Control
Nos permite interactuar con los emuladores enviando distintos tipos de eventos como llamadas, mensajes SMS o coordenadas de localización. Sólo funciona para emuladores, para teléfonos debe hacerse de forma real con su coste incluido.
  •  Simular un llamada de voz o un SMS
  • Escogemos el simulador (1)
  • Introducimos el número de teléfono desde el que llamamos (2)
  • Nos aseguramos de tener marcado 'voice'   (3)
  • Pulsamos 'Call'

Veremos como entra la llamada en nuestro emulador, desde el cual podremos contestar y colgar. También podemos colgar desde el 'Emulador Control' pulsando sobre el botón 'Hang Up'



 Lo mismo haríamos para enviar un SMS, en vez de 'Voice' seleccionaríamos SMS y escribiríamos el mensaje y posteriormente pulsaríamos el botón 'Send'


Si en el SMS ponemos tildes o 'ñ' conoceremos el verdadero significado de la frase 'me salen chinos'.

También podemos ver los mensajes dando a la opción 'Menu' en el emulador y luego a 'Notifications'


Screen Capture 

Nos permite capturar un 'pantallazo' de nuestro emulador o dispositivo conectado (especialmente útil para este último caso).  Para ello una vez estemos sobre la pantalla que queremos capturar pulsaremos sobre el icono de 'Screen Capture' y podremos Rotar la imagen (1), guardarla en disco (2), hacer un copy para pegarla en un documento (3) y salir con el botón 'Done' (4).


Consola de Logs
  •  Pestaña LogCat
Es una salida del diagnóstico de funcionamiento de las aplicaciones. Permite filtrar los logs según su importancia y crear filtros de logs personalizados usando etiquetas.
 

miércoles, 8 de febrero de 2012

Crear configuración de depuración Android en Eclipse

Desde el menú seleccionamos Run / Debug Configurations


aunque también tenemos un icono en la botonera para el mismo cometido:

Para crear una nueva configuración haremos doble-click sobre 'Android Aplication'

  • Daremos un nombre a la configuración (1)
  • Seleccionaremos el proyecto (2) pulsando el botón 'Browse'

 Pasamos a la siguiente pestaña pulsando sobre 'Target'.

En esta pantalla eligiremos nuestro emulador AVD.  Si seleccionamos la opción manual, cada vez que lancemos esta configuración nos volverá a preguntar que dispositivo virtual queremos usar. Esto es útil para probar diversos dispositivos.

Sólo nos quedaría pulsar el botón 'Apply' y posteriormente 'Debug'. Se creará la depuración que puede tardar un rato largo. Paciencia.





domingo, 5 de febrero de 2012

Crear y configurar un dispositivo virtual Android (AVD)


El Android Virtual Device (AVD) describe el tipo de dispositivo Android que queremos que simule el emulador pudiendo especificar diferentes tipos de pantalla, resoluciones y si tiene una tarjeta SD y su capacidad.

Podemos lanzar el AVD Manager desde la botonera de Eclipse...


o bien desde el menú 'Window'

Esto nos mostrará una pantalla con todos los AVD que tengamos creados o una pantalla vacía si no tenemos ninguno como es mi caso. Para remediarlo pulsamos 'New'


En la pantalla que nos aparecerá ahora deberemos informar:
  • Nombre del dispositivo virtual (1)
  • Target (2): Aquí informaremos de la versión de Android sobre la que construiremos nuestra aplicación. Yo cogeré el Android 2.2 API Lvl. 9 que es el de mi tablet. Las opciones de aquí están relacionadas con las que dimos de alta en el Android SDK Manager
  • SD Card (3): Definiremos el tamaño virtual de nuestra tarjeta virtual de nuestra máquina virtual. :-). El tamaño se expresa en KiB (Kibibytes), MiB (Mebibytes) ó GiB (Gibibytes). Debemos escoger un tamaño razonable ya que ocupará espacio en nuestro disco duro.
  • Snapshot (4):  A cambio de un poco más de espacio en disco, conseguiremos que los reinicios del dispositivo virtual sean más rápidos.
  • Skin (5): Definimos el aspecto que queremos que presente el emulador.

Finalmente pulsaremos el botón 'Create AVD' que creará el dispositivo invirtiendo más o menos tiempo según el tamaño que deba ocupar.

Veremos ya nuestro dispositivo que si se ha creado correctamente tendrá al lado del nombre un 'check' de color verde.


Uso del AVD aquí.

strings.xml

En este archivo definiremos los strings que vayamos a utilizar.

Para encontrarlo acudimos al Package Explorer y entramos en las carpetas res y values.


Si acudimos al fichero main.xml en las carpetas res y layout, veremos que por defecto se nos muestra un texto en un control TextView.


Si acudimos al código xml del main, vemos que el control tiene una propiedad text con el texto "@string/hello"

Si abrimos strings.xml, podremos ver nuestro string hello y el valor que contiene. También podemos modificarlo.



Si abrimos el código por la pestaña strings.xml veremos como nos queda el string definido dentro de la etiqueta resources. El otro string app_name contiene el nombre de nuestra aplicación.