O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Curso de android

  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

Curso de android

  1. 1. Desarrollo  de  Aplicaciones  Móviles  en  Android   Profesorado:   Jorge  E.  Carballo  Franquis   David  D.  Harjani  Harjani   Director:   José  Luis  Roda  
  2. 2. Índice  •  SQLite  •  Tabs  •  Closing  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   2  
  3. 3. SQLite  •  Base  de  datos  relacional  para  sistemas   embebidos  •  Ocupa  únicamente  unos  225KB  en  memoria  •  No  se  trata  de  un  proceso,  sino  de  una  librería   que  se  añade  dinámicamente  a  las  aplicaciones   que  quieren  uWlizar  SQLite  •  Implementa  la  mayor  parte  del  estándar  SQL-­‐92,   pero  con  restricciones  •  Soporte  para  ALTER_TABLE  limitado  •  Las  columnas  no  Wenen  Wpos  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   3  
  4. 4. SQLite  •  Existen  diferentes  herramientas,  como  sqlite3,   disponible  desde  sqlite.org  •  Existen  un  plugin  de  Firefox  para  visualizar   bases  de  datos  SQLite  (recomendado)  •  Se  uWliza  internamente  en  Firefox  y   Thunderbird  •  Lo  uWlizan  la  mayoría  de  las  plataformas   móviles  (iOS,  Android,  WP7,  BlackBerry  OS,   webOS)  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   4  
  5. 5. SQLite  en  Android  •  Existen  múlWples  formas  de  atacar  SQLite  •  Nosotros  veremos  una  en  la  que  separamos  el   acceso  a  la  base  de  datos  del  objeto  Java  que   representa  cada  fila  de  la  base  de  datos  •  No  existen  las  claves  ajenas  o  foráneas,  y  en  el   caso  de  necesitarlas,  debemos  forzarlas  “a   mano”  •  Es  relaWvamente  fácil  conectar  una  base  de   datos  a  una  lista  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   5  
  6. 6. SQLite  en  Android  •  La  base  de  datos  está  protegida  dentro  de  la   memoria  interna  del  disposiWvo  •  Mientras  trabajamos  con  el  emulador  (donde   tenemos  acceso  root),  podemos  extraer  (con   DDMS)  el  archivo  de  la  base  de  datos  y   visualizarlo  •  En  general,  el  acceso  suele  ser  rápido  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   6  
  7. 7. SQLite  en  Android  •  Nosotros  queremos  guardar  un  objeto  Java   (un  JavaBean  o  un  POJO)  en  una  base  de  datos  •  El  objeWvo  es  que  cada  fila  de  la  tabla  de  la   base  de  datos  represente  unívocamente  a  un   objeto  Java  •  Por  tanto,  necesitamos  dos  clases:   –  Objeto  Java  con  modificaciones   –  Clase  SQLiteOpenHelper  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   7  
  8. 8. SQLite  en  Android  •  En  nuestro  objeto  Java  tendremos  los   siguientes  métodos:   -­‐  public  sta+c  Cursor  getAll(SQLiteDatabase  db)  {}     -­‐  public  sta+c  DbCryptoAlgorithm   loadFrom(SQLiteDatabase  db,  long  id)  {}     -­‐  public  DbCryptoAlgorithm  loadFrom(Cursor  c)  {}     -­‐  public  long  save(SQLiteDatabase  db)  {}    11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   8  
  9. 9. SQLite  en  Android  •  La  SQLiteOpenHelper  es  una  clase  que   exWende  la  anterior  para  crear  nuestras  tablas   en  la  base  de  datos  •  Además,  conWene  información  como  el   nombre  de  la  base  de  datos,  el  nombre  de  la   tabla  y  la  versión  actual  del  esquema  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   9  
  10. 10. SQLite  en  Android  •  Los  métodos  de  la  clase  que  exWende   SQLiteOpenHelper  son:   -­‐  public  void  onCreate(SQLiteDatabase  db)  {}     -­‐  public  void  onUpgrade(SQLiteDatabase  db,  int   versionAn+gua,  int  versionNueva)  {}     -­‐  public  void  onOpen(SQLiteDatabase  db)  {}    11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   10  
  11. 11. Pestañas  •  Las  pestañas  o  Tabs  facilitan  la  navegación  en   nuestra  aplicación  
  12. 12. Creación  de  Pestañas    •  Se  necesitara  un  TabHost  y  un  TabWidget•  El  TabHost  deberá  ser  el  nodo  padre  del   layout   –  TabWidget  (Pestañas)   –  FrameLayout (Contenido  de  las  pestañas)  •  Dos  formas  de  implementación   –  Diferentes  Views  en  la  misma  acWvidad   –  Diferentes  acWvidades  
  13. 13. Cada  pestaña  una  acWvidad  •  Cada  acWvidad  será  una  de  nuestras  pestañas  <?XML  version="1.0"  encoding="ur-­‐8"?>  <TabHost  xmlns:android="htp://schemas.android.com/apk/res/android"          android:id="@android:id/tabhost"          android:layout_width="fill_parent"          android:layout_height="fill_parent">          <LinearLayout                  android:orientaWon="verWcal"                  android:layout_width="fill_parent"                  android:layout_height="fill_parent"                  android:padding="5dp">                  <TabWidget                          android:id="@android:id/tabs"                          android:layout_width="fill_parent"                          android:layout_height="wrap_content"  />                  <FrameLayout                          android:id="@android:id/tabcontent"                          android:layout_width="fill_parent"                          android:layout_height="fill_parent"                          android;padding="5dp"  />          </LinearLayout>  </TabHost>  
  14. 14. AcWvidad  principal  •  Deberá  extender  de  TabActivity•  En  el  método  onCreate()TabHost  tabHost  =  getTabHost();    //  The  acWvity  TabHost    TabHost.TabSpec  spec;    //  Reusable  TabSpec  for  each  tab    Intent  intent;    //  Reusable  Intent  for  each  tab      //  Create  an  Intent  to  launch  an  AcWvity  for  the  tab  (to  be  reused)    intent  =  new  Intent().setClass(this,  ArWstsAcWvity.class);      //  IniWalize  a  TabSpec  for  each  tab  and  add  it  to  the  TabHost    spec  =  tabHost.newTabSpec("arWsts").setIndicator("ArWsts",                                              res.getDrawable(R.drawable.ic_tab_arWsts))                                      .setContent(intent);    tabHost.addTab(spec);          tabHost.setCurrentTab(getIntent());  
  15. 15. Closing  •  More…     –  Google  I/O  2009   –  Google  I/O  2010   –  Google  I/O  2011   –  Autores   •  Mark  Murphy   •  Reto  Meier   •  Ed  Burnete   –  Las  API  Demos  que  provee  el  SDK,  hechas  por  el   propio  equipo  de  Android  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   15  
  16. 16. Closing  •  Seguridad  en  Smartphones   –  En  la  mayoría  de  procesadores,  los  algoritmos  de   cifrado  más  importantes  están  implementados  en  el   chip  (hard-­‐wired)   –  UWlizamos  algoritmos  de  seguridad  constantemente   en  Internet  (redes  Wi-­‐Fi,  protocolo  HTTPS)   –  Podemos  acceder  a  ellos  a  través  de  la  librería  java   crypto  (pero  no  es  trivial)   –  Es  recomendable  guardar  las  contraseñas  encriptadas,   y  si  es  posible,  no  usar  algoritmos  débiles  como  MD5,   SHA-­‐1  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   16  
  17. 17. Closing  •  Power  Efficiency   –  Los  Smartphones  se  construyen  siguiendo  la   ideología  System-­‐on-­‐a-­‐Chip  (SoC)   –  Todos  los  componentes  (procesador,  módem   [radios],  adaptador  de  pantalla,  cámaras,  GPS,   micrófonos,  etc.)  están  en  una  sola  placa  o  chip   –  Un  Smartphone  no  posee  un  único  procesador,   sino  uno  específico  para  determinadas  funciones   –  Cuando  hablamos  de  un  ARM11,  ARM  Cortex  A8/ A9,  hablamos  del  procesador  de  aplicaciones  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   17  
  18. 18. Closing  •  La  industria  de  hardware  en  smartphones  es  bastante   diferente  a  la  de  los  PCs  •  Actualmente,  hablamos  de  que  una  implementación  de   ARM  Cortex  A8  puede  variar  entre  1000  y  2000  MIPS   (Million  instrucWons  per-­‐second),  siendo  un  procesador   súper  escalar  •  Un  ARM  Cortex  A9  alcanza  perfectamente  4000  MIPS,  con   promesas  de  hasta  8000  •  Los  fabricantes  de  smartphones  piden  los  componentes  a   disWntas  empresas  (la  pantalla,  los  botones,  los  plásWcos,  el   SoC,  etc.)  y  luego  los  ensamblan  en  sus  fábricas  •  La  media  de  Wempo  de  desarrollo  de  un  smartphone,  desde   su  concepción  hasta  el  mercado,  es  de  18  meses  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   18  
  19. 19. Closing  •  Actualmente,  estamos  entrando  en  la  tercera   generación  de  disposiWvos  Android  (Galaxy  Nexus   S,  Samsung  Galaxy  S  II,  HTC  SensaWon,  LG   OpWmus  2X)  •  Comienzan  a  aparacer  tablets  con  Android   (Samsung  Galaxy  Tab  10.1,  Motorola  Xoom)  •  La  verdadera  explosión  de  los  teléfonos  mul$   core  (Cortex  A9)  está  aún  por  llegar  •  Intel,  con  su  «Atom  reducido»,  no  sigue  la   arquitectura  ARM  sino  la  x86.  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   19  
  20. 20. Closing  •  Android  es  la  plataforma  que  más  está  creciendo   en  popularidad  en  Estados  Unidos,  y  ya  ha   superado  a  iOS  como  líder  en  cuota  de  mercado,   pero  sólo  en  smartphones  •  Es  líder  en  tráfico  de  móviles  (según  AdMob)   superando  incluso  a  iOS  (anWguamente  iPhone   OS)  •  En  Europa  está  extendiéndose  como  plataforma,   pero  desgraciadamente  la  mayoría  de  usuarios   no  saben  que  Wenen  Android  ni  lo  que  es  •  Falta  un  mayor  empuje  de  publicidad  que  resalte   las  buenas  cualidades  de  los  disposiWvos  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   20  
  21. 21. Closing  •  El  mercado  de  aplicaciones  móviles  (tablets  y   smartphones)  crece  año  tras  año  •  Se  espera  que  el  número  de  aplicaciones   descargadas  crezca  de  8,2  mil  millones  de  2010  a   los  17,7  mil  millones  en  2011  •  Los  beneficios  obtenidos  en  2010  por   aplicaciones  móviles  se  esWmó  en  5,2  mil   millones  de  dólares,  y  para  2011  se  espera  que   crezca  hasta  los  15,1  mil  millones   –  Fuente:  GARTNER    htp://www.gartner.com/it/page.jsp?id=1529214  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   21  
  22. 22. Closing  •  ¿Por  qué?  •  El  consumidor  general  está  comenzando  a  entender  la   existencia  de  los  smartphones,  ni  los  servicios  que   ofrece  •  Los  smartphones  apenas  representan  un  10  ó  15%  de   las  ventas  de  móviles,  pero  son  los  que  más  beneficios   reportan  a  fabricantes  y  operadoras  •  En  los  mercados  emergentes,  se  produce  un  número   millonario  de  altas  nuevas  cada  mes  •  La  concienciación  sobre  los  smartphones  crece  poco  a   poco,  y  el  número  de  usuarios  conWnuará  aumentando  •  Muchos  creen  que  aún  no  se  ha  producido  la   verdadera  explosión  de  usuarios  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   22  
  23. 23. Closing  •  Android  Market   –  Actualmente  está  en  pleno  apogeo,  con  más  de   500,000  aplicaciones   –  No  importa  el  número,  sino  la  calidad   –  Para  ser  desarrollador,  solamente  es  necesario  pagar   25  euros  una  sola  vez   –  Podemos  subir  todas  las  aplicaciones  que  queramos,   aparecen  automáWcamente   –  Si  nuestra  aplicación  es  de  pago,  no  la  veremos  en   nuestro  disposiWvo  (no  podemos  comprar  nuestras   aplicaciones)   –  El  raWo  es  70%  para  el  desarrollador  y  30%  para  el   operador,  no  Google  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   23  
  24. 24. Closing  •  Android  Market   –  Existen  diferentes  estrategias  para  vender   aplicaciones:  publicidad,  versiones  “Donate”,  etc.   –  La  posibilidad  de  realizar  compras  desde  la  propia   aplicación  abre  paso  a  una  vieja  costumbre,  el   shareware   –  Los  pagos  se  realizan  a  través  de  Google  Checkout   –  Como  Android  es  libre,  existen  otros  mercados   que  compiten  con  el  Market;  especial  mención   merecen  la  Amazon  Android  Appstore  y  Getjar  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   24  
  25. 25. Closing  •  Eficiencia   –  Cuando  programamos  para  un  ordenador,  hacer   un  bucle  como:     •  for  (int  k  =  0;  k  <  S[i][j]*R[i][j]  +  1;  k++)   –  No  Wene  graves  consecuencias,  pero  en  un  móvil   sí,  porque  repeWmos  el  gasto  de  batería  para  la   misma  operación   –  De  hecho,  este  bucle  «clásico»  ya  es  ineficiente:   •  For  (int  i  =  0;  i  <  myString.length;  i++)  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   25  
  26. 26. Closing  •  Eficiencia   –  Cuando  escribimos  código  y  llamamos  código  desde   las  acWvidades,  estamos  ejecutando  desde  el  hilo  de  la   UI   –  Si  el  código  que  ejecutamos  tarda  más  de  5  segundos,   Android  detectará  que  la  UI  ha  dejado  de  responder   ante  el  usuario  y  le  preguntará  si  quiere  cerrarla   –  Debemos  separar  el  código  lento  en  un  nuevo  hilo,  y   mantener  el  hilo  de  la  UI  ocupado  con  un   ProgressDialog   –  También  podemos  hacer  uso  de  los  Tasks,  que  son   clases  que  nos  permiten  ejecutar  código  en  hilos   disWntos  a  la  UI  con  una  interfaz  pre-­‐definida  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   26  
  27. 27. Closing  •  ¿Es  importante  tener  un  disposiWvo  Android   de  verdad  como  desarrollador?   –  La  respuesta  es  siempre  SÍ  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   27  
  28. 28. Closing  •  ¿Vale  la  pena  gastarse  tanto  dinero?   –  Depende  de  si  vamos  a  inverWr  horas  en   desarrollar  aplicaciones  y  colocarlas  en  el  Android   Market  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   28  
  29. 29. Closing  •  Hay  tantos  disposiWvos  que  no  sé  cuál  comprar.   ¿Qué  es  lo  ideal?   –  Lo  ideal  es  tener  uno  de  cada  Wpo  de  pantalla   –  La  pantalla  y  los  controles  marcan  la  diferencia  entre   un  disposiWvo  y  otro;  podemos  hacernos  una  idea  de   cómo  funciona  un  pad  en  lugar  de  un  teclado,  pero  no   podemos  imaginarnos  una  pantalla  con  una   determinada  resolución  •  Lo  que  recomendamos  es  tener  2  disposiWvos:   uno  de  gama  baja/media  (HTC  Wildfire  S,  HTC   Legend,  etc.)  y  uno  de  gama  alta  (Galaxy  Nexus,   Samsung  Galaxy  S  II,  HTC  SensaWon,…)    11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   29  
  30. 30. Closing  •  ¿Algo  más  que  se  les  ocurra?  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   30  
  31. 31. Closing   ¡¡¡Gracias!!!  Jorge  Carballo  Franquis      (jelcaf@gmail.com)  David  Dinesh  Harjani  Harjani   (goldrunner192287@gmail.com,  @dinesharjani)  11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   31  

×