Android: Reproducir vídeo desde URL de Google Drive usando VideoView

Standard

google_drive_logo_3963Qué tal. En el post de hoy, retomaré un tema visto antes en este mismo blog pero en una faceta diferente a la del ejemplo anterior. Hablamos antes sobre como reproducir un vídeo en la vista VideoView de Android, pero en aquella ocasión, para fines prácticos, solo se reprodujo un vídeo previamente añadido a los resources de nuestra aplicación.

Hace unas semanas uno de nuestros lectores solicitó ayuda sobre cómo reproducir un vídeo mediante una URL de Google Drive directamente en la vista VideoView, y me parece una buena idea compartir con ustedes la solución que se encontró para ese caso específico. Para esto, se tomó como referencia una respuesta de StackOverflow consultada para la decodificación de la URL en cuestión.

Entonces, sin mayor preámbulo, pasemos a la implementación de nuestro ejemplo. Pueden encontrar en GitHub el CÓDIGO COMPLETO DEL PROYECTO, ya que en el presente post sólo se mostrarán las partes importantes del mismo.

Continue reading

Android: Conexión simultánea con múltiples dispositivos BLE + sensor Acelerómetro

Standard

 

Imagen tomada de: http://pocketnow.com/2013/01/17/bluetooth-low-energy

Imagen tomada de: http://pocketnow.com/2013/01/17/bluetooth-low-energy

¡Qué tal, gente! Después de un algún tiempo sin publicar, traigo para ustedes este ejemplo práctico y resumido (aunque usted no lo crea) de una implementación a la medida que fue realizada recientemente para un proyecto en el que me encuentro colaborando.

La situación—brevemente explicada— es esta: es necesario, mediante una app Android para móvil, conectarse como mínimo con 3 dispositivos BLE 4.0 vestibles de manera simultánea y leer los datos de sus diversos sensores en tiempo real. Los dispositivos en cuestión no cuentan con el sistema operativo Android instalado.

Para fines prácticos, en el presente ejemplo sólo se leen y muestran los datos del sensor acelerómetro de los dispositivos BLE 4.0 utilizados. Cabe destacar, además, que se consiguió conectar con hasta 4 dispositivos simultáneamente, esto ya que no se contaba con una cantidad mayor de los mismos. Por lo tanto, me aventuro a conjeturar que es probablemente viable el conectar con más de 4 dispositivos sin problema mediante esta aplicación.

Y bien, sin mayor preámbulo, pasemos a la descripción de las clases y layouts necesarios para construir nuestra aplicación de prueba. Pueden encontrar en GitHub el CÓDIGO COMPLETO DEL PROYECTO.

Continue reading

Realizar y restaurar el backup de una base de datos PostgreSQL usando terminal

Standard

PostgreSQL logo

Qué tal. En el post de hoy veremos cómo realizar un dumpbackup de una (o varias) bases de datos PostgreSQL y restaurarlo de manera práctica, utilizando terminal.

De la documentación de PostgreSQL en su versión 9.5:

“La idea detrás del método dump es generar un archivo con comandos SQL que, al ser usado como feed back en el servidor, recreará la base de datos en el mismo estado en el que estaba en el momento del dump. PostgreSQL provee el programa pg_dump para este propósito.”

Continue reading

Android: Repetir un include y encontrar su ID con un string utilizando ciclos

Standard

 

Qué tal, gente, en esta ocasión volvemos con más Android “tricks”.

¿Les ha pasado que se topan de repente con la necesidad de construir un layout que presenta algún componente custom de manera repetitiva y necesitan solucionarlo sin intención de hacer un copy-paste redundante? Pues bien, a mí me pasó hace poco tiempo y, aunque existen varias alternativas diferentes para dar solución a este problema, comparto con ustedes una alternativa que apliqué y que en lo particular considero me ahorró algo de tiempo y esfuerzo. Continue reading

Instalación de Jenkins como daemon en Mac OS X

Standard

 

logo-title

 

Qué tal, gente. En mi post anterior vimos un tutorial completo sobre la instalación y configuración de Jenkins en Ubuntu 14.04, el cual sería conveniente se tomara como referencia antes de leer esta publicación, para tener un entendimiento más amplio de lo que es en general Jenkins y algunos de sus usos básicos. Ya que cada sistema operativo es diferente en cuanto al proceso de instalación de esta herramienta en particular, hoy veremos algo un poco diferente en cuanto a su instalación en Mac OS X.

En esta ocasión comparto con ustedes mi primera experiencia al intentar instalar y configurar Jenkins de manera local, ésta  se trataba de una prueba de concepto en la cual mi cometido era lograr un build automático de una aplicación Android básica, mediante el poder de Jenkins, claro está. Pero resulta que no suele ser tan fácil como parece, o por lo menos en mi caso no lo fue.

Después de haber completado la instalación de manera “exitosa”, me topé con que al momento de configurar Jenkins para ejecutar builds automáticos para Android, tuve un problema persistente en cuanto a la localización del Android SDK, indispensable para generar el APK resultante al construir la aplicación. Intenté diversas soluciones que encontré en blogs, foros y demás, fracasando en cada intento, hasta que tomé la difícil pero muchas veces necesaria decisión de desinstalar por completo Jenkins y volver a comenzar desde cero. Al comenzar de nuevo seguí el tutorial  que dejo como referencia al final de este post, el cual fue justamente la instalación limpia que necesitaba para poder realizar el final de la prueba y generar un APK de mi aplicación Android.

Sin mayor preámbulo, comparto con ustedes la alternativa que después de bastante sufrimiento me dio el resultado esperado.

Continue reading

Instalación y configuración de Jenkins en Ubuntu 14.04

Standard

 

logo-title

Qué tal. En esta ocasión veremos un tutorial que nos ayudará a dar nuestros primeros pasos en el uso de esta útil herramienta, acerca de la cual les hablaré un poco a continuación.

De acuerdo con lo que nos dice su página oficial, Jenkins es, en pocas palabras:

“El servidor de automatización de código abierto líder. Construido en Java, este provee cientos de plug-ins para ofrecer soporte a la construcción, el testeo, el deploying y la automatización de virtualmente cualquier proyecto de software.”

Jenkins es un servidor de integración continua multi-plataforma, el cual, utilizado de la manera correcta, ayuda a los desarrolladores a aumentar su productividad. Es un sistema que se ejecuta en un servidor, el cual puede considerarse un contenedor de servlets.

Entre otras muchas cosas, éste nos permite construir y testear nuestros proyectos de software de manera continua y automatizada, volviendo más fácil la integración de cambios en el proyecto y el conseguir compilaciones actualizadas con la frecuencia que sea necesaria. Además de esto, soporta herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase, también puede ejecutar shell scripts y programas batch de Windows.

Ahora que sabemos esto, podemos comenzar con la instalación y configuración de nuestro propio servidor Jenkins.

Continue reading

Introducción a Git en Terminal y SourceTree (Parte 3)

Standard

Git logo

Qué tal, gente. En la presente y última entrega de la “serie”: Introducción a Git en Terminal y Source Tree (enlaces aquí: Parte 1 y Parte 2). Hablaremos sobre lo indispensable que es necesario conocer para trabajar en repositorios que incluyen a varios colaboradores de un equipo de desarrollo.

Entre las principales tareas que nos topamos al llevar a cabo esta labor, tenemos: realizar conexiones remotas con repositorios centrales, importar commits de ramas en repositorios remotos, exportar los cambios realizados al proyecto en nuestra copia local del repositorio, entre otros.

Bien, veamos un poco de los comandos y opciones que nos facilitarán dichas tareas. Continue reading

Introducción a Git en Terminal y SourceTree (Parte 2)

Standard

Git logo

¡Qué tal! En esta entrega veremos cómo guardar los nuevos cambios realizados en nuestro repositorio, nos adentraremos un poco en la manera de estar al tanto del estado actual de los archivos en nuestro repositorio, y también sabremos cómo revisar versiones antiguas del proyecto.

Bien, sin mayor preámbulo, vamos entrando en materia. Continue reading

Introducción a Git en Terminal y SourceTree (Parte 1)

Standard

Git logo

Qué tal. En esta ocasión comparto con ustedes algo de información útil sobre una herramienta que sin duda debe estar salvando miles de vidas al día: Git.

Nota: Antes de leer este post es totalmente recomendado estar al tanto de en qué consisten los Sistemas de Control de Versiones, sobre los cuales se habló con anterioridad en el post del enlace.

Ahora bien, para comenzar, es indispensable saber de qué hablamos al referirnos a un repositorio. Un repositorio —en el contexto de los sistemas de control de versiones— es una estructura de datos en disco que almacena metadatos para un conjunto de archivos y/o estructuras de directorios. Dependiendo de si el sistema de control de versiones es distribuído (por ejemplo, Git o Mercurial) o centralizado (Subversion o Perforce, por ejemplo), todo el conjunto de información en el repositorio será duplicado en el sistema de cada usuario, o será mantenido en un solo servidor. Algunos de los metadatos que suele contener un repositorio incluyen, entre otras cosas:

  • Un registro histórico de cambios en el repositorio.
  • Un conjunto de objetos “commit”.
  • Un conjunto de referencias a objetos commit, llamados “heads”.

Y ahora que sabemos esto, 

¿Qué es Git?

Continue reading

Genymotion: Emula de manera más rápida y eficiente tus apps Android

Standard

 

Genymotion logo

 

Qué tal, gente. Actualmente nos encontramos con una abrumadora diversidad de dispositivos Android en el mercado, ante lo cual es necesario desarrollar aplicaciones capaces de dar soporte a todos ellos… o en su defecto, a la mayor cantidad posible. No en todos los casos es viable ni práctico el contar con muchos dispositivos físicos de características diferentes (sea tamaño de pantalla, resolución, hardware, versión de Android, etc.) para realizar pruebas de apariencia y rendimiento en ellos, por lo cual es una común necesidad el uso de emuladores para llevar a cabo esta tarea.

Imagino que todo Android developer, si pretende autodenominarse tal, debe conocer el tortuoso camino al noveno círculo del infierno que puede llegar a representar el tratar de emular una aplicación contando con recursos de hardware limitados… y valiéndose solamente del emulador default de Android Studio.

Con esa dantesca situación como antecedente, en esta ocasión comparto con ustedes una herramienta bastante útil y práctica para el desarrollo y testeo de aplicaciones Android que, gracias a su uso simple y respuesta notablemente rápida (más rápida que la mayoría de los dispositivos Android), se ha formado ya una considerable cantidad de seguidores que no dudan (evidentemente me incluyo) en recomendarla y hablar sobre los beneficios prácticos que ésta nos ofrece.

Continue reading