sábado, 17 de diciembre de 2011

Posteando desde un tablet

Aunque se hace más llevadero escribir con Swype sigue siendo arduo postear desde un tablet, aunque resulta especialmente emocionante pensar que por fin podré probar mis desarrollos Gingerbread  en un entorno real y no en el simple emulador. Intentaré seguir portándome bien para que los Reyes me traigan uno de los grandes y dar el salto a Honeycomb  pero, mientras tanto, a falta de pan buenas son tostadas. ¡Os deseo Feliz Navidad y buenos desarrollos!

miércoles, 23 de noviembre de 2011

Despedida y cierre


Con cada nuevo curso, y este será ya probablemente el último de 2011, compruebo de primera mano el mal que sufre este país. Todos estos chicos esconden talentos particulares que a nada que encontraran un lugar en el mercado laboral para desarrollarse y potenciarse podrían conformar el caldo de cultivo de una nueva fuerza generadora de trabajo e ideas. Es duro resignarse a pensar que todos, y me incluyo, tengamos que temer o al menos guardarle un gran respeto al futuro y no descartar que tengamos que mendigar empleos en los que toda esa capacidad se verá seguramente infravalorada. Pero no voy a despedir el curso lanzándome en brazos del pesimismo. Me liberaré del corsé de los temores para ahuyentar el mal agüero e invocar la buena suerte que os deseo para la experiencia vital que queda por delante. Pero, ante todo, que no perdáis la sencillez, la capacidad de trabajo y el espíritu de superación que habéis demostrado. Con eso debería ser suficiente para triunfar. Gracias por vuestra presencia y por hacerme un poco más sabio con ella. ¡Chin, chin!

Salva

martes, 4 de octubre de 2011

Prácticas Android: ejecutando aplicaciones apk desde otras aplicaciones Android


En un post anterior vimos un ejemplo de cómo comunicar dos aplicaciones Android independientes pero, claro está, eso suponía que la aplicación invocada debía estar instalada antes de la llamada, de lo contrario, lo único que podíamos hacer era mostrar un mensaje avisando de la ausencia de la misma. En este ejemplo damos un paso más allá: ejecutar automáticamente el archivo de instalación de la aplicación externa requerida si ésta no está presente en el sistema. La actividad principal consiste en un cuadro de texto donde se escribirá la ruta de un archivo y un botón para activar el explorador de archivos OI File Manager que permita seleccionarlo de forma visual sin necesidad de escribir la ruta a mano. Si el explorador está instalado se despliega normalmente; si no, se ejecuta el archivo de instalación.

Para que esto sea posible se copia el archivo de instalación del OI File Manager en la subcarpeta /res/raw del árbol del proyecto. Esto supone la integración total de dicho archivo con el resto del proyecto. Cuando se envía un intent al explorador y éste no responde, se hace una copia temporal del archivo apk de /res/raw a la tarjeta SD (véase el método boolean guardarRawComo(String nombreFichero)). Una vez desplegado el apk en la SD ya podemos proceder a su ejecución con el envío de un nuevo intent con una acción de tipo ACTION_VIEW que activará la actividad de instalación. Al terminar y devolver el control a la actividad principal, se elimina el archivo temporal de la SD. Es importante contar el permiso de instalación de paquetes "android.permission.INSTALL_PACKAGES" declarado en el descriptor AndroidManifest.xml.

Puedes descargar el proyecto NetBeans aquí.



domingo, 2 de octubre de 2011

Practicas Android: capturando información de las llamadas entrantes


Para capturar información de las llamadas telefónicas necesitamos una clase especial de tipo BroadcastReceiver. Dentro de esta clase creamos un objeto de la clase TelephonyManager y lo registramos como servicio del sistema. Por otro lado, tenemos otra clase que deriva de PhoneStateListener que implementa el método onCallStateChanged() para detectar las llamadas entrantes. El método onReceive() de la clase BroadcastReceiver recoge el número del llamante del objeto Intent usando las siguientes líneas de código para consultar el valor de la clave incoming_number:

Bundle bundle = intent.getExtras();
String phone_number = bundle.getString("incoming_number");

Puedes descargar el proyecto Netbeans de ejemplo aquí. Ten en cuenta que esta aplicación no dispone de interfaz gráfica. Tendrás que abrir el log del terminal donde ejecutes la aplicación y a continuación abrir un segundo terminal desde el que realizar la llamada. La salida del programa se producirá en el log, tal y como indica la figura. Detectará el teléfono del llamante y cuando descuelgues registrará esta situación.

jueves, 29 de septiembre de 2011

Prácticas Android: arrastrar para desplazarse entre distintas pantallas


En esta pequeña aplicación de demostración podrás ver el uso del componente ViewFlipper que te permitirá deslizarte entre distintas pantallas. Concretamente, dispones de tres imágenes con sus respectivos títulos y podrás pasarlas arrastrando el dedo (ratón en el simulador) sobre la pantalla a la derecha o a la izquierda, o bien utilizando los botones de la parte superior. Puedes descargar el proyecto NetBeans aquí.

Prácticas Android: integrando un explorador de archivos en nuestras aplicaciones





A la hora de cargar archivos, seleccionar carpetas o indicar el destino de los ficheros que guarde nuestra aplicación resulta muy práctico contar con un gestor de archivos visual que nos permita realizar estas tareas a golpe de pulsación, sin tener que teclear largas cadenas de texto. Uno de estos gestores de libre distribución que, además, podemos integrar en nuestras aplicaciones es OI File Manager (véase http://www.openintents.org/en/node/159) Para ello, primero hay que instalar el gestor de archivos. Puedes descargar el archivo apk desde la web antes indicada o cogerlo dentro de la carpeta del proyecto de esta práctica. Para instalarlo en el emulador recuerda que debes situarte en la linea de comandos en la carpeta de herramientas de la plataforma (normalmente, c:\Archivos de Programa\Android\android-sdk\platform-tools). Después teclea :

adb install [ruta del apk]\FileManager-1.1.6.apk

donde [ruta del apk] se refiere a la carpeta donde has guardado el archivo de instalación dentro de tu equipo. Si no se producen errores durante la instalación en el menú de apps debe aparecerte un icono como el seleccionado en la figura:


Una vez instalado el gestor y aceptada la licencia de distribución, ya puedes ejecutar este proyecto de NetBeans de prueba. No es más que una app sin funcionalidad que lo único que pretende es mostrar cómo se produce la interacción con el gestor desde una actividad cualquiera. Consta de un cuadro de texto, donde se escribirá la ruta de la carpeta o archivo una vez haya sido seleccionada, y cuatro botones que te permitirán abrir el gestor para lectura/escritura de archivos y selección de carpetas. No obstante, insistimos, los botones no harán ninguna de estas tareas, simplemente escribirán la ruta de la carpeta o archivo seleccionado en el cuadro de texto. Queda como tarea opcional del alumno completar la funcionalidad de los botones o adaptar el proyecto a aplicaciones específicas.