Beruflich Dokumente
Kultur Dokumente
ndice
Objetivos
Arquitectura de las aplicaciones
Conocer principales componentes lgicos de una aplicacin Android. Integracin & comunicacin entre componentes. Analizar los diferentes tipos de recursos estticos android. Identificar los elementos visuales de una aplicacin android. Describir la funcionalidad de los diferentes widget de un GUI. Conocer las notificaciones, eventos, mens y dilogos del GUI Android. Establecer polticas de permisos y recursos de seguridad a la hora de desarrollar apps Android.
3
[76..77]
Interfaces GUI
Views & Widget
Componentes Lgicos
Activities Broadcast Receiver Intents Content Provider
[6..39]
Recursos
Una aplicacin Android puede contener varias Activity, una de ellas marcada como principal. Establecen el contenido visual con: setContentView() Heredan de la clase android.app.Activity
7
package com.slashmobility.curso.android; import android.app.Activity; import android.os.Bundle; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
8
Cambio configuracin-> Destruye Actividad ANR si la Activity no responde a un evento en 5 segundos o Utilizar handlers para evitar ANR
Mensaje ANR
10
11
Crear un proyecto Activities-LifeCycle Este proyecto debe mostrar un mensaje en la salida de Log (System.out) cada vez que la Activity realice una transicin entre estados.
12
Intents: Definicin
Mecanismo para el paso de mensajes, declara la intencin de realizar una accin. Utilizados para iniciar Activities o comunicarlas entre ellas. tiles para desacoplar componentes (no necesitan conocer implementaciones). Existen acciones nativas que pueden ser lanzadas con los Intents (crean las Actividades para realizar esas acciones).
13
Intents: Estructura
Contienen: Action: La accin general a realizar, tal como ACTION_VIEW, ACTION_EDIT... Data: Los datos sobre los que la accin debe operar. Estos se expresan en forma URI (Uniform Resource Identifier) Ejemplo de pares Action / Data: ACTION_VIEW: content://contacts/people/1 ACTION_DIAL: tel://687123456 ACTION_DIAL: content://contacts/people/2
14
Atributos adicionales:
Category: ofrece informacin adicional sobre el tipo de componente que debe recoger el Intent. Type: tipo MIME de los datos del Intent. No es necesario por defecto. Component: indica qu componente (clase) especificado en AndroidManifest.xml realizar la accin del Intent. Si se especifica, se entregar a una instancia de esa clase, si no Android buscar el componente que mejor considere. Extras: informacin adicional (pares key-value).
15
17
Proyecto Launch: cmo realizar una peticin a Android para realizar algn tipo de accin. En este ejemplo podemos ver cmo se invoca una Activity para abrir una pgina Web.
18
19
20
Intent-LaunchClass: cmo se puede invocar a una Activity desde otra utilizando Intents. En este ejemplo podemos ver cmo se invoca una Activity de manera simple con un botn, que muestra una segunda Activity con informacin en la pantalla. Pulsando de nuevo el botn se puede regresar a la Activity anterior.
21
Se registra declarativamente en <intent-filter> AndroidManifest.xml Tres elementos fundamentales para la resolucin: action: nombre de la accin que puede realizar data: tipo MIME, no es obligatorio category: especifica bajo que circunstancias la accin puede ser ejecutada
22
Intent
Intent
23
24
Utilizados para recibir y actuar ante eventos/mensajes en forma de Intents que genera Android o las apps. Tu aplicacin pueden indicar el deseo de ser notificadas:
Programticamente: Context.registerReceiver() Declarativamente: <receiver> AndroidManifest.xml
Hereda de android.content.BroadcastReceiver
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class MyBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { //TODO: React to the Intent received. } }
25
BroadcastReceivers - Usos
Entrega Asncrona
Context.sendOrderedBroadcast(Intent)
Intent
Intents
28
Ejemplo
BroadcastReceiver-Demo: cmo crear filtros para que un BroadcastReceiver pueda recibir un Intent y procesarlo segn necesite. En este ejemplo podemos ver cmo la Activity principal crea un Intent y lo enva modo broadcast (multidifusin). Los componentes oyentes ,en este caso un BroadcastReceiver llamado IncomingReceiver detectar ese evento y mostrar un mensaje por la salida estndar (en este caso el fichero de log, al que se puede acceder va adb logcat)
29
Heredar de ContentProvider e implementar una interfaz para consultar y/o modificar los datos. Nunca se trata con el ContentProvider siempre con el ContentResolver. Accesible utilizando una simple URI. Recorrer los datos a travs de un Cursor.
30
Browser: permite leer o modificar bookmarks, historial del navegador o bsquedas web. CallLog: permite ver o modificar el historial de llamadas (entrantes o salientes). Contacts: Recupera, modifica, o almacena detalles de contactos.
MediaStore: acceso a los recursos multimedia del dispositivo (audio, video...) Settings: acceso a las preferencias del dispositivo
31
32
Arquitectura Aplicaciones:
Dos mtodos mismos parmetros ContentResolver.query() : Cursor Activity.managedquery(): Cursor Ejemplo Acceso a la agenda de Contactos
33
35
ContentProvider-Queries: cmo crear un ContentProvider que proporcione contenidos predefinidos, creando mtodos par a la consulta y actualizacin de los contenidos del ContentProvider. En este ejemplo podemos ver cmo crear un ContentProvider, listar una lista de datos introducidos por defecto en el proveedor, y aadir nuevas entradas.
36
No tienen UI y de ejecutan en el background de manera indefinida. (XJ: Reproductor msica) Expone una interfaz para conectarse (Bind to) Corren en el mismo thread principal pero tienen ms prioridad que la Activity. Heredan de android.app.Service Location Manager, Media Controller, Notification Manager son ejemplos de Services.
37
Bind:
Comunicacin sncrona. Clase android.os.Binder Mtodo public IBinder onBind(Intent intent)
39
Ejemplos y ejercicios
Service-CreateService: cmo crear un Service con la funcionalidad mnima
En este ejemplo podemos ver cmo se invoca un servicio utilizando un botn de Start y cmo se para con el botn de Stop.
Service-MusicDemo: cmo utilizar un Service para delegar trabajo que debe ejecutarse en background:
Ejemplo de invocacin de servicio que ejecuta un audio hasta que finaliza.
41
Ejemplos y ejercicios
Service-basicBinding: cmo interactar con un Service Local
Ejemplo para interactar localmente con un Service del que se conoce su implementacin en la clase.
+ +
i nterface Service
Activ ity -
42
43
44
Los recursos (Resources) son elementos externos que se quieren incluir y referenciar en la aplicacin.
Imgenes, videos, audio, textos, layouts,
Se incluyen declarativamente (/res) acediendose @<tipo>/<nombre> Programticamente son accesibles a travs de la clase R (compilada con aapt (Android Asset Packaging Tool)) R.resource_tipo.resource_nombre
45
anim: Animaciones y efectos. raw: Recursos rasos (audio, video). menu: Mens y dilogos. xml: Resto xml (Preferencias, app widget, )
46
Pantallas
Orientation: (-land, -port & -square) Pixel density: (-hdpi, -mdpi & -ldpi) Navigation: (D-pad, trackball & wheel) Size: (small, normal & large)
47
48
Resources-ChangeConfig: en este ejemplo se muestra cmo Android detecta los cambios de configuracin
Se puede ver como cambian las imgenes segn idioma y orientacin del dispositivo.
49
50
En Android, las interfaces se construyen utilizando los objetos View y ViewGroup Las Views son el punto de interaccin con el usuario (setContentView() en Activity) Las ViewGroup son una agrupacin lgica de elementos visuales (Views)
android.widget = subclases View con funcionalidad
51
Interfaces de usuario: Programticamente NO recomendable ya que: Creacin de vista programtica nos acoplamos a los detalles visuales del cdigo. Deberamos repetir cdigo para L10N, I18N, diferentes tamaos pantalla & pixel,
public void onCreate(Bundle icicle) { super.onCreate(icicle); TextView myTextView = new TextView(this); myTextView.setText(Hola Clase); setContentView(myTextView);
}
55
En el archivo /res/layout/main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- crea un layout con la distribucin de los elementos visuales --> <TextView android:id="@+id/myTestView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/jupiter"/> <!-- crea un widget TextView --> </LinearLayout>
En el cdigo de la Activity:
public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); //recurso main.xml TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setText(Hola clase); }
56
Ejemplo
Views-SimpleViews: en este ejemplo se puede ver cmo se pueden crear Views, cambiar sus atributos y sobrescribir sus mtodos para aadir funcionalidad. La Activity principal AndroidViews crea a travs del men de la aplicacin (pulsando el botn men del dispositivo) una serie de opciones que invocarn otras Activities que muestran distintas Views (Button, CheckBox, EditText, RadioGroup, Spinner)
57
59
60
Una vez aadido View/Widget a nuestro UI, necesitamos conocer como interaccionar/notificar al usuario. Algunas notificaciones requieren respuesta del usuario, otras no. Ejemplos: batera baja, confirmacin de recepcin de un archivo, barras de progreso, etc. Para cada tipo de notificacin se requerir una manera concreta de informar al usuario: vibracin, iluminacin LEDs
63
64
65
Ejemplo
Notifications-Demo: en este ejemplo se muestra algunos de los distintos mecanismos para mostrar notificaciones La Activity principal muestra una serie de botones que invocan distintos eventos de notificacin al usuario.
66
Normalmente hacen referencia a Views con funcionalidad compleja aadida Para crear componentes compuestos, se pueden crear Views y aadirle mtodos para la gestin de eventos, componentes visuales, etc Se pueden extender (heredar) componentes de Android por defecto, sobrescribiendo la funcionalidad que se necesite
67
68
DatePicker
TimePicker
AutoComplete
69
Son View cuyos hijos estn determinados por un Adapter. Encargados de rellenar datos (binding) y gestionar selecciones de usuario (handling). tiles cuando queremos mostrar visualmente datos almacenados
View AdapterView Adapter Datos
Button, ImageButton, EditText, ListView, GridView, Spinner, Gallery, .. CursorAdapter, ListAdapter, SpinnerAdapter, Content Provider, Cursor, String {}, File, URI
70
El nico que no soporta checkbox ni radio-buttons. La primera vez que se abra, Android llamar al mtodo onCreateOptionsMenu() de la Activity Cuando el usuario presione una opcin del men, se invocar el mtodo onOptionsItemSelected()
73
74
76
Menus: Submenus
Se puede aadir dentro de cualquier men, excepto en otro submen. Ideal para categorizar funcionalidades de nuestra app. Igual que en los Option Menu, al pulsar de invocar el mtodo onOptionsItemSelected()
79
80
81
Arquitectura de las aplicaciones: Seguridad y permisos Seguridad basada en el Kernel de Linux, cada paquete tiene un nico userID y procesos en sandbox, por lo que no pueden ser afectados entre s Los permisos son un mecanismo a nivel de aplicacin, que permiten el acceso a un recurso determinado (Red, envo de SMS..) Se pueden crear en AndroidManifest.xml
<permission android:name=com.paad.DETONATE_DEVICE android:protectionLevel=dangerous android:label=Self Destruct android:description=@string/detonate_description> </permission>
Aplicacin de mail: configurar una cuenta de correo de Android. Ejecutar la aplicacin Email del emulador y configurar una cuenta de correo En la ruta /data/data/com.android.email/databases tenemos las bases de datos relacionadas con el correo. Si ejecutamos >sqlite3 database podemos conectarnos con las BD de la aplicacin. Al ejecutar >.tables se pueden ver las listas de tablas de la BD. Al ejecutar >select * from messages; se puede ver los mails de usuarios. Esto es una infraccin de seguridad, ya que deberan disponer de algn tipo de encriptacin.
83
Conclusiones
Arquitectura de las aplicaciones
Conocer principales componentes lgicos de una aplicacin Android. Integracin & comunicacin entre componentes. Analizar los diferentes tipos de recursos estticos android. Identificar los elementos visuales de una aplicacin android. Describir la funcionalidad de los diferentes widget de un GUI. Conocer las notificaciones, eventos, mens y dilogos del GUI Android. Establecer polticas de permisos y recursos de seguridad a la hora de desarrollar apps Android.
84
Interfaces GUI
[76..77] [45..75] Views & ViewGroup Widget & Layout Notificaciones & Eventos Compound View & Adapters Menus [40..44]
Recursos