SlideShare una empresa de Scribd logo
#Cappacitate2015
@appsco
@Ministerio_TIC
@cymetria
@Tecnalia_co
@unmultimedio
#Cappacitate2015, @appsco, @Ministerio_TIC, @cymetria, @Tecnalia_co, @unmultimedio
Bootcamp: Desarrollo
en Android
Bogotá, Abril 2015
@unmultimedio
#Entrepreneurship, #LeanStartup, #Geek,
#HCIDev, #TechDev, #Bicycle #Sustainability.
Instructor: Julián R Figueroa
TEMA SESIÓN TEMA SESIÓN
Historia 1 Geolocalización 2
Workflow 1 IDE/Debug 3
“Hello World” 1 Fragmentos 3
Ciclo de vida 1 Interfaces 3
Action Bar 1 Notificaciones 4
XML Layouts 1 Consumo APIs 4
Menús 2 GCM 4
Persistencia 2 Q&A 1-4
Historia: Android como OS
• Android Inc. (2005 Google)
• +1MM diarios
• Open source
• C | C++ | Java
• Construido y compilado
sobre Linux (apps como
usuarios)
• DB relacional (SQLite)
• OpenGL (v2.0, v3.0)
• Mercado móvil 2007 (iPhone)
• C2DM (Push)
• WebKit (Chromium)
• GPS, acelerómetro,
giroscopio, proximidad, luz.
• Emulador sobre Eclipse*
• Multitarea real desde GB
*Genymotion!
Historia: Versiones
Historia: Versiones
NOMBRE VERSIÓN NOMBRE VERSIÓN
Apple Pie? Gingerbread
Banana Bread? Honeycomb
Cupcake Ice Cream Sandwich
Donut Jelly Bean
Eclair Kit Kat
Froyo Lollipop
http://www.android.com/history/
Historia: Versiones
NOMBRE VERSIÓN API NOMBRE VERSIÓN API
Apple Pie? 1 Gingerbread 9-10
Banana Bread? 2 Honeycomb 11-13
Cupcake 3 Ice Cream Sandwich 14-15
Donut 4 Jelly Bean 16-18
Eclair 5-7 Kit Kat 19-20*
Froyo 8 Lollipop 21
Workflow: DDD
• IDE
• Dispositivos/Emuladores
• Test App
• Code!!!
• Desplegar
• Depuración
• Firmar, test a producción
• Alfa, beta (privadas, públicas)
• Publicar, promocionar.
Workflow: Soporte
• Versiones
• Densidades y tamaños de pantalla
• Versión de OpenGL
Dashboard 12-2014
Workflow: Soporte
• Versiones
• Densidades y tamaños de pantalla
• Versión de OpenGL
Dashboard 03-2015
Workflow: Soporte
• Versiones
• Densidades y tamaños de pantalla
• Versión de OpenGL
Dashboard 03-2015
Workflow: Requisitos
• Android Studio (Beta estable)
• Eclipse con ADT oficial (opcional)
• Acceso a la documentación y referencia
(developer.android.com)
• Equipo Android de Depuración (opcional)
• Windows OEM Driver
• Linux “/etc/udev/rules.d/51-android.rules” file
• MacOSX :)
“Hola Mundo”
• Componentes de un proyecto
• Actividades
• Recursos
• Manifiesto
• Layouts
• Strings
• Toast
• Intent
Ciclo de vida
#Cappacitate2015
@appsco
@Ministerio_TIC
@cymetria
@Tecnalia_co
@unmultimedio
Action Bar
• Versión de soporte?
AppCompat
• Menús
• Iconos como acciones
• Estilos
• Recursos
Action Bar
• Versión de soporte? AppCompat
• Menús
• Iconos como acciones
• Estilos
• Recursos
Layouts: Vistas
Layouts: Organizaciones Comunes
• Linear
• Relative
• WebView
• ListView
• GridView
Layouts: Pesos
• Linear Layout
• No hay medidas
estáticas
• Orientaciones y
pesos
• ¿Organización?
Table 1
#Cappacitate2015, @appsco, @Ministerio_TIC, @cymetria, @Tecnalia_co, @unmultimedio
Reto Bootcamps
Reto Express
Retos Bootcamps
• Se constituirán equipos por parejas (formato)
• Para participar en los Retos Express se debe demostrar la
asistencia.
• El objetivo es construir un MVP durante el taller.
• Se seleccionaran los 5 mejores proyectos para un “pitch” de
2 min.
• El jurado evaluará el ganador final.
• Se premiará con una tablet por persona al equipo ganador.
Categorías Retos Bootcamps
• Impacto Social
• Agro
• Educación
TEMA SESIÓN TEMA SESIÓN
Historia 1 Geolocalización 2
Workflow 1 IDE/Debug 3
“Hello World” 1 Fragmentos 3
Ciclo de vida 1 Interfaces 3
Action Bar 1 Notificaciones 4
XML Layouts 1 Consumo APIs 4
Menús 2 GCM 4
Persistencia 2 Q&A 1-4
#Cappacitate2015
@appsco
@Ministerio_TIC
@cymetria
@Tecnalia_co
@unmultimedio
TEMA SESIÓN TEMA SESIÓN
Historia 1 Geolocalización 2
Workflow 1 IDE/Debug 3
“Hello World” 1 Fragmentos 3
Ciclo de vida 1 Interfaces 3
Action Bar 1 Notificaciones 4
XML Layouts 1 Consumo APIs 4
Menús 2 GCM 4
Persistencia 2 Q&A 1-4
Menús
• Opciones (Acciones) del
ActionBar
• Menús contextuales de
acción
• Menú tipo “pop-up”
Menús Contextuales
• Fragmentos de listas
• Envío de información entre
fragmentos
• Adaptadores
personalizados
• Control de eventos de items
• Menús contextuales por
ítem
• Actualización de listas
Persistencia
• Preferencias
compartidas
• SQLite
• Archivos
Persistencia: SQLite
• Paquete contenedor:
android.database.sqlite
• Clase contrato
• Constantes de nombres de
tablas, vistas, columnas, tipos de
datos
• Con un contrato se puede
replicar las tablas, consultas y
ejecuciones en todo el código
Persistencia: SQLite
public	
  class	
  DatabaseContract	
  {	
  
	
  	
  	
  	
  //Tabla	
  Usuarios	
  
	
  	
  	
  	
  public	
  static	
  class	
  Users	
  implements	
  BaseColumns{	
  
	
  	
  	
  	
  	
  	
  	
  	
  public	
  static	
  final	
  String	
  TABLE_NAME	
  =	
  "users";	
  
	
  	
  	
  	
  	
  	
  	
  	
  public	
  static	
  final	
  String	
  COLUMN_NAME_NAME	
  =	
  "name";	
  
	
  	
  	
  	
  	
  	
  	
  	
  public	
  static	
  final	
  String	
  COLUMN_NAME_DRINK	
  =	
  "drink";	
  
	
  	
  	
  	
  	
  	
  	
  	
  public	
  static	
  final	
  String	
  COLUMN_NAME_SPORT	
  =	
  "sport";	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  //	
  Otras	
  tablas,	
  vistas...	
  
}
Persistencia: SQLite
public	
  class	
  Ayudante	
  extends	
  SQLiteOpenHelper	
  {	
  
	
  	
  	
  	
  public	
  static	
  final	
  String	
  DATABASE_NAME	
  =	
  "nombrebase.db";	
  
	
  	
  	
  	
  public	
  static	
  final	
  int	
  DATABASE_VERSION	
  =	
  1;	
  
	
  	
  	
  	
  public	
  static	
  final	
  String	
  SQL_CREATE_USERS	
  =	
  
	
  	
  	
  	
  	
  	
  	
  	
  "CREATE	
  TABLE	
  "	
  +	
  Users.TABLE_NAME	
  
	
   	
   	
   +	
  "	
  ("+	
  Users._ID	
  +	
  "	
  INTEGER	
  PRIMARY	
  KEY,	
  "	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  +	
  Users.COLUMN_NAME_NAME	
  +	
  "	
  TEXT,	
  "	
  
	
   	
   	
   +	
  Users.COLUMN_NAME_DRINK	
  +	
  "	
  TEXT,	
  "	
  
	
  	
  	
  	
  	
  	
  	
  	
  +	
  Users.COLUMN_NAME_SPORT	
  +	
  "	
  TEXT)";	
  
	
  	
  	
  	
  public	
  static	
  final	
  String	
  SQL_DELETE_USERS	
  =	
  
	
   	
   	
   "DROP	
  TABLE	
  IF	
  EXISTS	
  "	
  +	
  Users.TABLE_NAME;	
  
	
  	
  	
  	
  //	
  Otras	
  Sentencias	
  ...	
  
	
  	
  	
  	
  //	
  Las	
  bases	
  de	
  datos,	
  una	
  para	
  leer,	
  una	
  para	
  escribir	
  datos	
  
	
  	
  	
  	
  SQLiteDatabase	
  escritor;	
  
	
  	
  	
  	
  SQLiteDatabase	
  lector;	
  
	
  	
  	
  	
  public	
  Ayudante(Context	
  context){	
  
	
  	
  	
  	
  	
  	
  	
  	
  super(context,	
  DATABASE_NAME,	
  null,	
  DATABASE_VERSION);	
  
	
  	
  	
  	
  }	
  
}
Persistencia: SQLite
public	
  boolean	
  insertarUsuario(Usuario	
  nuevo)	
  {	
  
	
  	
  	
  	
  ContentValues	
  values	
  =	
  new	
  ContentValues();	
  
	
  	
  	
  	
  values.put(Users.COLUMN_NAME_NAME,	
  nuevo.name);	
  
	
  	
  	
  	
  values.put(Users.COLUMN_NAME_DRINK,	
  nuevo.drink);	
  
	
  	
  	
  	
  values.put(Users.COLUMN_NAME_SPORT,	
  nuevo.sport);	
  
	
  	
  	
  	
  long	
  inserted	
  =	
  escritor.insert(	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Users.TABLE_NAME,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Users.COLUMN_NAME_NAME,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  values);	
  
	
  	
  	
  	
  if(inserted	
  ==	
  -­‐1)	
  return	
  false;	
  
	
  	
  	
  	
  return	
  true;	
  
}
Persistencia: SQLite
public	
  List<Usuario>	
  consultarUsuarios(){	
  
	
  	
  	
  	
  String[]	
  columns	
  =	
  {Users._ID,	
  Users.COLUMN_NAME_NAME,	
  
	
  	
  	
  	
  	
  	
  	
  	
  Users.COLUMN_NAME_DRINK,	
  Users.COLUMN_NAME_SPORT};	
  
	
  	
  	
  	
  String	
  selection	
  =	
  null;	
  //Users.COLUMN_NAME_NAME	
  +	
  "	
  like	
  ?";	
  
	
  	
  	
  	
  String	
  selectionArgs[]	
  =	
  null;	
  //{"%a%"};	
  
	
  	
  	
  	
  String	
  groupBy	
  =	
  null;	
  //Users.COLUMN_NAME_SPORT;	
  
	
  	
  	
  	
  String	
  having	
  =	
  null;	
  //condición	
  aritmética	
  
	
  	
  	
  	
  String	
  orderBy	
  =	
  null;	
  //Users._ID;	
  
	
  	
  	
  	
  String	
  limit	
  =	
  null;	
  //"10";	
  
	
  	
  	
  	
  Cursor	
  results	
  =	
  lector.query(Users.TABLE_NAME,	
  	
  columns,	
  
	
  	
  	
  	
  	
  	
  	
  	
  selection,	
  selectionArgs,	
  groupBy,	
  	
  having,	
  	
  orderBy,	
  limit);	
  
	
  	
  	
  	
  //	
  results	
  ya	
  es	
  un	
  cursor	
  con	
  los	
  datos	
  de	
  regreso	
  
}
Persistencia: Archivos
• Los directorios son de tipo File, así no sean archivos
• Opción correcta para imágenes, o elementos que puedan ser
compartidos por red, incluso para borradores de correos, o borradores
de configuraciones que puedan ser guardados para beneficio del
usuario y evitar complicarlo con llenar de nuevo muchos datos.
<uses-­‐permission	
  
android:name="android.permission.WRITE_EXTERNAL_STORAGE"	
  />	
  
<uses-­‐permission	
  
android:name="android.permission.READ_EXTERNAL_STORAGE"	
  />
Persistencia: Archivos Interna
• Siempre está disponible, por defecto. Cambiar
con android:installLocation
• Por defecto accede solo el app
• Cuando el usuario des-instala el app, se
eliminan los archivos
• Es la mejor opción cuando queremos que ni el
usuario u otras apps puedan acceder a los
datos
Persistencia: Archivos Externa
• No siempre está disponible
• No tiene recursos, es WORLD_READABLE
• Solo se eliminan los archivos al des-instalar,
cuando se guardan en getExternalDir()
• Es lo mejor cuando son archivos que
queremos que se compartan con otras apps
(¿fotos?)
Persistencia: Preferencias compartidas
• Valores en mapa
• Datos primitivos y String
• ruta-app/diccionario recuperado cada
apertura
• getSharedPreferences() Vs
getPreferences()
• MODE_WORLD_READABLE,
MODE_WORLD_WRITEABLE,
MODE_PRIVATE
• Editor: getEditor(), put…(), commit()
Persistencia: Preferencias compartidas
• Ejercicio tres tipos de
variables
• String
• int
• boolean
#Cappacitate2015
@appsco
@Ministerio_TIC
@cymetria
@Tecnalia_co
@unmultimedio
Geolocalización
• Fragmentos
• Conexión con la
cuenta de
desarrollador
• Firma SHA1
Geolocalización
• Manifiesto con
permisos de acceso a
sensores.
• Google Play Services
Geolocalización
<uses-­‐permission	
  
android:name="android.permission.INTERNET"/>	
  
<uses-­‐permission	
  
android:name="android.permission.ACCESS_NETWORK_STATE"/>	
  
<uses-­‐permission	
  
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>	
  
<uses-­‐permission	
  
android:name=	
  
"com.google.android.providers.gsf.permission.READ_GSERVICES"/>	
  
<!-­‐-­‐	
  The	
  following	
  two	
  permissions	
  are	
  not	
  required	
  to	
  use	
  
Google	
  Maps	
  Android	
  API	
  v2,	
  but	
  are	
  recommended.	
  -­‐-­‐>	
  
<uses-­‐permission	
  
android:name="android.permission.ACCESS_COARSE_LOCATION"/>	
  
<uses-­‐permission	
  
android:name="android.permission.ACCESS_FINE_LOCATION"/>
Geolocalización: Java
import	
  com.google.android.gms.maps.MapFragment;	
  
/*…*/	
  
MapFragment	
  elMapaQueVamosAInyectar	
  =	
  new	
  MapFragment();	
  
FragmentManager	
  fm	
  =	
  getActivity().getFragmentManager();	
  
fm.beginTransaction().add(	
  
	
   R.id.contenedor_mapa	
  +	
  mapaId,	
  
	
   elMapaQueVamosAInyectar,	
  
	
   “mapa")	
  
.commit();
Geolocalización: XML
<fragment	
  	
  
android:id="@+id/map"	
  	
  
android:layout_width="match_parent"	
  	
  
android:layout_height="match_parent"	
  	
  
class="com.google.android.gms.maps.MapFragment"	
  />	
  
	
  	
  
<FrameLayout	
  android:id="@+id/contenedor_mapa"	
  
android:layout_width="match_parent"	
  
android:layout_height=“match_parent"></FrameLayout>
TEMA SESIÓN TEMA SESIÓN
Historia 1 Geolocalización 2
Workflow 1 IDE/Debug 3
“Hello World” 1 Fragmentos 3
Ciclo de vida 1 Interfaces 3
Action Bar 1 Notificaciones 4
XML Layouts 1 Consumo APIs 4
Menús 2 GCM 4
Persistencia 2 Q&A 1-4
#Cappacitate2015
@appsco
@Ministerio_TIC
@cymetria
@Tecnalia_co
@unmultimedio
TEMA SESIÓN TEMA SESIÓN
Historia 1 Geolocalización 2
Workflow 1 IDE/Debug 3
“Hello World” 1 Fragmentos 3
Ciclo de vida 1 Interfaces 3
Action Bar 1 Notificaciones 4
XML Layouts 1 Consumo APIs 4
Menús 2 GCM 4
Persistencia 2 Q&A 1-4
Debug
Escoger punto(s) de interrupción y ejecutar el APK con el insecto.
Debug
Llegar al punto de interrupción en el teléfono (ó emulador).
Debug
Inspeccionar
de ser
necesario,
continuar.
Fragmentos
• Nuevo estándar
• Re-utilización de código
• Ciclo de vida propio
• Transacciones
• Diseño multi-screen
• Teléfonos
• Tabletas
• Wear
Fragmentos: Ciclo de vida
Fragmentos: Interfaces
• Manera segura de
compartir información.
• getActivity() funciona
desde un fragmento para
acceder a otro, pero no
de manera segura.
• La interfaz exige
comunicación y favorece
trabajo colaborativo.
• Estándar de métodos de
comunicación.
#Cappacitate2015
@appsco
@Ministerio_TIC
@cymetria
@Tecnalia_co
@unmultimedio
Notificaciones
Componentes
Obligatorios:
• smallIcon
• title
• detailedText
GCM: Google Cloud Messaging
https://developer.android.com/google/gcm/index.html
GCM: Google Cloud Messaging
• SENDER_ID (API Console)
• Verificar
SharedPreferences
• registerInBackground
• Pedir un regId
(registration ID) del
server GCM
• Alojar el ID en la DB
propia
• Alojar el ID en
SharedPreferences
• BroadcastReceiver
escuchando push
• IntentService que notifica
TEMA SESIÓN TEMA SESIÓN
Historia 1 Geolocalización 2
Workflow 1 IDE/Debug 3
“Hello World” 1 Fragmentos 3
Ciclo de vida 1 Interfaces 3
Action Bar 1 Notificaciones 4
XML Layouts 1 Consumo APIs 4
Menús 2 GCM 4
Persistencia 2 Q&A 1-4
#Cappacitate2015, @appsco, @Ministerio_TIC, @cymetria, @Tecnalia_co, @unmultimedio
Gracias!
Bogotá, Abril 2015

Más contenido relacionado

Similar a #Cappacitate2015 Bogota

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 
DAM-S5.pptx
DAM-S5.pptxDAM-S5.pptx
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
liras loca
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
Carlos A. Iglesias
 
S6-PD1-3.2 LINQ
S6-PD1-3.2 LINQS6-PD1-3.2 LINQ
Base de Datos
Base de DatosBase de Datos
Base de Datos
Berenice Quintero
 
Android basics v3
Android basics v3Android basics v3
Android basics v3
Jesús Fontecha
 
Android Basics v2.5
Android Basics v2.5Android Basics v2.5
Android Basics v2.5
Jesús Fontecha
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
tonynetword
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Iniciativa Barcelona Open Data
 
Desarrollo de módulos para Drupal
Desarrollo de módulos para DrupalDesarrollo de módulos para Drupal
Desarrollo de módulos para Drupal
Alessandro Mascherpa
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datos
Fernando Cejas
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
Luis Fernando Aguas Bucheli
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
Luis Fernando Aguas Bucheli
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
Alberto Ruibal
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
Byron Quisquinay
 
DSpace Workshop
DSpace Workshop DSpace Workshop
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8
Acquia
 
Programacion3 presentacion proyecto final SGBD_LC
Programacion3  presentacion proyecto final SGBD_LCProgramacion3  presentacion proyecto final SGBD_LC
Programacion3 presentacion proyecto final SGBD_LC
Belen Toledo
 
Sqlite
SqliteSqlite

Similar a #Cappacitate2015 Bogota (20)

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
DAM-S5.pptx
DAM-S5.pptxDAM-S5.pptx
DAM-S5.pptx
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
S6-PD1-3.2 LINQ
S6-PD1-3.2 LINQS6-PD1-3.2 LINQ
S6-PD1-3.2 LINQ
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Android basics v3
Android basics v3Android basics v3
Android basics v3
 
Android Basics v2.5
Android Basics v2.5Android Basics v2.5
Android Basics v2.5
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
 
Desarrollo de módulos para Drupal
Desarrollo de módulos para DrupalDesarrollo de módulos para Drupal
Desarrollo de módulos para Drupal
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datos
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
DSpace Workshop
DSpace Workshop DSpace Workshop
DSpace Workshop
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8
 
Programacion3 presentacion proyecto final SGBD_LC
Programacion3  presentacion proyecto final SGBD_LCProgramacion3  presentacion proyecto final SGBD_LC
Programacion3 presentacion proyecto final SGBD_LC
 
Sqlite
SqliteSqlite
Sqlite
 

Más de Julián R. Figueroa

Ruby twitter bot
Ruby twitter botRuby twitter bot
Ruby twitter bot
Julián R. Figueroa
 
Conversatic - Fusagasugá
Conversatic - FusagasugáConversatic - Fusagasugá
Conversatic - Fusagasugá
Julián R. Figueroa
 
Presentacion Digital Bank Aval
Presentacion Digital Bank AvalPresentacion Digital Bank Aval
Presentacion Digital Bank Aval
Julián R. Figueroa
 
BarCamp Scrum Col30-2015
BarCamp Scrum Col30-2015BarCamp Scrum Col30-2015
BarCamp Scrum Col30-2015
Julián R. Figueroa
 
La Incursión de las Pymes en la Era Digital
La Incursión de las Pymes en la Era DigitalLa Incursión de las Pymes en la Era Digital
La Incursión de las Pymes en la Era Digital
Julián R. Figueroa
 
Scrum UMNG - Herramientas de Emprendimiento
Scrum UMNG - Herramientas de EmprendimientoScrum UMNG - Herramientas de Emprendimiento
Scrum UMNG - Herramientas de Emprendimiento
Julián R. Figueroa
 

Más de Julián R. Figueroa (6)

Ruby twitter bot
Ruby twitter botRuby twitter bot
Ruby twitter bot
 
Conversatic - Fusagasugá
Conversatic - FusagasugáConversatic - Fusagasugá
Conversatic - Fusagasugá
 
Presentacion Digital Bank Aval
Presentacion Digital Bank AvalPresentacion Digital Bank Aval
Presentacion Digital Bank Aval
 
BarCamp Scrum Col30-2015
BarCamp Scrum Col30-2015BarCamp Scrum Col30-2015
BarCamp Scrum Col30-2015
 
La Incursión de las Pymes en la Era Digital
La Incursión de las Pymes en la Era DigitalLa Incursión de las Pymes en la Era Digital
La Incursión de las Pymes en la Era Digital
 
Scrum UMNG - Herramientas de Emprendimiento
Scrum UMNG - Herramientas de EmprendimientoScrum UMNG - Herramientas de Emprendimiento
Scrum UMNG - Herramientas de Emprendimiento
 

Último

PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 

Último (20)

PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 

#Cappacitate2015 Bogota

  • 2. #Cappacitate2015, @appsco, @Ministerio_TIC, @cymetria, @Tecnalia_co, @unmultimedio Bootcamp: Desarrollo en Android Bogotá, Abril 2015
  • 3. @unmultimedio #Entrepreneurship, #LeanStartup, #Geek, #HCIDev, #TechDev, #Bicycle #Sustainability. Instructor: Julián R Figueroa
  • 4. TEMA SESIÓN TEMA SESIÓN Historia 1 Geolocalización 2 Workflow 1 IDE/Debug 3 “Hello World” 1 Fragmentos 3 Ciclo de vida 1 Interfaces 3 Action Bar 1 Notificaciones 4 XML Layouts 1 Consumo APIs 4 Menús 2 GCM 4 Persistencia 2 Q&A 1-4
  • 5. Historia: Android como OS • Android Inc. (2005 Google) • +1MM diarios • Open source • C | C++ | Java • Construido y compilado sobre Linux (apps como usuarios) • DB relacional (SQLite) • OpenGL (v2.0, v3.0) • Mercado móvil 2007 (iPhone) • C2DM (Push) • WebKit (Chromium) • GPS, acelerómetro, giroscopio, proximidad, luz. • Emulador sobre Eclipse* • Multitarea real desde GB *Genymotion!
  • 7. Historia: Versiones NOMBRE VERSIÓN NOMBRE VERSIÓN Apple Pie? Gingerbread Banana Bread? Honeycomb Cupcake Ice Cream Sandwich Donut Jelly Bean Eclair Kit Kat Froyo Lollipop http://www.android.com/history/
  • 8. Historia: Versiones NOMBRE VERSIÓN API NOMBRE VERSIÓN API Apple Pie? 1 Gingerbread 9-10 Banana Bread? 2 Honeycomb 11-13 Cupcake 3 Ice Cream Sandwich 14-15 Donut 4 Jelly Bean 16-18 Eclair 5-7 Kit Kat 19-20* Froyo 8 Lollipop 21
  • 9. Workflow: DDD • IDE • Dispositivos/Emuladores • Test App • Code!!! • Desplegar • Depuración • Firmar, test a producción • Alfa, beta (privadas, públicas) • Publicar, promocionar.
  • 10. Workflow: Soporte • Versiones • Densidades y tamaños de pantalla • Versión de OpenGL Dashboard 12-2014
  • 11. Workflow: Soporte • Versiones • Densidades y tamaños de pantalla • Versión de OpenGL Dashboard 03-2015
  • 12. Workflow: Soporte • Versiones • Densidades y tamaños de pantalla • Versión de OpenGL Dashboard 03-2015
  • 13. Workflow: Requisitos • Android Studio (Beta estable) • Eclipse con ADT oficial (opcional) • Acceso a la documentación y referencia (developer.android.com) • Equipo Android de Depuración (opcional) • Windows OEM Driver • Linux “/etc/udev/rules.d/51-android.rules” file • MacOSX :)
  • 14. “Hola Mundo” • Componentes de un proyecto • Actividades • Recursos • Manifiesto • Layouts • Strings • Toast • Intent
  • 17. Action Bar • Versión de soporte? AppCompat • Menús • Iconos como acciones • Estilos • Recursos
  • 18. Action Bar • Versión de soporte? AppCompat • Menús • Iconos como acciones • Estilos • Recursos
  • 20. Layouts: Organizaciones Comunes • Linear • Relative • WebView • ListView • GridView
  • 21. Layouts: Pesos • Linear Layout • No hay medidas estáticas • Orientaciones y pesos • ¿Organización? Table 1
  • 22. #Cappacitate2015, @appsco, @Ministerio_TIC, @cymetria, @Tecnalia_co, @unmultimedio Reto Bootcamps Reto Express
  • 23. Retos Bootcamps • Se constituirán equipos por parejas (formato) • Para participar en los Retos Express se debe demostrar la asistencia. • El objetivo es construir un MVP durante el taller. • Se seleccionaran los 5 mejores proyectos para un “pitch” de 2 min. • El jurado evaluará el ganador final. • Se premiará con una tablet por persona al equipo ganador.
  • 24. Categorías Retos Bootcamps • Impacto Social • Agro • Educación
  • 25. TEMA SESIÓN TEMA SESIÓN Historia 1 Geolocalización 2 Workflow 1 IDE/Debug 3 “Hello World” 1 Fragmentos 3 Ciclo de vida 1 Interfaces 3 Action Bar 1 Notificaciones 4 XML Layouts 1 Consumo APIs 4 Menús 2 GCM 4 Persistencia 2 Q&A 1-4
  • 27. TEMA SESIÓN TEMA SESIÓN Historia 1 Geolocalización 2 Workflow 1 IDE/Debug 3 “Hello World” 1 Fragmentos 3 Ciclo de vida 1 Interfaces 3 Action Bar 1 Notificaciones 4 XML Layouts 1 Consumo APIs 4 Menús 2 GCM 4 Persistencia 2 Q&A 1-4
  • 28. Menús • Opciones (Acciones) del ActionBar • Menús contextuales de acción • Menú tipo “pop-up”
  • 29. Menús Contextuales • Fragmentos de listas • Envío de información entre fragmentos • Adaptadores personalizados • Control de eventos de items • Menús contextuales por ítem • Actualización de listas
  • 31. Persistencia: SQLite • Paquete contenedor: android.database.sqlite • Clase contrato • Constantes de nombres de tablas, vistas, columnas, tipos de datos • Con un contrato se puede replicar las tablas, consultas y ejecuciones en todo el código
  • 32. Persistencia: SQLite public  class  DatabaseContract  {          //Tabla  Usuarios          public  static  class  Users  implements  BaseColumns{                  public  static  final  String  TABLE_NAME  =  "users";                  public  static  final  String  COLUMN_NAME_NAME  =  "name";                  public  static  final  String  COLUMN_NAME_DRINK  =  "drink";                  public  static  final  String  COLUMN_NAME_SPORT  =  "sport";          }          //  Otras  tablas,  vistas...   }
  • 33. Persistencia: SQLite public  class  Ayudante  extends  SQLiteOpenHelper  {          public  static  final  String  DATABASE_NAME  =  "nombrebase.db";          public  static  final  int  DATABASE_VERSION  =  1;          public  static  final  String  SQL_CREATE_USERS  =                  "CREATE  TABLE  "  +  Users.TABLE_NAME         +  "  ("+  Users._ID  +  "  INTEGER  PRIMARY  KEY,  "                    +  Users.COLUMN_NAME_NAME  +  "  TEXT,  "         +  Users.COLUMN_NAME_DRINK  +  "  TEXT,  "                  +  Users.COLUMN_NAME_SPORT  +  "  TEXT)";          public  static  final  String  SQL_DELETE_USERS  =         "DROP  TABLE  IF  EXISTS  "  +  Users.TABLE_NAME;          //  Otras  Sentencias  ...          //  Las  bases  de  datos,  una  para  leer,  una  para  escribir  datos          SQLiteDatabase  escritor;          SQLiteDatabase  lector;          public  Ayudante(Context  context){                  super(context,  DATABASE_NAME,  null,  DATABASE_VERSION);          }   }
  • 34. Persistencia: SQLite public  boolean  insertarUsuario(Usuario  nuevo)  {          ContentValues  values  =  new  ContentValues();          values.put(Users.COLUMN_NAME_NAME,  nuevo.name);          values.put(Users.COLUMN_NAME_DRINK,  nuevo.drink);          values.put(Users.COLUMN_NAME_SPORT,  nuevo.sport);          long  inserted  =  escritor.insert(                          Users.TABLE_NAME,                          Users.COLUMN_NAME_NAME,                          values);          if(inserted  ==  -­‐1)  return  false;          return  true;   }
  • 35. Persistencia: SQLite public  List<Usuario>  consultarUsuarios(){          String[]  columns  =  {Users._ID,  Users.COLUMN_NAME_NAME,                  Users.COLUMN_NAME_DRINK,  Users.COLUMN_NAME_SPORT};          String  selection  =  null;  //Users.COLUMN_NAME_NAME  +  "  like  ?";          String  selectionArgs[]  =  null;  //{"%a%"};          String  groupBy  =  null;  //Users.COLUMN_NAME_SPORT;          String  having  =  null;  //condición  aritmética          String  orderBy  =  null;  //Users._ID;          String  limit  =  null;  //"10";          Cursor  results  =  lector.query(Users.TABLE_NAME,    columns,                  selection,  selectionArgs,  groupBy,    having,    orderBy,  limit);          //  results  ya  es  un  cursor  con  los  datos  de  regreso   }
  • 36. Persistencia: Archivos • Los directorios son de tipo File, así no sean archivos • Opción correcta para imágenes, o elementos que puedan ser compartidos por red, incluso para borradores de correos, o borradores de configuraciones que puedan ser guardados para beneficio del usuario y evitar complicarlo con llenar de nuevo muchos datos. <uses-­‐permission   android:name="android.permission.WRITE_EXTERNAL_STORAGE"  />   <uses-­‐permission   android:name="android.permission.READ_EXTERNAL_STORAGE"  />
  • 37. Persistencia: Archivos Interna • Siempre está disponible, por defecto. Cambiar con android:installLocation • Por defecto accede solo el app • Cuando el usuario des-instala el app, se eliminan los archivos • Es la mejor opción cuando queremos que ni el usuario u otras apps puedan acceder a los datos
  • 38. Persistencia: Archivos Externa • No siempre está disponible • No tiene recursos, es WORLD_READABLE • Solo se eliminan los archivos al des-instalar, cuando se guardan en getExternalDir() • Es lo mejor cuando son archivos que queremos que se compartan con otras apps (¿fotos?)
  • 39. Persistencia: Preferencias compartidas • Valores en mapa • Datos primitivos y String • ruta-app/diccionario recuperado cada apertura • getSharedPreferences() Vs getPreferences() • MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, MODE_PRIVATE • Editor: getEditor(), put…(), commit()
  • 40. Persistencia: Preferencias compartidas • Ejercicio tres tipos de variables • String • int • boolean
  • 42. Geolocalización • Fragmentos • Conexión con la cuenta de desarrollador • Firma SHA1
  • 43. Geolocalización • Manifiesto con permisos de acceso a sensores. • Google Play Services
  • 44. Geolocalización <uses-­‐permission   android:name="android.permission.INTERNET"/>   <uses-­‐permission   android:name="android.permission.ACCESS_NETWORK_STATE"/>   <uses-­‐permission   android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   <uses-­‐permission   android:name=   "com.google.android.providers.gsf.permission.READ_GSERVICES"/>   <!-­‐-­‐  The  following  two  permissions  are  not  required  to  use   Google  Maps  Android  API  v2,  but  are  recommended.  -­‐-­‐>   <uses-­‐permission   android:name="android.permission.ACCESS_COARSE_LOCATION"/>   <uses-­‐permission   android:name="android.permission.ACCESS_FINE_LOCATION"/>
  • 45. Geolocalización: Java import  com.google.android.gms.maps.MapFragment;   /*…*/   MapFragment  elMapaQueVamosAInyectar  =  new  MapFragment();   FragmentManager  fm  =  getActivity().getFragmentManager();   fm.beginTransaction().add(     R.id.contenedor_mapa  +  mapaId,     elMapaQueVamosAInyectar,     “mapa")   .commit();
  • 46. Geolocalización: XML <fragment     android:id="@+id/map"     android:layout_width="match_parent"     android:layout_height="match_parent"     class="com.google.android.gms.maps.MapFragment"  />       <FrameLayout  android:id="@+id/contenedor_mapa"   android:layout_width="match_parent"   android:layout_height=“match_parent"></FrameLayout>
  • 47. TEMA SESIÓN TEMA SESIÓN Historia 1 Geolocalización 2 Workflow 1 IDE/Debug 3 “Hello World” 1 Fragmentos 3 Ciclo de vida 1 Interfaces 3 Action Bar 1 Notificaciones 4 XML Layouts 1 Consumo APIs 4 Menús 2 GCM 4 Persistencia 2 Q&A 1-4
  • 49. TEMA SESIÓN TEMA SESIÓN Historia 1 Geolocalización 2 Workflow 1 IDE/Debug 3 “Hello World” 1 Fragmentos 3 Ciclo de vida 1 Interfaces 3 Action Bar 1 Notificaciones 4 XML Layouts 1 Consumo APIs 4 Menús 2 GCM 4 Persistencia 2 Q&A 1-4
  • 50. Debug Escoger punto(s) de interrupción y ejecutar el APK con el insecto.
  • 51. Debug Llegar al punto de interrupción en el teléfono (ó emulador).
  • 53. Fragmentos • Nuevo estándar • Re-utilización de código • Ciclo de vida propio • Transacciones • Diseño multi-screen • Teléfonos • Tabletas • Wear
  • 55. Fragmentos: Interfaces • Manera segura de compartir información. • getActivity() funciona desde un fragmento para acceder a otro, pero no de manera segura. • La interfaz exige comunicación y favorece trabajo colaborativo. • Estándar de métodos de comunicación.
  • 58. GCM: Google Cloud Messaging https://developer.android.com/google/gcm/index.html
  • 59. GCM: Google Cloud Messaging • SENDER_ID (API Console) • Verificar SharedPreferences • registerInBackground • Pedir un regId (registration ID) del server GCM • Alojar el ID en la DB propia • Alojar el ID en SharedPreferences • BroadcastReceiver escuchando push • IntentService que notifica
  • 60. TEMA SESIÓN TEMA SESIÓN Historia 1 Geolocalización 2 Workflow 1 IDE/Debug 3 “Hello World” 1 Fragmentos 3 Ciclo de vida 1 Interfaces 3 Action Bar 1 Notificaciones 4 XML Layouts 1 Consumo APIs 4 Menús 2 GCM 4 Persistencia 2 Q&A 1-4
  • 61. #Cappacitate2015, @appsco, @Ministerio_TIC, @cymetria, @Tecnalia_co, @unmultimedio Gracias! Bogotá, Abril 2015