Mostrando entradas con la etiqueta Android. Mostrar todas las entradas
Mostrando entradas con la etiqueta Android. Mostrar todas las entradas
miércoles, 24 de diciembre de 2014
Tal como podemos comprobar en Android Studio nos integra Gradle en nuestro proyecto, y ¿que es Gradle? una herramienta de automatización de procesos, tales como compilación, empaquetado, testing, despliegue etc, y todo ello desde la línea de comando y  de esta manera nos podemos evitar utilizar ANT de forma directa, ya que nos permite ejecutar tareas Ant si ya las disponemos.

¿Y como funciona? Básicamente a nuestro proyecto  incluye la estructura de directorios de Gradle independiente de nuestro proyecto.



Dentro de la estructura tenemos distintos archivos de configuración, como:
Settings.gradle -> Que nos permite configurar los módulos que componen nuestro proyecto, etc.
Build.gradle -> Para la configuración del proceso de compilación, empaquetado, firma, etc.. de nuestra aplicación, así como configurar el sdk mínimo o máximo, etc.
gradle.properties-> Establecemos las propiedades del proyecto.
Además dispone de repositorios para configurar aplicaciones pre configurados propios e incluso de Maven.

Podemos con Gradle compilar las dependencias de nuestro proyecto solo con una línea de comando, así como disponer compilaciones incrementa les sólo vuelve ha construir en caso de modificaciones del código.

Es decir nos permite configurar todo el proceso de creación de nuestro proyecto, compilación, testing, empaquetado y además de despliegue.






 Y como lo hace, utilizando un DSL(Domain Specific Lenguage) en este caso utiliza Groovy,  basado en Java evitando tener que configurar en archivos XML de tipo POM , por tanto es bastante bastante atractivo.
Además Android Studio integra una terminal de Gradle.


Y dispone de plugins que podemos instalar y facilitarnos las propias tareas de integración.

¿Y Gradle sólo se utiliza en Android Studio?  No tiene soporte para otros lenguajes e ides, incluso podemos simplemente descargarlo desde Github, descomprimirlo modificar nuestras variables de entorno y hacerlo funcionar de forma rápida siempre sin olvidar tener el JDK instalado no hay que olvidar que su lenguaje es Groovy basado en JAVA.

En definitiva otra herramienta que hay que tener en cuenta  considerando que es Open Source bajo Apache Software License (ASL) y aprender Poco a Poco ;-)

viernes, 19 de diciembre de 2014
Pues eso he estado liado durante unas semanas realizando un curso de formación en PhoneGap/Cordova, y que he aprendido que la tecnología avanza a una velocidad de crucero que requiere que nos subamos al tren para no quedarnos atrás.




En fin que es PhoneGap/Cordova es un marco de trabajo/framework,  PhoneGap es la parte de negocio y Cordova Opensource, pero al final es lo mismo y el ejemplo esta que desde la página web de Phonegap buscas documentación de la Api, y se podría decir que es la misma que  la de Cordova.

Phonegap desde mi punto de vista está orientada a desarrolladores Web, y porque digo esto porque la tecnología básicamente es un webview incrustado  es decir lo que mostramos es una Web.

Esto permite un desarrollo ágil dado que nos permite ejecutar nuestra aplicación a los distintos sistemas operativos móviles, Android, IOs, Windows Phone, de una forma rápida  y transparente hacia el desarrollador entramos en el área de las aplicaciones móviles híbridas, además nos permite interactuar de forma nativa con el SO:
  • Android -> Java.
  • IOs -> Objective- c.
  • Windows Phone -> C#
Lo cual nos abre un abanico de posibilidades más que interesante, por ejemplo en algunos casos que necesitamos acceder algún sensor específico que desde el webview no permita podemos instalar plugins en nativo que nos permite acceder al Api , o simplemente si queremos que no nos pida permisos desde el webview cuando por ejemplo queremos acceder al sistema de Geolocalización lo podemos realizar utilizando los Plugins.
PhoneGap/Cordova dispone de una serie de plugins soportados, así como más de 620 plugins que podemos descargar desde la página web de Cordova,, o bien en caso necesario podemos desarrollar nuestros propios plugins.

Bien y como estructuramos un proyecto de estas características, y aquí una vez más porque tenemos que estar en constante reciclaje.

Dado que nuestra aplicación ejecuta una html local, necesitamos estructurar la aplicación para que sea más aproximada a la experiencia de una aplicación nativa, y para ello debemos evitar lo posible la transiciones entre páginas por ello crearemos un SPA (Single Page Application) y además adaptado al tamaño de los dispositivos por tanto debe ser Responsive  y todo ello lo conseguimos con HTML5.

Después necesitamos una herramienta que nos permita modificar el DOM de nuestra web, por ello debemos utilizar javascript dado que es el lenguaje de programación soportado por nuestro webview de forma nativa, y aquí se abre un gran abanico de posibilidades dado la cantidad de frameworks existentes desde JQuery , hasta el más reciente Angularjs.  Así como cualquier otra librería javascript que necesitemos para el desarrollo de nuestra web.

Indiscutiblemente CSS3  o cualquier framework CSS tipo Less  , Bootstrap o Foundation

Todo esto nos obliga el tener que armarnos con una serie de de herramientas que nos facilite el trabajo como Yeoman   para que nos cree la estructura del proyecto, Grunt para la integración de las tareas en javascript, o Bower  para la gestión de las librerías js que necesita nuestro proyecto.

Y sobre todo por debajo de todo tenemos a Node.js

En fin como he comentado al principio necesitamos seguir avanzando e ir reciclándonos, en mi caso voy a ir poco a poco y ordenando código ;-) 
sábado, 15 de noviembre de 2014
Hablar de Shazam es hablar de uno de los grandes dentro de las aplicaciones Móviles tanto para Android como para el sistema operativo de Apple, y lo podemos ver por ejemplo como una de las aplicaciones más descargadas de la Google App Store.



Shazam  fue una de las pioneras en integrar una tecnología de reconocimiento de audio para realizar búsquedas por lo que se denomina huellas digitales de audio a partir del espectrograma. 
Gracias a este tipo de tecnología  realizan la magia y que cautiva a millones de usuarios de reconocer cualquier canción con sólo 10 segundos de audio y reportarte toda la información necesaria  sobre la misma así como la posibilidad de ver vídeos en youtube o comprar el disco del mismo.  En mi caso particular recuerdo la cara de asombro al verla por primera vez que era capaz de reconocer incluso el audio de la propia televisión. 
La idea es sencilla en su concepto y básicamente es hacer la vida fácil al usuario, cuantos de nosotros oímos una canción en la radio, televisión e inclusive en los altavoces de un centro comercial y nos gustaría saber quien es el autor, cantante o simplemente volverla a escuchar, pues Shazam nos facilita toda esa información.
La parte complicada de algoritmos y base de datos masivas ya lo desarrollan la gente de Shazam, además también fue una de las primeras compañías en abrir un nicho de negocio único y aquí esta la clave de su éxito ya que se interesaron por ella otras compañías importantes de la era de Internet como Yahoo y que es participe de la misma de ahí el crecimiento exponencial.

¿Hacia donde se dirige Shazam? A ser una de las aplicaciones con una de las mayores base de datos de audio del mundo, además ha exportarse a otros dispositivos, tales como la TV, o plataformas como Windows phone o dispositivos de Escritorio como Windows 8.
Aquí tenemos un vídeo de como funciona.



¿Pero tiene competencia? Si existen otras aplicaciones similares, de ellas la más importantes son:

  • Soundhound :Disponible para las principales plataformas móviles, esta práctica aplicación te ayudará a descubrir qué canción está sonando en ese momento, quién la está cantando y a qué disco pertenece. Pero ahí no se queda, pues también te muestra las letras de las canciones que reproduzcas en tu dispositivo móvil, integra vídeos de YouTube, tiene soporte para Rdio y Spotify y permite compartir en Facebook y Twitter lo que estás oyendo.
  • MusikMatch: Su función principal es ofrecerte letras de canciones, que se muestran en sincronía con la música, pero para ello incorpora la posibilidad de reconocer una canción si acercas tu teléfono a la fuente de la música. Además, es compatible con varios reproductores, como Spotify, Google Music o Samsung Music Player.


En definitiva a Shazam le queda mucha trayectoria y no me sorprendería con nuevas funcionalidades a la aplicación que nos deje con la boca abierta.

Si quieres más información de como funciona Shazam te aconsejo seguir este enlace 

Via:
http://www.shazam.com/
http://bitelia.com/2013/10/alternativas-a-shazam
http://es.wikipedia.org/wiki/Shazam


miércoles, 17 de septiembre de 2014
Como todo lo que reluce no es oro, hoy siguiendo la estela de los post anteriores:
  1. Conociendo Android (Parte I)
  2. Conociendo Android (Parte II)

 hablaremos de Android vamos a ver que problemas tiene ,y cual es su futuro inmediato.


Fragmentación

La fragmentación se produce cuando existen diversas  versiones del sistema operativo y los dispositivos o fabricante no actualicen sus dispositivos, con lo que disponemos de las diversas versiones de Android en el mercado donde  no todos disponga de las últimas actualizaciones y mejoras dle mismo.
La fragmentación tiene muchas caras. Para el usuario final significa ser incapaz de instalar y emplear ciertas aplicaciones y propiedades cuando su versión de Android ha quedado desfasada. Para los desarrolladores significa que tener tener cuidado a la hora de originar aplicaciones para dispositivos Android. Las que escriben para versiones antiguas también suele funcionar en las nuevas, aunque al contrario no siempre es cierto. Obviamente, algunas de las propiedades de las últimas versiones publicas no estarán disponibles en las anteriores, como por ejemplo, la capacidad de trabajar con pantallas multitáctiles, así pues los desarrolladores están obligados a elegir y o bien generar código para cada versión de Android.


Podemos observar en Abril de éste año la fragmentación existente y hoy por hoy todavía aunque como un número muy pequeño existe gente con la versión 2.2 y un número importante con la versión 2.3.X, por ello nos podemos hacer una idea de la fragmentación existente de dicho sistema operativo.


Futuro Inmediato Android

Aunque nos encontramos una versión mas reciente de Android con la 4.4 KitKat, el futuro ya tiene un nuevo nombre y es Android L entre sus mejoras:

  • Cambio de la máquina virtual Dalvik por ART, aunque la versión 4.4 permite elegir, con ART la mejora de rendimiento es importante dado que yo no hace uso del compilador JIT, sino que utiliza uno de tipo AOT (ahead-of-time). Este tipo de compilador ya no debe ir traduciendo el código según se va jeecutando, sino que se realiza una única traducción en el momento de la instalación de la aplicación. Asi, l oque se ejecuta es un código directamente entendible por la máquina virtual,por lo que se ejecutará de forma mucho más rápida, fluida y mejorando mucho el rendimiento, además requiere de un menor uso de la CPU, lo que lleva asociado un menor gasto de batería.
  • Modificaciones en la interfaz, donde Matias Duarte responsable del mismo ha mejorado el mismo por completo.
  • Usabilidad y Accesibilidad, introduce nuevos gestos táctiles, animaciones y nuevo sistema de notificaciones.
  • Android en todas partes, y esto ya es una realidad ya disponemos del Android Wear, tablets, Google TV, ChromeCast, y en un futuro tendremos Android Auto, una extensión para dipsoner de los servicios y aplicaciones de Google ne nuestro vehículo.
  • La integración de Android Extensión Pack, que será el encargada de que la potencia gráfica en juegos se vea mejorada, ampliando la funcionalidad de OpenGL ES 3.1.
En definitiva el ecosistema de Android crece con la tecnología aun quedan muchas cosas por ver , como se desarrolla y como corrigen el problema de la fragmentación.

Os dejo el vídeo del Google I/O 20014- Keynote donde se muestran todas las novedades de éste sistema Operativo.





Bueno con esto acabo la introducción Android, espero que os haya sido de interés, ahora ya conocemos un poco mejor la plataforma y podremos entender mejor el funcionamiento de la misma.

Un saludo.









martes, 16 de septiembre de 2014
En el anterior Post vimos un poco la historia de Android hoy vamos a ver como se estructura internamente, sin morir en el intento.
Para empezar con Android es importante conocer como esta estructurado el sistema operativo, por ello debemos tener en cuenta que Android no es una distribución de Linux para dispositivos móviles, Android es un plataforma que se programa a través de Java , y por eso se desarrolla desde un punto de vista de Alto nivel, aún así la distribución permite acceder a las capas más bajas mediante el uso de librerías, como por ejemplo nos permite acceder a los componentes de hardware de los dispositivos, las diferentes capas se podrían clasificar.




Desde éste punto de vista Android posee varias propiedades interesantes:
  • Una API para acceder a los periféricos, GPS, cámara, etc.
  • Un conjunto de librerías gráficas para la programación 2D y 3D.
  • Un framework para aplicación que ofrece un conjunto de API con las que crearemos diferentes tipos de aplicaciones. También permite reutilizar y sustituir componentes proporcionados por la plataforma y por aplicaciones desarrolladas por terceros..
  • Soporte multimedia para formatos de imagen, vídeo y audio como Ogg Vorbis, MP3, MPEG-4,H.264 y PNG. Incluso hay uno especial para reproducir efectos sonoros.
La arquitectura de Android se constituye de una serie de componentes cada uno ellos se basa en los elementos de la capa inmediatamente inferior, a continuación un esquema de los principales componentes de Android.


Veamos las más importantes.

El kernel
Empezando desde la parte inferior de la pila, el Kernel de Linux es el responsable de suministrar los controladores básicos de los componentes de hardware, además es el encargado de la gestión de procesos, memoria , red, etc.
El núcleo actúa como una capa de abstracción entre el hardware y el resto de capas de la arquitectura. De esta forma también nos evitamos el hecho de quebrarnos la cabeza para conocer las características del dispositivo.


Entorno de Ejecución (Dalvik)
El entorno de ejecución se encuentra encima del Kernel y es el responsable ejecutar las aplicaciones. Cada una de ellas se ejecuta con su propio proceso a través de la máquina virtual Dalvik.
Como se puede observar en el diagrama anterior, el entorno no se considera una capa en si mimo, dado que también está formado por librerías.
La máquina virtual Dalvik es la responsable de ejecutar los programas en un formato bytecode DEX, dicho formato se desarrolló  para que apenas emplease memoria, comparado con los archivos .class clásicos de Java.
Además incorpora un recolector de basuras (GC) .

Las librerías del sistema
Son otra capa que se sitúa justo sobre el kerner y las componen las bibliotecas nativas de Android, este grupo de librerías C/C++, se encargan de las tareas de cálculo pesadas, como el dibujo de gráficos, la reproducción de audio y el acceso a la base de datos, y tienen como objetivo proporcionar funcionalidad a las aplicaciones para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan a cabo de la forma más eficiente, entre ellas nos podemos encontrar:
  • Skia Graphics Library (Skia).
  • OpenGL for embedded Systems.
  • etc.


Framework de aplicaciones
Es el responsable de asociar las librerías del sistema y el entorno de ejecución, los desarrolladores emplearán la API de Java para genera aplicaciones para este framework, y nos encontramos los siguientes:

  • Activity Manager. Se encarga de administrar la pila de actividades de nuestra aplicación así como su ciclo de vida.
  • Windows Manager. Se encarga de organizar lo que mostrará en pantalla.
  • Content Provider.  Es la responsable de crear una capa que encapsual los datos que se compartirán entre aplicaciones para tner control sobre como se accede al informaicón.
  • Views. Son los que nos ayudará a contruir las interfaces de usuario(botones, cuadros det texto, etc..)
  • Notification Manager. Engloba los servicios de notificar al usuario cuando algo requiera su atención, mediante alertas en la barra de estado, activando vibraciones, etc.
  • Package Manager. Permite obtener información sobre los paquetes instalados en el dispositivo, además de gestionar la instalación nuevos paquetes, entendiendo como paquete las aplicaciones Android que contienen el archivo .apk que a la vez incluye los archivos .dex con todos los recursos y archivos adicionales que necesite la aplicación.
  • Telephony Manager. Con esta libería podemos realizar llamadas o enviar y recibir SMS/MMS 
  • Location Manager. Permite determinar la posición geográfico del dispostivo Android, mediante GPS, etc.
  • Cámara. Para poder acceder a la camara o camáras, para tomar fotografías, etc.
  • Sensor Manager. Nos permite manipular los senosres del dispositivo, como el acelerómetro, de presión de proximidad, etc.
  • Resource Manager. Con esta librería podremos gestionar todos los elemnetos que forman parte de la aplicación y que están fuera del código.
  • Multimedia. Permiten reproducir y visualizar audio, video e imágenes en el dispositvo.


Aplicaciones
 Es la última capa que incluye todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como los que no.



En fin espero que haya sido interesante nos vemos con en la próxima y último post. 


lunes, 15 de septiembre de 2014
Como cualquier desarrollador me interesa conocer el sistema para el cual vamos a desarrollar, un poco su historia, como se estructura por dentro es decir las diferentes capas, y frameworks que dispone, etc.. Ahora mismo estoy inmerso en Android, y por ello quiero dar unas pocas pinceladas  sobre el mismo.






Un poco de historia.
Android se gesto cuando Google compro una pequeña empresa llamada Android Inc, allá por el año 2005, era la apuesta para poder entrar en el mundo de los dispositivos móviles y entrar en competencia con iOS antes conocida como Phone OS y BlackBerry, así que en el año 2008 Google publicó la versión 1.0 de Android.
Como Androdi es un sistema escrito en código abierto, los fabricantes de dispositivos móviles apenas se han encontrado con trabas a la hora de recurris a esta plataforma y aquí una de las claves de su éxito, ya que los mismos pueden ajustarlos a la potencia de sus dispositivos, sirviendo tanto para dispositivos de última generación, como aquellos más económicos.
Por ello a finales del año 2007 Google creo la Open Handset Alliance (OHA), donde se involucraron compañías tan importantes como HTC, MOTOROLA, QUALCOM Y NVIDA, que desarrollaron estándares abiertos para sus dispositivos.
Cabe recordar que el propio Android está basado en la versión 2.6 del kernel de Linux y se puede usar gratuitamente tanto para fines comerciales como particulares, por ello muchos miembros de OHA , generan versiones de Android personalizadas para sus dispositovs, como en su  caso el HTC Sense (HTC), u otros programadores han podido generar ROM`s tan importantes como Cyanogen que ha conseuido traer las últimas y mejores novedades a todos los dispositivos Android.

Desde su aparición en el años 2008, Android ya ha recibido 10 Actualizaciones. Totas ellas tienen nombre de postres, a excepción de Android 1.1. Cada versión ha añadido una nueva funcionalidad a la plataforma Android que han representado avances para los desarrolladores, vamos a ver cada una.

ANDROID 0.X, primeros pasos

Un primer sistema operativo no orientado a pantallas táctiles , más parecido a una BlackBerry que al Android que conocemos hoy en día, podemos verlo en funcionamiento en el siguiente vídeo donde el propio Larry Page habla sobre el.






ANDROID 1.0/1.1

El primera que introdujo las Google Aps, así como el Android Market, lo que hoy conocemos como Google Play.


ANDROID 1.5 CUPCAKE.

La primera versión que recibe el nombre de un postre, entre sus novedades cabe destacar  el teclado táctil, el panel de notificaciones y permitió la utilización de Widgets de terceros, así como admití las librerías nativas de las aplicaciones Android, algo que, hasta la fecha, sólo se podía hacer si se escribía en Java. El código nativo ha representado una gran ayuda en situaciones donde lo más importante era el rendimiento del sistema.


ANDROID 1.6 DONUT.

Con esta actualización se permitía trabajar con diferentes resoluciones de pantalla, así como diversos tamaños de pantalla, soporte CDMA y el TTS, así como la corrección de bugs.

ANDROID 2.0/2.1 ECLAIR.

Fue la primera versión que presentó la capacidad de trabajar con dispositivos que tuviesen pantallas multitáctiles, como novedades destacables introducía  el autobrillo, mejoras en la cámara, deslizar para descolgar, fondos de pantalla animados, mejoras en las apps de alarma, calculadora y galería.

ANDROID 2.2 FROYO.

Como novedad añadió la posibilidad de la compilación en tiempo real (JIT) a la máquina virtual (VM) Dalvik, lo que permitió utilizar todas las aplicaciones Java en Android. La velocidad que aportaba la compilación JIT a las aplicaciones Android fue considerable. Dependiendo de la situación podría, llegar a multiplicarla por cinco, además de la inclusión del motor V8 javascript en Chrome, también inserto la barra de búsqueda en el escritorio, y soportar Flash.

ANDROID 2.3 GINGERBREAD.

Como principal novedad introdujo un recolector de basura a la máquina virtual Dalvik, así como el panel de notificaciones se modificó y el "copiar y pegar" se resalto para facilitar su uso.

ANDROID 3.0 HONEYCOMB.

El cambio definitivo para adaptarse a las tablets , y donde el botón de mutlitarea empezó a cobrar importancia respecto al menú.

ANDROID 4.0 ICE CREAM SANDWICH.

Uno de los grandes respecto a cambios de diseño, cambia del Android Market a Google Play, se inserto la pestaña de Widgets, NFC recibió soporte total y el salto de Google a la apuesta en la venta de dispositivo móviles.


ANDROID 4.1 - 4.3  JELLY BEAN.

Es la versión más extendida  y utilizada de Android, aparece los servicios de Hangouts y se añadió Google Now, a la vez se integraron las Goole Play services, así como se mejoró todo el sistema notificaciones.

ANDROID 4.4 KITKAT.

Entre los cambios más importantes que el Project Svelte permitió que dispositivo con 512 MB de RAM pudieran ejecutar Android sin problemas, se introducen los comandos por voz.
A la vez Google lanza al mercado sus flamantes Google Nexus 5, 7 y 10








En fin los cambios han sido muchos y todavía queda por venir teniendo en cuenta todo el ecosistema de Android, para más información y extensa os recomiendo la siguiente página:





Espero que haya sido una introducción interesante... sin ser un plastaaaa ;-)..