curso de android

31
Desarrollo de Aplicaciones Móviles en Android Profesorado: Jorge E. Carballo Franquis David D. Harjani Harjani Director: José Luis Roda

Upload: home

Post on 13-Jun-2015

135 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curso de android

Desarrollo  de  Aplicaciones  Móviles  en  Android  Profesorado:  

Jorge  E.  Carballo  Franquis  David  D.  Harjani  Harjani  

Director:  José  Luis  Roda  

Page 2: Curso de android

Índice  

•  SQLite  •  Tabs  •  Closing  

11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   2  

Page 3: Curso de android

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  

Page 4: Curso de android

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  

Page 5: Curso de android

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  

Page 6: Curso de android

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  

Page 7: Curso de android

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  

Page 8: Curso de android

SQLite  en  Android  

•  En  nuestro  objeto  Java  tendremos  los  siguientes  métodos:  

11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   8  

-­‐  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)  {}  

 

Page 9: Curso de android

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  

Page 10: Curso de android

SQLite  en  Android  

•  Los  métodos  de  la  clase  que  exWende  SQLiteOpenHelper  son:  

11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   10  

-­‐  public  void  onCreate(SQLiteDatabase  db)  {}    -­‐  public  void  onUpgrade(SQLiteDatabase  db,  int  

versionAn+gua,  int  versionNueva)  {}    -­‐  public  void  onOpen(SQLiteDatabase  db)  {}  

 

Page 11: Curso de android

Pestañas  

•  Las  pestañas  o  Tabs  facilitan  la  navegación  en  nuestra  aplicación  

Page 12: Curso de android

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  

Page 13: Curso de android

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>  

Page 14: Curso de android

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());  

Page 15: Curso de android

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  

Page 16: Curso de android

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  

Page 17: Curso de android

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  

Page 18: Curso de android

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  

Page 19: Curso de android

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  

Page 20: Curso de android

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  

Page 21: Curso de android

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  

Page 22: Curso de android

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  

Page 23: Curso de android

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  

Page 24: Curso de android

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  

Page 25: Curso de android

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  

Page 26: Curso de android

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  

Page 27: Curso de android

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  

Page 28: Curso de android

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  

Page 29: Curso de android

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  

Page 30: Curso de android

Closing  

•  ¿Algo  más  que  se  les  ocurra?  

11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   30  

Page 31: Curso de android

Closing  

¡¡¡Gracias!!!  

Jorge  Carballo  Franquis      ([email protected])  

David  Dinesh  Harjani  Harjani  ([email protected],  @dinesharjani)  

11/7/11   Desarrollo  de  Aplicaciones  Móviles  en  Android   31