taller aplicaciones móviles - 2012 - 01

51
Apps Móviles Andrés González

Upload: holden-alberto-silva

Post on 02-Feb-2016

12 views

Category:

Documents


1 download

DESCRIPTION

Diapositivas de Taller Aplicaciones Móviles impartido en IP CIISA - 2012 - 01

TRANSCRIPT

Page 1: Taller Aplicaciones Móviles - 2012 - 01

Apps MoacutevilesAndreacutes Gonzaacutelez

ProgramaAndroid

Generalidades y Entorno de Desarrollo Ciclos de Vida Aplicaciones

Activity y Service Intent IntentFilter y BroadcastReceiver SharedPreferences y Recursos Bases de Datos Geolocacioacuten Notificaciones

Android - Historia Android Inc fundada en Octubre 2003

Dispositivos maacutes concientes de sus usuarios Adquirida por Google en Agosto 2005 Presentacioacuten de la OHA en Noviembre 2007 Expansioacuten de la OHA en Diciembre 2008

Android - Historia

Android - Historia Versiones

Beta - Noviembre 2005 1 - Septiembre 2008 11 - Febrero 2009 15 (Cupcake) - Abril 2009 16 (Donut) - Septiembre 2009 20 21 (Eclair) - Octubre 2009 Enero 2010 22X (Froyo) - Mayo 2010 23X (Gingerbread) - Diciembre 2010 3X (Honeycomb) - Febrero 2011 4X (Icecream Sandwich) - Mayo 2011

Android - Evolucioacuten

Android 1 Cupcake Donut

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 2: Taller Aplicaciones Móviles - 2012 - 01

ProgramaAndroid

Generalidades y Entorno de Desarrollo Ciclos de Vida Aplicaciones

Activity y Service Intent IntentFilter y BroadcastReceiver SharedPreferences y Recursos Bases de Datos Geolocacioacuten Notificaciones

Android - Historia Android Inc fundada en Octubre 2003

Dispositivos maacutes concientes de sus usuarios Adquirida por Google en Agosto 2005 Presentacioacuten de la OHA en Noviembre 2007 Expansioacuten de la OHA en Diciembre 2008

Android - Historia

Android - Historia Versiones

Beta - Noviembre 2005 1 - Septiembre 2008 11 - Febrero 2009 15 (Cupcake) - Abril 2009 16 (Donut) - Septiembre 2009 20 21 (Eclair) - Octubre 2009 Enero 2010 22X (Froyo) - Mayo 2010 23X (Gingerbread) - Diciembre 2010 3X (Honeycomb) - Febrero 2011 4X (Icecream Sandwich) - Mayo 2011

Android - Evolucioacuten

Android 1 Cupcake Donut

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 3: Taller Aplicaciones Móviles - 2012 - 01

Android - Historia Android Inc fundada en Octubre 2003

Dispositivos maacutes concientes de sus usuarios Adquirida por Google en Agosto 2005 Presentacioacuten de la OHA en Noviembre 2007 Expansioacuten de la OHA en Diciembre 2008

Android - Historia

Android - Historia Versiones

Beta - Noviembre 2005 1 - Septiembre 2008 11 - Febrero 2009 15 (Cupcake) - Abril 2009 16 (Donut) - Septiembre 2009 20 21 (Eclair) - Octubre 2009 Enero 2010 22X (Froyo) - Mayo 2010 23X (Gingerbread) - Diciembre 2010 3X (Honeycomb) - Febrero 2011 4X (Icecream Sandwich) - Mayo 2011

Android - Evolucioacuten

Android 1 Cupcake Donut

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 4: Taller Aplicaciones Móviles - 2012 - 01

Android - Historia

Android - Historia Versiones

Beta - Noviembre 2005 1 - Septiembre 2008 11 - Febrero 2009 15 (Cupcake) - Abril 2009 16 (Donut) - Septiembre 2009 20 21 (Eclair) - Octubre 2009 Enero 2010 22X (Froyo) - Mayo 2010 23X (Gingerbread) - Diciembre 2010 3X (Honeycomb) - Febrero 2011 4X (Icecream Sandwich) - Mayo 2011

Android - Evolucioacuten

Android 1 Cupcake Donut

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 5: Taller Aplicaciones Móviles - 2012 - 01

Android - Historia Versiones

Beta - Noviembre 2005 1 - Septiembre 2008 11 - Febrero 2009 15 (Cupcake) - Abril 2009 16 (Donut) - Septiembre 2009 20 21 (Eclair) - Octubre 2009 Enero 2010 22X (Froyo) - Mayo 2010 23X (Gingerbread) - Diciembre 2010 3X (Honeycomb) - Febrero 2011 4X (Icecream Sandwich) - Mayo 2011

Android - Evolucioacuten

Android 1 Cupcake Donut

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 6: Taller Aplicaciones Móviles - 2012 - 01

Android - Evolucioacuten

Android 1 Cupcake Donut

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 7: Taller Aplicaciones Móviles - 2012 - 01

Android - Evolucioacuten

Eclair FroYo Gingerbread

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 8: Taller Aplicaciones Móviles - 2012 - 01

Android - Evolucioacuten

Honeycomb Icream Sandwich

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 9: Taller Aplicaciones Móviles - 2012 - 01

Android - Arquitectura

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 10: Taller Aplicaciones Móviles - 2012 - 01

Android - IDE Eclipse Maquina Virtual Logcat Control del Emulador

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 11: Taller Aplicaciones Móviles - 2012 - 01

Android - IDEEclipse

Instalador Descargar

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 12: Taller Aplicaciones Móviles - 2012 - 01

Android - IDEEclipse

Acelerar el proceso de escritura de coacutedigo

Permite autocompletar

Sentildeala errores de sintaxis

Permite agregar archivos (imaacutegenes o de codigo fuente) con pegarlos en el proyecto

Al usar el menuacute Window -gt Show View podemos acceder a la ventana de Logcat y del Control del emulador

Despliega ventanas con las propiedades de los objetos seleccionados al trabajar en layouts

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 13: Taller Aplicaciones Móviles - 2012 - 01

Android - LogcatLogcat Despliega mensajes de depuracioacuten de las

aplicaciones en ejecucioacuten Permite ubicar el tipo de error junto con el

archivo asociado y la liacutenea que general el problema

Posee filtros para solo mostrar los mensajes que nos interesan dependiendo del nivel de verbosidad

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 14: Taller Aplicaciones Móviles - 2012 - 01

Android - LogcatLogcat

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 15: Taller Aplicaciones Móviles - 2012 - 01

Android - Control de EmuladorControl del Emulador Simula diferentes cambios en el estado del

dispositivo como Llamadas entrantes Cambios de ubicacioacute Llegada de SMS Rotacioacuten de pantalla

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 16: Taller Aplicaciones Móviles - 2012 - 01

Android - Control de EmuladorControl del Emulador

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 17: Taller Aplicaciones Móviles - 2012 - 01

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 18: Taller Aplicaciones Móviles - 2012 - 01

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onResume() establecemos valores iniciales

de la aplicacioacuten y revisamos si debemos cargar o no datos

onPause() guardamos automaacuteticamente las acciones del usuario

onDestroy() liberamos variables o listeners y cerramos cualquier DB abierta

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 19: Taller Aplicaciones Móviles - 2012 - 01

Android - Ciclos de Vida

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 20: Taller Aplicaciones Móviles - 2012 - 01

Android - Ciclos de VidaCiclo de Vida onCreate() declaramos variables iniciamos

procesos que pueden demorarse onStartCommand() en base al intent

recibido podemos establecer que procesos realizar en el servicio

stopSelf() ya que no existe un evento onStop() podemos hacer que el servicio se detenga a si mismo y ahiacute realizar la limpieza necesaria

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 21: Taller Aplicaciones Móviles - 2012 - 01

Android - AplicacionesDirectorios Importantes

src [package]

Archivos Java (Actividades y Servicios) res

drawable - [l m h]dpi Archivos imaacutegenes (Fondos Botones Etc)

layout Archivos Xml de Layouts (Layouts y Menus)

values Archivos Xml de valores usados en la app stringsxml

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 22: Taller Aplicaciones Móviles - 2012 - 01

Android - AplicacionesCoacutedigo fuente y layoutspackage clipciisatest

import androidappActivityimport androidosBundle

public class MyActivity extends Activity Called when the activity is first created Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain )

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 23: Taller Aplicaciones Móviles - 2012 - 01

Android - Coacutedigo FuenteCoacutedigo fuente Ubicado en ProyectosrcPackage Un archivo java por cada clase Contiene los archivos de

Actividades Servicios Listeners Libreriacuteas propias Clases propias que use la app en general

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 24: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsLayouts en general Despliegan y ordenan contenido Pueden contener otros layouts Permiten establecer un color de fondo una

imaacutegen de fondo alto y ancho del layout Requieren de un ScrollView para mostrar

maacutes contenido del que es visible en la pantalla

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 25: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsLinearLayout Tiene 2 orientaciones

Vertical Ubica los hijos uno a uno abajo del anterior

Horizontal Ubica los hijos uno al lado del anterior

Por defecto usan todo el ancho pero no todo el alto de la pantalla

Pueden indicar una justificacioacuten o gravedad bajo la cual se ordenaraacuten los elementos contenidos

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 26: Taller Aplicaciones Móviles - 2012 - 01

Android - Layouts

public class MyActivity extends Activity Override public void onCreate( Bundle savedInstanceState ) superonCreate( savedInstanceState ) setContentView( Rlayoutmain ) LinearLayout ll ll = (LinearLayout) findViewById( Ridmain ) TextView t = new TextView( this ) tsetText( HelloWorld ) lladdView( t )

LinearLayout

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 27: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsRelativeLayout Ordena los items contenidos en relacioacuten a

los bordes del layout o a otros elementos existentes

El cambio de id o la remocioacuten de un elemento puede generar cambios en el orden del contenido mostrado

Se adapta a las diferentes orientaciones de pantalla pero algunos elementos pueden quedar fuera de ella

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 28: Taller Aplicaciones Móviles - 2012 - 01

Android - Layouts

RelativeLayout rlrl = (RelativeLayout) findViewById( Ridmain )TextView t = new TextView( this )RelativeLayoutLayoutParams pp = new RelativeLayoutLayoutParams( LayoutParamsWRAP_CONTENT LayoutParamsWRAP_CONTENT )paddRulet( RelativeLayoutALIGN_PARENT_LEFT RelativeLayoutTRUE )tsetText( HelloWorld )rladdView( t p )

RelativeLayout

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 29: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsGridLayout Distribuye el espacio en partes N casilleros Dichos casilleros se ordenan en filas y

columnas Complejo de utilizar de manera

programaacutetica Puede ser reemplazado por otros tipos de

layout

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 30: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsTableLayout Ordenan el contenido en filas y columnas Similar a usar una combinacion de

LinearLayout o GridLayout Complejo de usar de manera programaacutetica

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 31: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsFrameLayout Todos los elementos agregados son

ubicados en la esquina superior izquierda de la pantalla

Puede indicarse un margen para cada objeto a fin de acomodarlo donde sea necesario

Los objetos son puestos uno sobre del otro vistos como objetos planos o como capas en una imaacutegen

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 32: Taller Aplicaciones Móviles - 2012 - 01

Android - LayoutsScrollView Contiene un LinearLayout Permite que el contenido ubicado fuera de la

pantalla pueda ser visto Debe ser declarado como horizontal o

vertical No se utiliza directamente sino que los hijos

se agregan al layout lineal nombrado al principio

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 33: Taller Aplicaciones Móviles - 2012 - 01

Android - AndroidManifestAndroidManifestxml Contiene informacioacuten primordial de la app

requerida para que la misma funcione apropiadamente

Declara permisos versiones nodos filtros y listeners

Establece temas de colores y estilos de nuestra app

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 34: Taller Aplicaciones Móviles - 2012 - 01

Android - AndroidManifestAndroidManifestxml

Manifest Package Name Extras

Application Label Icon Application Nodes

Permissions Dependiente de la APP

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 35: Taller Aplicaciones Móviles - 2012 - 01

Android - AndroidManifest

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 36: Taller Aplicaciones Móviles - 2012 - 01

Android - IntentsIntents

Describen acciones o situaciones a las cuales responde nuestra aplicacioacuten

Permiten iniciar componentes (Acitividades y Servicios)

Sirven para enviar paraacutemetros y variables Su constructor puede utilizar un contexto o una linea

descriptiva de la accioacuten

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 37: Taller Aplicaciones Móviles - 2012 - 01

Android - Intents

Intent intent = new Intent( identificadordeaccion )Opcion 1Intent intent = new Intent( Context context Class Claseclass )Opcion 2intentputExtra( foo foo ) foo es cualquier variable o clase parcelablestartActivity( intent )Para actividadesstartService( intent )Para serviciossendBroadcast( intent )Para filtros interesados en la accioacuten

Bundle bundle = getIntent()getExtras()En un ActivityPara el caso del servicio usamos el intent que llega en onStartCommandFoo foo = bundlegetFoo( foo )Operaciones sobre foo

Intents Iniciar actividades o servicios con

paraacutemetros Uso en Origen

Uso en Destino

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 38: Taller Aplicaciones Móviles - 2012 - 01

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 39: Taller Aplicaciones Móviles - 2012 - 01

Android - IntentFilterIntentFilter y BroadcastReceiver

Indicar que Actividad o Servicio debe ejecutarse dadas ciertas condiciones externasinternas de la app

Usoprivate BroadcastReceiver broadcastReceiver = new BroadcastReceiver() Overridepublic void onReceive( Context context Intent intent )

Acciones a realizar en caso de recibir un Broadcast

IntentFilter intentFilter = new IntentFilter( identificadordeaccion )Opcion 1intentFilter = addAction( identificadordeaccion )Opcion 2 filtro existenteregisterReceiver( broadcastReceiver intentFilter )

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 40: Taller Aplicaciones Móviles - 2012 - 01

Android - SharedPreferencesSharedPreferences

Permiten almacenar informacioacuten de manera no volaacutetil

Elementos que se pueden guardar boolean int long float string

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 41: Taller Aplicaciones Móviles - 2012 - 01

Android - SharedPreferencesSharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences( archivo MODE_PRIVATE )Los modos son MODE_PRIVATE MODE_WORLD_READABLEMODE_WORLD_WRITABLE y MODE_MULTI_PROCESS

SharedPreferencesEditor editor = sharedPreferencesedit()AgregarModificar una variableeditorputBoolean( foo true )editorcommit()

boolean sharedPreferences = sharedPreferencesgetBoolean( foo false )El segundo parametro false para este caso es el valor por defecto en caso de no hallarse lavariable

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 42: Taller Aplicaciones Móviles - 2012 - 01

Android - Bases de DatosBases de datos

Corren en SQLite No permiten triggers o constraints Ocupan una clase proxy No se encargan de la proteccioacuten de datos No asegura consistencia

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 43: Taller Aplicaciones Móviles - 2012 - 01

Android - Bases de DatosCrear clase extendiendo DBHelper

Constructor debe incluir super(context DATABASE_NAME null DATABASE_VERSION)

SobreescribironCreate(androiddatabasesqliteSQLiteDatabase)

Hacer consultas conrawQuery(javalangString javalangString[])

Procesar retornos concursormoveToFirst() y cursormoveToNext()

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 44: Taller Aplicaciones Móviles - 2012 - 01

Android - Bases de DatosDBHelper

public class DictionaryOpenHelper extends SQLiteOpenHelper

private static final int DATABASE_VERSION = 1private static final String DICTIONARY_TABLE_NAME = diccionarioprivate static final String KEY_WORD = palabraprivate static final String KEY_DEFINITION = definicionprivate static final String DICTIONARY_TABLE_CREATE = CREATE TABLE + DICTIONARY_TABLE_NAME + ( + KEY_WORD + TEXT + KEY_DEFINITION + TEXT)

DictionaryOpenHelper(Context context) super(context DATABASE_NAME null DATABASE_VERSION)

Override public void onCreate(SQLiteDatabase db) dbexecSQL(DICTIONARY_TABLE_CREATE)

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 45: Taller Aplicaciones Móviles - 2012 - 01

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 46: Taller Aplicaciones Móviles - 2012 - 01

Android - GeolocacioacutenAPI Key

Obtener API Key Modificar XML del mapview

Modificar AndroidManifestxml

ltcomgoogleandroidmapsMapView androidlayout_width=fill_parent androidlayout_height=fill_parent androidenabled=true androidclickable=true androidapiKey=ApiKey gt

ltapplication androidname=App gtltuses-library androidname=comgoogleandroidmaps gt

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 47: Taller Aplicaciones Móviles - 2012 - 01

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 48: Taller Aplicaciones Móviles - 2012 - 01

Android - GeolocacioacutenMapActivitypublic class MyMapView extends MapActivity

Overrideprotected boolean isRouteDisplayed()

return falseLinearLayout linearLayoutMapView mapViewprotected boolean onCreate( Bundle savedInstanceState)

superonCreate( savedInstanceState )mapView = (MapView) findViewById( Ridmapview )mapViewsetBuiltInZoomControls( true )mapOverlays = mapViewgetOverlays()drawable = thisgetResources()getDrawable( Rdrawableandroidmarker )itemizedoverlay = new MyItemizedOverlay( drawable )GeoPoint point = new GeoPoint(19240000-99120000)OverlayItem overlayitem = new OverlayItem(point )itemizedoverlayaddOverlay( overlayitem )mapOverlaysadd( itemizedoverlay )return false

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 49: Taller Aplicaciones Móviles - 2012 - 01

Android - GeolocacioacutenMyItemizedOverlay

public class MyItemizedOverlay extends ImetizedOverlay private ArrayListltOverlayItemgt mOverlays = new ArrayListltOverlayItemgt()

HelloItemizedOverlay() super( boundCenterBottom( defaultMarker ) )

public void addOverlay( OverlayItem overlay )

mOverlaysadd(overlay)populate()

Overrideprotected OverlayItem createItem( int i )

return mOverlaysget( i )Overridepublic int size()

return mOverlayssize()

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 50: Taller Aplicaciones Móviles - 2012 - 01

Android - GeolocacioacutenMyLocationListener

public class MyLocationListener implements LocationListener public void onProviderDisabled()

Overridepublic void onLocationChanged( Location location )

Overridepublic void onProviderDisabled( String provider )

Overridepublic void onProviderEnabled( String provider )

Overridepublic void onStatusChanged( String provider int status Bundle extras)

Android - Notificaciones

Page 51: Taller Aplicaciones Móviles - 2012 - 01

Android - Notificaciones