jueves, 27 de junio de 2013

Conceptos Generales Android. Archivo AndroidManifest.xml


SISTEMA OPERATIVO ANDROID

  • Un sistema operativo basado en linux con una interface de programación en Java.
  • Plataforma independiente del dispositivo. Desarrollar aplicaciones para varios dispositivos.
  • Plataforma de código abierto. http://source.android.com/
  • Disponibilidad de herramientas. 
    • Compilador
    • Depurador
    • Emulador de dispositivo
    • Propia maquina virtual Java ( Dalvik Virtual Machine - DVM)
  • Android con soporte para:
    • graficos 2D y 3D usando librerias de OpenGL
    • almacenamiento de datos en una base de datos SQLite.
  • Android se ejecuta en su propio proceso. Aplicación aislada de otras aplicaciones. 

SDK DE ANDROID. DESARROLLO DE ANDROID. COMPONENTES DE UNA APLICACIÓN

ARCHIVO AndroidManifest.xml

Archivo presente en todas las aplicaciones donde se especifican los componentes de la aplicación así como su configuración global.

Contiene:

  • Se describen los nombres de los paquetes java que tiene la aplicación. Este nombre es como un identificador único para la solicitud.
  • Describe los componentes de nuestra aplicación: Activities, Services, Broadcast Receivers, y Content Providers.
  • Determina que proceso manejara los componentes de la aplicación.
  • Especifica los permisos con los que contara la aplicación.
  • Declara las especificaciones mínimas en cuanto a versiones de APIs.
  • Declara las librerías que la aplicación necesitar y que deben estar enlazadas.



Estructura del archivo AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
        </provider>

        <uses-library />

    </application>

</manifest>


Componentes 



 Parte de un sistema Android

  • Activities (Actividades)
    • Activity es la parte del código que interactua con el usuario.
    • Las actividades:
      • Se apilan
      • sólo una es visible
      • sólo una esta activa
      • Se apilan encima según aparecen.
    • Es un componente de Android que proporciona una ventana de la aplicación, con la que los usuarios pueden interactuar para realizar una acción, como buscar contacto, marcar un teléfono  realizar una foto, enviar un mail o ver una foto.
    • Representa la capa de representación. (Ej. Pantalla del usuario).
    • Las apliaciones de Android crea una o mas actividades.Y se puede cambiar entre ellas en tiempo de ejecución.
    • Al menos tiene que contener una actividad la apliación.
    • Son contenedores para UI (User Interface - Interfaz de usuario). Es como un form para windows.
    • Cada una de las actividades, conlleva una pantalla o ventana en la que se dibuja su interfaz de usuario. Dicha pantalla o ventana puede rellenar toda la pantalla del dispositivo, pero también puede ser de menor tamaño o incluso flotar en la parte superior de otra ventanas.
    • Esta clase crea una ventana que muestra una interfaz de usuario, la cual está definida a su vez en una instancia de otra clase, la clase view.
    • El estado de las actividades:
      • Activa
        • Encima de la pila
      • Pausada
        • Sin foco, todavía visible
      • Parada
        • No visible
        • Puede eliminarse en caso de pocos recursos.
      • En destrucción
        • Se ha notificado su destrucción. 
    • Ciclo de vida de una aplicación Android.



    • Views (Vistas)
      • Un view es un elemento básico de UI. (Ej. es el reponsable de dibujar el área rectangular de la pantalla y así como enganchar elementos (ContextMenu, Menu, View, SurfaceView...)
      • La UI es contruida con clases widget que son heredadas (inherent) de android.view.View. Saben como dibujarse.
      • Responden a eventos
      • Organizados en árboles para construir el GUI.
      • Descritos en XML en los recursos de layaout.
      • Views y ViewGroups construyen complejos GUIs 
      • El Framework de Android es responsable de:
        • Medidas
        • Emplazamientos
        • Dibujado

    Jerarquia de clases View



    •  Intents (interaciones)
      • Descripción abstracta de una operación. Permite especificar la Actividad a invocar.
      • Describe lo que la aplicación quiere.
      • Se asocian una acción, unos datos y una categoria.
        • Las actividades declaran las acciones que pueden llevar a cabo y los tipos de datos que pueden gestionar. La categoría indica si la actividad se arranca desde el lanzador de aplicaciones o desde otra actividad. Es decir, essta compuesto de una acción y datos que se llevan a cabo (View, Edit...). La acción se lleva a cabo cuando "intents" es requerido y los datos son los datos para operar. (Ej:  Datos del item del contacto).
      • Son mensajes asíncronos que permiten a la aplicación solicitar funcionalidad de otros servicios o actividades.
      • Constituyen el núcleo de los mensajes del sistema que corren en Android.
      • Son usados cuando empiezan las actividades y para la comunicación entre diversas partes del sistema Android.
      • Las aplicaciones pueden transmitir intents (mandar mensajes) o recibir intents (registrar mensajes)
      • Las apliaciones pueden realizar:
        • intents explícita: la aplicación llama directamente a un servicio o una actividad.
        • intents implicita: la aplicación pide al sistema android de los servicios registrados y aplicaciones para un intents. (ej. una aplicación puede pedir via intents para una aplicación de contacto).
    • Services (servicios)
      • Se ejecutan en segundo plano (background) sin necesidad de ofrecer un UI. (Ej: music player mientras miras un mail, o un contador que vaya contando en decimal mientra estas con otras aplicaciones de mail,...)
      • No interactuan con el usuario
      • Ejecutan en el hilo principal del proceso
      • Se mantiene en ejecución mientras se: arranque o tenga conexiones.
    • Notificaciones
      • Alertan al usuario de eventos.
      • Se envia a través del NotificationManager. (Es un entorno de aplicacion en arquitectura de android )
      • Tipos:
        • iconos persistentes
        • LEDs encendidos
        • Sonidos y vibraciones
    • Proveedores de contenidos
      • Los contentProviders son objetos para:
        • obtener datos
        • Almacenar datos
      • Datos disponibles para todas las aplicaciones
      • UNICO modo de compartir información entre aplicaciones.
      • Normalmente, SQLite
      • Poco acople con clientes.
      • Acceso a través de URI( localizadores e identificadores uniformes de recursos. Acceso unico).


      Notas:

      Aplicación de Android es subclase de Activity y esta es subclase de Context con lo que la aplicación de java es a su vez subclase de Context. Por lo que la clase de la aplicación que creemos es un contexto valido para android y podemos referenciar esta con this a la hora de instan-ciar un objeto view