viernes, 29 de mayo de 2015

Componentes Android



COMPONENTES  DE UNA APLICACIÓN ANDROID

L
as aplicaciones Android se construyen mediante bloques esenciales de componentes, cada uno de los cuales existe como una entidad propia y desempeña un papel específico; cada elemento es una pieza única que ayuda a definir el comportamiento general de la aplicación. Es importante mencionar que algunos de estos elementos son el punto de entrada para que los usuarios interactúen con la aplicación y en muchos casos veremos que unos elementos dependen de otros.

· Activities (actividades).
Es el bloque encargado de construir la interfaz de usuario. Puedes pensar en una actividad como el análogo de una ventana en una aplicación de escritorio. En las actividades recae la responsabilidad de presentar los elementos visuales y reaccionar a las acciones del usuario.

· Intents (intenciones). 
Son los mensajes del sistema que se encuentran corriendo en el interior del dispositivo. Se encargan de notificar a las aplicaciones de varios eventos: cambios de estado en el hardware (ej. cuando se inserta una SD al teléfono), notificaciones de datos entrantes (ej. cuando llega un SMS) y eventos en las aplicaciones (ej. cuando una actividad es lanzada desde el menú principal).

·Content providers (proveedores de contenido). 
Este elemento ofrece un conjunto de datos almacenados en el dispositivo para que se puedan accesar y compartir por varias aplicaciones. Nosotros podemos guardar datos en archivos del sistema, en una base de datos en SQLite, en la web o en cualquier otro lugar de almacenamiento persistente a la que la aplicación pueda tener acceso. A través del proveedor de contenido, otras aplicaciones pueden consultar o incluso modificar los datos (solamente si el proveedor de contenidos de esa aplicación lo permite).


· Servicies (servicios). 
Las actividades, las intenciones y los proveedores de contenido explicados arriba son de corta duración y pueden ser detenidos en cualquier momento. Por el contrario, los servicios están diseñados para seguir corriendo, y si es necesario, de manera independiente de cualquier actividad. El ejemplo más simple para aterrizar este concepto es el del reproductor de música, que es un servicio que puede mantenerse corriendo mientras mandamos un SMS o realizamos alguna otra función en nuestro teléfono.





Componentes de una Aplicación Android


Componentes de una Aplicación Android








Esta máquina virtual corre por encima de un kernel Linux 2.6, el cuál le permite, entre otras cosas, delegar las tareas relacionadas con la gestión de hilos y memoria a bajo nivel. También ha sido optimizada también para que haya múltiples instancias suyas funcionando con un impacto muy bajo en el rendimiento de la memoria del dispositivo. 
Este aspecto de usar varias máquinas virtuales se pensó para proteger a las aplicaciones, de forma que el cierre o fallo inesperado de alguna de ellas no afecte de ninguna forma a las demás.
Al ser una máquina virtual interprete, ejecuta archivos en el formato Dalvik Ejecutable (*.dex), un formato optimizado para el almacenamiento eficiente y ejecución maleable en memoria. Su objetivo fundamental es el mismo que cualquier máquina virtual, permite que el código sea compilado a un bytecode independiente de la máquina en la que se va a ejecutar, y la máquina virtual interpreta este bytecode a la hora de ejecutar el programa. El hecho de no utilizar la máquina virtual de Java (aparte de posibles aspectos legales y otros que podamos imaginarnos) es la necesidad de optimizar al máximo los recursos y enfocar el funcionamiento de los programas hacia un entorno de escasos recursos de memoria, procesador y almacenamiento como es el que se tiene en los teléfonos.
El interprete toma los archivos generados por las clases Java y los combina en uno o más archivos ejecutables Dalvik (. dex), los cuales a su vez son comprimidos en un sólo fichero .apk (Android Package) en el dispositivo. 
De esta forma, reutiliza la información duplicada por múltiples archivos .class, reduciendo así la necesidad de espacio (sin comprimir) a la mitad de lo que ocuparía un archivo 

Sisitemas Operativos

Sistemas operativos para dispositivos móviles

El sistema operativo destinado a correr en un dispositivo móvil necesita ser fiable y tener una gran estabilidad, ya que incidencias habituales y toleradas en ordenadores personales como reinicios o caídas no tienen cabida en un dispositivo de estas características.


   Symbian
Symbian es un sistema operativo para dispositivos móviles desarrollado por Psion, Nokia, Motorola y Ericsson. El principal objetivo de estas compañías era el de crear un nuevo y compartido sistema operativo que estuviera perfectamente adaptado a los teléfonos móviles del momento, y fuese además capaz de competir con Palm OS y Windows Mobile. La primera versión de Symbian, basada en el sistema EPOC de Psion, se lanzó en 1998. 
    

 Windows Mobile
Windows Mobile es un sistema operativo diseñado por Microsoft y orientado a una gran variedad de dispositivos móviles. En realidad, Windows Mobile representa una particularización de otro gran sistema de Microsoft llamado Windows CE.
Actualmente, Windows CE en su versión 6.0, es una gran colección de módulos que permiten construir un completo sistema operativo, permitiendo así seleccionar y configurar aquellos módulos que son realmente necesarios para un determinado dispositivo o una aplicación. 
     

Android
El sistema operativo número uno en cuanto a popularidad. Con una cuota de mercado cercana al 85% el sistema operativo de Google se caracteriza por ser abierto y disponible para cualquier fabricante interesando en utilizarlo para sus dispositivos móviles.

Esta disponibilidad ha creado sin embargo una gran fragmentación, pudiéndose encontrar innumerables dispositivos de miles de formas y funcionalidades con todas las versiones de Android existentes. Además la posibilidad de que cada fabricante incluya su propia capa sobre el original, propicia que la experiencia de usuario no sea siempre la deseada por Google y las actualizaciones tarden en llegar.

   
 Windows Phone
Microsoft que está realizando un gran esfuerzo financiero para posicionar Windows Phone como una tercera opción interesante para los consumidores después de que llegara tarde a la fiesta de los smartphones. Su alianza con Nokia y su posterior compra le ha ayudado a darse a conocer mejor e ir arañando cuota de mercado a los dos líderes. Los últimos datos hablan de un 2,5% a nivel mundial.
    

Firefox OS
Un sistema operativo basado en HTML5 con núcleo Linux, de código abierto. Desarrollado por Mozilla Corporatión con apoyo de empresas como Telefónica. El sistema operativo está basado en Linux y usa la tecnología de Mozilla, Gecko. Se basa en estándares abiertos como por ejemplo HML5, CSS3 y JavaScript.
Pensado para ser un sistema operativo realmente abierto, a diferencia de Android, donde Google controla ciertos aspectos del sistema. 
    


Blackberry
Otro sistema operativo basado en Linux pero en esta ocasión bajo la famosa firma Ubuntu. Presentado en el 2013, se trata de un proyecto de Canonical. En la actualidad varias empresas están desarrollando terminales para este sistema operativo, entre ellas la española Bq.

   
Ubuntu Touch
Ubuntu Touch utiliza las mismas tecnologías de la versión de escritorio, por lo que ambas comparten apps sin problemas de compatibilidad. Dispone también de algunas de las aplicaciones más populares como Facebook y Youtube.
    

Tizen
Sistema operativo móvil, también basado en Linux, patrocinado por Linux Fundation y Fundación LiMo. Se ha desarrollado a partir de la plataforma Linux de Samsung. Aunque en un principio fue presentado como un SO de código abierto, Tizen 2 funciona con un sistema de licencias no abiertas. El SDK completo fue publicado bajo licencia de Samsung de código no abierto.



Metodos en java

Métodos en Java
  Un método en Java es un conjunto de instrucciones    definidas dentro de una clase, que realizan una    determinada tarea y a las que se invocan mediante un      nombre.

   
 Algunos métodos que se utilizan:
        - Math.pow()
        -Math.sqrt()
        -Character.isDigit()
        -System.out.println();



Utilizando métodos:

-Se pueden construir programas modulares.
-Se consigue la reutilización de código. En lugar de escribir el mismo código repetido         cuando se necesite,      
 por ejemplo para validar una fecha, se hace una llamada
al método que lo realiza.
-En Java un método siempre pertenece a una clase.
-Todo programa java tiene un método llamado main. Este método es el punto de entrada
         al programa y también el punto de salida…

Interfaz de Usuario Android

Elementos de la interfaz de usuario de una aplicación Android

·¿Qué es un Layout?

Un layout es un objeto que representa el espacio contenedor de todas las vistas (Views) dentro de la actividad. En él se define la estructura y el orden de los elementos para que el usuario pueda interactuar con la interfaz. Lógicamente se representan con subclases Java que heredan de la clase ViewGroup.
Para definirlos se escribe un documento XML que contenga como nodo raíz algún tipo de layout y luego incluir en su interior los elementos. 


Android Studio permite generar automáticamente el código de los archivos XML a través del panel de Diseño.








·  Los Botones en Android

En el apartado anterior hemos visto los distintos tipos de layout con los que contamos en Android para distribuir los controles de la interfaz por la pantalla del dispositivo. En las próximas elecciones vamos a hacer un recorrido por los diferentes controles, y en esta concretamente los de tipo Button (Botón) que pone a nuestra disposición la plataforma de desarrollo Android.
Vamos a ver los diferentes tipos y cómo podemos personalizarlos, Android en este caso nos proporciona tres tipos de botones:


 Button:
 ToggleButton:
ImageButton:


·         Etiquetas en android

En Java, la creación de una etiqueta puede hacerse mediante la declaración de una
instancia de un objeto TextView. Sin embargo, la práctica más común es la de crear los layout a través de archivos XML, y para ello, necesitaremos incluir el elemento <TextView android: text=”[Mi etiqueta]“/> si queremos incluir etiquetas con su texto correspondiente en la GUI.
Gracias a las referencias que podemos hacer a algún recurso en lugar de otro según las configuraciones que haga el                                                                                     usuario o las del propio teléfono. 

Propiedades de las etiquetas

typeface

textStyle

textColor 


jueves, 28 de mayo de 2015

Estructura de un Proyecto Android

    Estructura de un Proyecto Android

La carpeta src
Es una carpeta en que utiliza el código de fuente Java, y como en los proyectos para escritorio puede llamarse de otro modo si nos interesa o podemos disponer de distintas carpetas fuente, a veces puede ser un modo de enlazar con librerías.
Todo el código que se pone en las carpetas fuente será compilado cuando se necesite. Además que  en los proyectos Comunes de java el código se organiza en carpetas que resultaran en los paquetes. Durante el proceso de creación del proyecto hay recordar que el paquete que lo que se va a identificar. 

 ·La carpeta res
Esa es una carpeta más compleja ya que se subdivide en múltiples subdirectorios, pero para resumir, se tiene que va a contener lo que en el mundo de Android que se llamará recursos.
Existen distintos tipos de recursos como imágenes, textos, layouts, y que se pueden administrar a como se van gestionar los recursos para dispositivos con características y configuraciones distintas.

·La carpeta assets

En esta carpeta depositaremos todos los archivos que vayamos a querer que acompañen a la aplicación, pueden estar organizados en carpetas y serán empaquetados en el apk final. Podemos considerarlos como recursos al igual que el contenido de la carpeta res, pero no estarán indexados ni compilados de modo que el acceso a estos es menos eficiente y algo más laborioso.
 Y se tienen que aplicar las reglas de los recursos en lo que respecta a nomenclaturas y organización.

·  La carpeta gen

Es una carpeta de código fuente que va a contener archivos de Java como la carpeta src,pero no deberemos agregar los archivos contenidos ya que son generados automáticamente por el plugin de Android a partir del contenido de la carpeta res. Aquí se encuentra el archivo R que es el archivo de java que servirá para indexar e identificar a todos y cada uno de los recursos de la carpeta res.

·El archivo AndroidManifest.xml

Este es como un archivo principal y que todas las aplicaciones o librerías deben contener en la raíz del proyecto. En este, se definen las características del proyecto como el nombre, paquete o los permisos que va a requerir la aplicación. También es en este archivo donde se describe los componentes de la aplicación.
Como su nombre indica se puede decir que es un archivo XMO, pero al tener instaladas el plugin de Android podemos visualizarlo y editarlo a partir de un editor visual además de sobre un editor de archivos XML. 

Imágenes en Android

El control ImageView permite mostrar imágenes en la aplicación. La propiedad más interesante es android: src, que permite indicar la imagen a mostrar. Nuevamente, lo normal será indicar como origen de la imagen el identificador de un recurso de nuestra carpeta /res/drawable, por ejemplo android: src=”@drawable/una imagen”. Además de esta propiedad, existen algunas otras útiles en algunas ocasiones como las destinadas a establecer el tamaño máximo que puede ocupar la imagen, android: maxWidth y android: maxHeight, o para indicar cómo debe adaptarse la imagen al tamaño del control, android: scaleType.





·Controles de Texto
El control TextView es otro de los clásicos en la programación de GUIs, las etiquetas de texto, y se utiliza para mostrar un determinado texto al usuario. Al igual que en el caso de los botones, el texto del control se establece mediante la propiedad android: text. A parte de esta propiedad, la naturaleza del control hace que las más interesantes sean las que establecen el formato del texto mostrado, que al igual que en el caso de los botones son las siguientes: android: background (color de fondo), android: textColor (color del texto), android: textSize (tamaño de la fuente) y android: typeface (estilo del texto: negrita, cursiva,…).





             ·LISTAS EN ANDROID
Las listas en Android son contenedores supremamente útiles para organizar información en forma vertical y con la capacidad de usar scrolling (desplazamiento) para simplificar su visualización. Esta técnica es muy popular en muchas aplicaciones, ya que permite mostrarle al usuario un conjunto de datos de forma práctica y accesible.
La clase que representa una lista vertical en el API de Android se llama ListView. Esta clase viene preparada para recibir los items que desplegará en la interfaz, facilitando al programador la implementación de sus características y comportamientos. 





 ·GRID EN ANDROID
Photo Grid - Collage Maker es una aplicación para hacer collages y montajes de fotografías muy fácilmente, siguiendo unos pasos muy sencillos con los que SE conseguirán composiciones de fotos para luego compartirlas con tus amigos y familiares a través de las redes sociales.


·         Características:
      -Cuadrícula-
·         -Editor de fotos-
·         -Tablón de notas-
·         -Video presentaciones-
·         -Plantilla-



    ·Tablas en android

Los tabs nos van a permitir crear una interfaz de usuario basada en pestañas, donde, de una forma muy intuitiva, podemos ofrecer al usuario diferentes vistas.
Para crear una interfaz de usuario con pestañas, es necesario utilizar FragmentTabHost TabWidget. FragmentTabHost debe ser el nodo raíz para el diseño, que contendrá tanto el TabWidget para la visualización de las pestañas, como un FrameLayout para mostrar el contenido.