SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
#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 RedisAlberto Gimeno
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDBliras loca
 
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 DrupalAlessandro Mascherpa
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datosFernando 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.pptxLuis 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 1700Luis Fernando Aguas Bucheli
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto 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 10Byron Quisquinay
 
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 8Acquia
 
Programacion3 presentacion proyecto final SGBD_LC
Programacion3  presentacion proyecto final SGBD_LCProgramacion3  presentacion proyecto final SGBD_LC
Programacion3 presentacion proyecto final SGBD_LCBelen Toledo
 

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

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

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (20)

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

#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