75

Click here to load reader

Projetando Mobile 2 - PhoneGap

Embed Size (px)

Citation preview

Page 1: Projetando Mobile 2 - PhoneGap

Projetando  MobilePhoneGAP  -­‐  Parte  2  !By  Igor  Portela

Page 2: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

Quem sou eu?• Especialista em Mobilidade e Sistemas Embarcados –

Estácio de Sá • Certificado LPIC1 (Linux Professional Institute Certified), • CLA (Novell Certified Linux Administrator), • Novell Datacenter Technical Specialist. • CEO e fundador da Wake Up Digital. • Palestrante IEEE e Google I/O Extend • Curador do Startup Genome João Pessoa • Organizador de dois Startups Weekends

Page 3: Projetando Mobile 2 - PhoneGap

Sumário

MEDIA  CAPTURE  CAMERA  CONTACTS  EVENTS  NOTIFICATIONS  ACCELEROMETER  !

Page 4: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

MEDIA  CAPTURE

navigator.device.capture  !PROVER  ACESSO  PARA  CAPTURAR  !AUDIO  IMAGE  VIDEO  !DIRETAMENTE  DO  DISPOSITIVO  !

Page 5: Projetando Mobile 2 - PhoneGap

MEDIA  CAPTURE

navigator.device.capture  !!!!!!!!!Todos  contém  um  array  do  objeto  ConfigurationData

Page 6: Projetando Mobile 2 - PhoneGap

CONFIGURATION  DATA

É  USADO  PARA  DESCREVER  O  MEDIA  CAPTURE  MODES  SUPORTADO  PELO  DISPOSITIVO  

!PROPRIEDADES  !1.  TYPE:  STRING  !É  representado  em  minúsculo  no  tipo  de  mídia  !-­‐  video/3gpp                                        -­‐  audio/amr  -­‐  video/quicktime                      -­‐  audio/war  -­‐  image/jpeg      

Page 7: Projetando Mobile 2 - PhoneGap

CONFIGURATION  DATA

2.  HEIGHT:  integer          A  altura  da  imagem  ou  vídeo  em  pixels  !3.  WIDTH:  integer        A  largura  da  imagem  ou  vídeo  em  pixels  !No  caso  de  audio,  é  colocado  o  valor  0  para  esses  atributos.

Page 8: Projetando Mobile 2 - PhoneGap

EXEMPLO

Page 9: Projetando Mobile 2 - PhoneGap

CAPTURING  AUDIO

É  chamado  no  objeto  capture  !!!!!!!Comece  a  gravar  o  audio  em  uma  aplicação  e  retorne  a  informação  sobre  o  arquivo  de  áudio  capturado.  !

Page 10: Projetando Mobile 2 - PhoneGap

!10

CAPTURING  AUDIO

Começa  com  uma  operação  assíncrona  para  capturar  chamadas  de  áudio    !Usa  o  aplicativo  de  gravação  de  áudio  padrão  do  dispositivo  !A  operação  permite  que  o  usuário  do  dispositivo  grave  múltiplos  áudios      

Page 11: Projetando Mobile 2 - PhoneGap

CAPTURING  AUDIO

Quando  a  operação  de  captura  é  finalizada,  chama-­‐se  o  CaptureCB,  callback  com  um  array  de  objetos  MediaFile  !Se  a  operação  for  terminada  pelo  usuário  ante  do  audio  ser  capturado  por  completo,  o  CaptureErrorCB  vai  ser  chamado  

Page 12: Projetando Mobile 2 - PhoneGap

CAPTURE  AUDIO  OPTIONS

Propriedades:  !Limit  (Não  suportada  no  IOS  =>  apenas  uma  gravação  por  vez)  !O  máximo  que  o  usuário  pode  gravar  em  apenas  uma  operação  !Duration  (Não  suportada  no  Android  =>  ilimitado)  A  máxima  duração  do  áudio,  em  segundos.

Page 13: Projetando Mobile 2 - PhoneGap

EXEMPLO  AUDIO

Page 14: Projetando Mobile 2 - PhoneGap

CAPTURANDO  IMAGENS

É  chamado  no  objeto  capture  !Inicia  a  aplicação  da  câmera  e  retorna  a  informação  sobre  a  imagem  capturada.  !

Page 15: Projetando Mobile 2 - PhoneGap

Começa  com  uma  operação  assíncrona  para  capturar  imagens  !Usa  a  aplicação  de  câmera  do  dispositivo  !A  operação  permite  que  o  usuário  do  dispositivo  grave  múltiplas  images  em  uma  única  sessão.    

CAPTURANDO  IMAGENS

Page 16: Projetando Mobile 2 - PhoneGap

CAPTURANDO  IMAGENS

Quando  a  operação  de  captura  é  finalizada,  chama-­‐se  o  CaptureCB,  callback  com  um  array  de  objetos  MediaFile  !Se  a  operação  for  terminada  pelo  usuário  ante  do  audio  ser  capturado  por  completo,  o  CaptureErrorCB  vai  ser  chamado  

Page 17: Projetando Mobile 2 - PhoneGap

Propriedades:  !Limit  (Não  suportada  no  IOS  =>  apenas  uma  gravação  por  vez)  !O  máximo  que  o  usuário  pode  gravar  em  apenas  uma  operação  !

CAPTURANDO  IMAGENS

Page 18: Projetando Mobile 2 - PhoneGap

EXEMPLO  DE  IMAGEM

Page 19: Projetando Mobile 2 - PhoneGap

GRAVANDO  VÍDEOS

É  chamado  no  objeto  Capture  !Inicia  a  aplicação  da  gravar  vídeo  e  retorna  a  informação  sobre  o  vídeo  capturado.  

Page 20: Projetando Mobile 2 - PhoneGap

Começa  com  uma  operação  assíncrona  para  gravar  vídeos  !Usa  a  aplicação  de  gravação  de  vídeos  !A  operação  permite  que  o  usuário  do  dispositivo  grave  múltiplos  vídeos  em  uma  única  sessão.    

GRAVANDO  VÍDEOS

Page 21: Projetando Mobile 2 - PhoneGap

Quando  a  operação  de  captura  é  finalizada,  chama-­‐se  o  CaptureCB,  callback  com  um  array  de  objetos  MediaFile  !Se  a  operação  for  terminada  pelo  usuário  ante  do  audio  ser  capturado  por  completo,  o  CaptureErrorCB  vai  ser  chamado  

GRAVANDO  VÍDEOS

Page 22: Projetando Mobile 2 - PhoneGap

GRAVANDO  VÍDEOS

Propriedades:  !Limit  (Não  suportada  no  IOS  =>  apenas  um  vídeo  por  vez)  !O  máximo  de  vídeos  que  o  usuário  pode  gravar  em  apenas  uma  operação.  !Duration  -­‐  ilimitado  no  Android  e  IOS

Page 23: Projetando Mobile 2 - PhoneGap

EXEMPLO  -­‐  GRAVANDO  VÍDEOS

Page 24: Projetando Mobile 2 - PhoneGap

MediaFile  encapsula  propriedades  dos  arquivos  de  mídia  capturados  !Propriedades

MEDIA  FILE

Page 25: Projetando Mobile 2 - PhoneGap

Sumário

MEDIA  CAPTURE  CAMERA  CONTACTS  EVENTS  NOTIFICATIONS  ACCELEROMETER

Page 26: Projetando Mobile 2 - PhoneGap

API  dedicada  para  capturar  imagens  da  aplicação  padrão  da  câmera  do  dispositivo

CAMERA

Tire  a  foto  a  câmera  ou  utilize  uma  foto  do  album  do  dispositivo

Page 27: Projetando Mobile 2 - PhoneGap

O  resultado  da  chamada  getPicture()  pode  ser:  !-­‐ uma  string  base64  encoded  -­‐ a  URI  do  arquivo  da  imagem  !É  recomendado  usar  a  URI,  pois  o  base64  pode  causar  problemas  na  utilização  da  memória  em  alguns  dispositivos

CAMERA

Page 28: Projetando Mobile 2 - PhoneGap

getPicture()  pode  ser  chamada  com  as  seguintes  opções

OPÇÕES  DA  CÂMERA

Page 29: Projetando Mobile 2 - PhoneGap

quality  (integer)      Qualidade  da  imagem  salva      Range[0,100]  !destinationType(integer)

OPÇÕES  DA  CÂMERA

Page 30: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

sourceType  (integer)

allowEdit  (boolean)  Permite  uma  simples  edição  da  imagem  antes  da  seleção

OPÇÕES  DA  CÂMERA

Page 31: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

encodingType  (integer)

targetWidth,  targetHeight  (integer)  Largura  e  altura  em  pixels

OPÇÕES  DA  CÂMERA

Page 32: Projetando Mobile 2 - PhoneGap

mediaType  (integer)

correctOrientation  (boolean)  Rotacionar  a  imagem  para  a  orientação  correta  do  dispositivo  durante  a  captura

OPÇÕES  DA  CÂMERA

Page 33: Projetando Mobile 2 - PhoneGap

saveToPhotoAlbum  (boolean)  Salvar  a  imagem  para  o  album  de  fotos  no  dispositivo  após  a  captura

popoverOptions  (Object)  Apenas  no  iPad  

OPÇÕES  DA  CÂMERA

Page 34: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

cameraDirection  (integer)  Escolher  se  a  imagem  será  da  câmera  da  frente  ou  de  trás  do  dispositivo  

OPÇÕES  DA  CÂMERA

Page 35: Projetando Mobile 2 - PhoneGap

EXEMPLO  DA  CÂMERA

Page 36: Projetando Mobile 2 - PhoneGap

Sumário

MEDIA  CAPTURE  CAMERA  CONTACTS  EVENTS  NOTIFICATIONS  ACCELEROMETER

Page 37: Projetando Mobile 2 - PhoneGap

navigator.contacts

CONTATO

Objeto  global  que  prover  acesso  para  os  contatos  do  dispositivo  !Você  pode  chamar  dois  métodos  no  navigator.contacts  !-­‐ contacts.create  -­‐ contacts.find

Page 38: Projetando Mobile 2 - PhoneGap

CRIANDO  CONTATO

navigator.contacts.create(properties)

É  uma  função  síncrona  que  retorna  um  novo  objeto  Contato  !Para  persistir  o  Contato  objeto  para  o  dispositivo,  você  tem  que  chamar  o  método  Contacts.save  

Page 39: Projetando Mobile 2 - PhoneGap

OBJETO  CONTATO

O  parâmetro  properties  é  um  mapa  de  propriedades  do  novo  objeto  Contato

navigator.contacts.create(properties)

Page 40: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

CRIANDO  CONTATO

navigator.contacts.create(properties)

Um  contato  pode  ser  criado,  editado  ou  removido  do  banco  de  dados  de  contato  do  dispositivo  !O  método  contacts.find  é  usado  para  consultar  um  ou  mais  Contatos  do  banco  de  dados  de  contato  do  dispositivo

Page 41: Projetando Mobile 2 - PhoneGap

As  propriedades  que  um  contato  pode  ter:  

PROPRIEDADES  DO  CONTATO

Page 42: Projetando Mobile 2 - PhoneGap

MÉTODOS  DO  CONTATO

Clone()  !!Remove(win,  fail)  !!Save(win,  fail)  

Page 43: Projetando Mobile 2 - PhoneGap

EXEMPLO  DO  CONTATO

Page 44: Projetando Mobile 2 - PhoneGap

Encontrando  CONTATOS

Função  assíncrona  que  retorna  um  Array  de  Contatos

Page 45: Projetando Mobile 2 - PhoneGap

04/04/14 ‹#›

contactFields(String)  !contactSuccess(win,  fail)  !contactError[optional]  !contactFindOptions[Optional]

CONTATOS  -­‐  Parâmetros  do  FIND

Page 46: Projetando Mobile 2 - PhoneGap

Especifique  os  campos  que  você  quer  incluir

CONTATOS  -­‐  Campos

Page 47: Projetando Mobile 2 - PhoneGap

CONTATOS  -­‐  Opções  do  FIND

Filtrar  resultados

filter(String)  -­‐  default  -­‐  ''  !multiple(Boolean)  -­‐  default:  false

Page 48: Projetando Mobile 2 - PhoneGap

Exemplo  -­‐  CONTATOS  -­‐  FIND

Como  funciona?

Page 49: Projetando Mobile 2 - PhoneGap

CONTATOS  -­‐  ERRO

Sempre  vai  acontecer  um  erro  quando?

Page 50: Projetando Mobile 2 - PhoneGap

Sumário

MEDIA  CAPTURE  CAMERA  CONTACTS  EVENTS  NOTIFICATIONS  ACCELEROMETER

Page 51: Projetando Mobile 2 - PhoneGap

EVENTOS

Uma  evento  é  uma  ação  que  pode  ser  detectada  pelo  código  JS  !onclick  ontouchstart  onLoad  …

Page 52: Projetando Mobile 2 - PhoneGap

EVENTOSEVENTOS

Para  usar  um  elemento,  você  vai  querer  um  event  listener

Page 53: Projetando Mobile 2 - PhoneGap

EVENTOS  -­‐  MAIN  CORDOVA

Page 54: Projetando Mobile 2 - PhoneGap

EVENTOS  -­‐  DEVICEREADY

É  o  evento  mais  importante  da  app  Cordova.  !Cordova  consistem  em  duas  bases  de  códigos:  -­‐ Nativo  -­‐ JS  !Significa  que:  -­‐  O  DOM  foi  carregado  -­‐  A  API  nativa  cordova  também  foi  carregada.

Page 55: Projetando Mobile 2 - PhoneGap

CICLO  DE  VIDA  DE  EVENTOS  NO  APP

Baseado  em  dois  eventos  principais:  !pause  !resume

Page 56: Projetando Mobile 2 - PhoneGap

EVENTOS  DE  CONEXÃO

Baseado  em  dois  eventos  principais:  !online  !offline

Page 57: Projetando Mobile 2 - PhoneGap

CONEXÃO

Objeto:  navigator.network.connection  

Page 58: Projetando Mobile 2 - PhoneGap

EVENTOS  DE  BATERIA

!58

Três  eventos  principais  !batterycritical  !batterylow  !batterystatus  

Page 59: Projetando Mobile 2 - PhoneGap

!59

EVENTOS  DE  BATERIA

Três  eventos  principais  !level(Integer)  !isPlugged(Boolean)  !!

Page 60: Projetando Mobile 2 - PhoneGap

Eventos  de  butões  no  Android

!60

backbutton  !menubutton  !searchbutton  

Page 61: Projetando Mobile 2 - PhoneGap

!61

Sumário

MEDIA  CAPTURE  CAMERA  CONTACTS  EVENTS  NOTIFICATIONS  ACCELEROMETER

Page 62: Projetando Mobile 2 - PhoneGap

NOTIFICATIONS

!62

Prover  feedback  para  o  usuário  !Alert  Confirm  Prompt  Beep  Vibrate

Page 63: Projetando Mobile 2 - PhoneGap

ALERT

!63

!!Mostre  uma  mensagem  personalizada:  !

Page 64: Projetando Mobile 2 - PhoneGap

CONFIRM

!64

Parecido  com  o  alert,  para  personalizar

Page 65: Projetando Mobile 2 - PhoneGap

PROMPT

!65

Parecido  com  o  confirm,  para  personalizar

Page 66: Projetando Mobile 2 - PhoneGap

BEEP

!66

Som  de  BEEP

times:  o  número  de  vezes  que  repete  o  beep

Page 67: Projetando Mobile 2 - PhoneGap

Vibração

Vibra  o  dispositivo

milliseconds:  duração

Page 68: Projetando Mobile 2 - PhoneGap

MEDIA  CAPTURE  CAMERA  CONTACTS  EVENTS  NOTIFICATIONS  ACCELEROMETER

Sumário

Page 69: Projetando Mobile 2 - PhoneGap

Acelerômetro

!69

Captura  o  movimento  do  aparelho  nas  três  dimensões,  x,y  e  z

Page 70: Projetando Mobile 2 - PhoneGap

getCurrentAcceleration

!70

win  !fail

Page 71: Projetando Mobile 2 - PhoneGap

!71

watchAcceleration

win  !fail  !options

Page 72: Projetando Mobile 2 - PhoneGap

!72

clearAcceleration

Page 73: Projetando Mobile 2 - PhoneGap

Exemplo  -­‐  Acelerômetro

!73

Page 74: Projetando Mobile 2 - PhoneGap

Snake  Detection

!74

Page 75: Projetando Mobile 2 - PhoneGap

FIM