Treinamento	
  em	
  Google	
  Android	
  
 Por:	
  	
  	
  	
  	
  Iury	
  Teixeira	
  
 Email:	
  iuryteixeira@nooclix.com.br	
  
 	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  franciury@gmail.com	
  
 Msn:	
  	
  	
  franciury@hotmail.com	
   	
  	
  	
  	
  
                                	
  	
  	
  
Quem	
  sou	
  ?	
  

•  Bacharel	
  em	
  Sistemas	
  de	
  Informação	
  
•  Especialização	
  em	
  Desenvolvimento	
  Web	
  com	
  
   JavaEE	
  (Cursando)	
  
•  Jug	
  Leader	
  CaJUG	
  
•  Sócio	
  na	
  nooclix	
  
•  Professor	
  
•  Cer3ficações:	
  SCJP	
  6	
  	
  	
  	
  	
  (CSM)	
  	
  
Quem	
  é	
  você?	
  
Agenda	
  

•  Android	
  ?	
  
    –  O	
  que	
  é	
  ?	
             •    Um	
  pouco	
  mais	
  de	
  conceitos	
  
    –  OHA	
                            •    Componentes	
  Básicos	
  
    –  Estrutura	
                      •    Widgets	
  
    –  Dalvik	
                         •    Ac3vity	
  
    –  Kernel	
                         •    Intent	
  
    –  Android	
  Market	
              •    Um	
  pouco	
  de	
  Layout	
  
    –  Emulador	
                       •    No3fica3on	
  
    –  Config.	
  Ambiente	
             •    HEpConnec3on	
  
    –  HelloWorld	
  Android	
  !	
  
Bibliografias	
  
Introdução	
  

•  O	
  mercado	
  mobile	
  cresceu	
  muito	
  nos	
  úlmos	
  
   anos;	
  
•  Uma	
  grande	
  procura	
  por:	
  	
  
       •  Jogos	
  3D	
  
       •  Internet	
  a	
  qualquer	
  hora	
  
       •  GPS	
  
       •  TV	
  Digital	
  
       •  Musicas	
  
       •  Ah,	
  e	
  fazer	
  ligações…!	
  
Introdução	
  

•  Todos	
  estamos	
  nos	
  acostumandos	
  com	
  a	
  
   comodidade;	
  
•  Opções	
  com	
  valor	
  elevado;	
  
•  Solução	
  acessível,	
  flexivel	
  e	
  poderosa;	
  
   –  Para	
  empresas;	
  
   –  Para	
  usuários;	
  
   –  Para	
  operadoras;	
  
   –  Para	
  nós,	
  desenvolvedores.	
  
O	
  Android	
  !	
  

•  Para	
  tanto	
  surgiu	
  o	
  Google	
  Android	
  !	
  
•  Plataforma	
  de	
  Desenvolvimento	
  para	
  
   aplicavos	
  móveis;	
  
•  Baseada	
  em	
  Linux;	
  
•  Já	
  possui	
  diversos	
  recursos	
  instalados	
  e	
  pré-­‐
   configurados;	
  
O	
  Android	
  !	
  

•  É	
  mando	
  pela	
  Google	
  e	
  	
  outras	
  instuições;	
  
    –  Como	
  assim	
  ?	
  
•  Um	
  grupo	
  chamado	
  OHA,	
  formado	
  por	
  várias	
  
   empresas	
  do	
  seguimento;	
  	
  
•  Uniram-­‐se	
  ao	
  Google	
  para	
  desenvolver	
  um	
  
   solução	
  aberta,	
  moderna	
  e	
  que	
  compesse	
  
   com	
  a	
  Apple;	
  
Open	
  Handset	
  Alliance	
  

•  OHA	
  –	
  Open	
  Handset	
  Alliance	
  
   –  São	
  lideres	
  de	
  mercado,	
  aliados	
  e	
  liderados	
  pelo	
  
      Google;	
  
   –  Como:	
  
       •  HTC,	
  Samsung,	
  Sony,	
  Motorola,	
  LG,	
  Toshiba,	
  Nextel,	
  
       •  T-­‐Mobile,	
  Asus,	
  Intel,	
  etc....	
  
       •  Em	
  tordo	
  de	
  50	
  empresas	
  integram	
  o	
  grupo!	
  

       •  Grande	
  vantagem	
  por	
  ser	
  OpenSource,	
  Free(Gratuito);	
  
Android	
  

•  Pode	
  ser	
  customizado	
  de	
  qualquer	
  forma;	
  

•  Integrar	
  aplicações	
  navas	
  com	
  as	
  suas;	
  

•  Não	
  há	
  diferenças	
  entre	
  as	
  apps	
  navas	
  e	
  as	
  
     desenvolvidas	
  por	
  terceiros;	
  
•  Recursos	
  3D	
  baseados	
  no	
  OpenGL	
  ES	
  
	
  
Depois	
  de	
  tanto	
  poder…	
  
Android	
  e	
  o	
  Linux	
  

•  Android	
  é	
  baseado	
  no	
  Kernel	
  2.6	
  do	
  Linux;	
  

•  O	
  Linux	
  é	
  responsável	
  por	
  gerenciar:	
  
   	
  
    Memória	
                                                Redes	
  
                                Threads	
  
    Processos	
                                              Drivers	
  
                               Segurança	
  
Android	
  e	
  o	
  Linux	
  

•  Gerenciamento	
  de	
  aplicações:	
  
   –  Cada	
  aplicação	
  inicia	
  um	
  processo;	
  
        •  Seja	
  com	
  telas	
  ou	
  em	
  background	
  
   –  Se	
  preciso	
  o	
  sistema	
  poderá	
  encerrar	
  um	
  processo	
  
      para	
  liberar	
  memória	
  e	
  recursos;	
  
        •  Podendo	
  ser	
  reiniciado...	
  


     	
  -­‐	
  Para	
  cada	
  aplicação	
  existe	
  um	
  usuário	
  no	
  
sistema	
  operacional;	
  	
  
	
  
Máquina	
  Virtual	
  

  –  Assim	
  como	
  no	
  Java,	
  o	
  Android	
  possui	
  uma	
  VM,	
  
     chamada	
  Dalvik.	
  VM	
  omizada	
  para	
  baixo	
  
     consumo	
  de	
  recursos	
  

  –  Essa	
  mesma,	
  é	
  responsável	
  por	
  efetuar	
  toda	
  
     compilação	
  e	
  transformar	
  em	
  código	
  executável	
  
     no	
  Android;	
  

  –  Não	
  existe	
  uma	
  JVM	
  no	
  Android;	
  
  –  E	
  como	
  funciona	
  ?	
  
Máquina	
  Virtual	
  
                                      Como	
  funciona	
  a	
  exportação	
  de	
  uma	
  	
  
Código	
  Java	
  
                                      aplicação	
  Android	
  !	
  

                .class	
  (Java	
  
                Compilado)	
  

                                      .dex	
  (Dalvik	
  
                                      Executável)	
  

                                                               .apk	
  (Aplicação,	
  
                                                                  imagens…)	
  
Arquitetura	
  da	
  Plataforma	
  Android	
  
Licença	
  

•  1ª	
  Plataforma	
  móvel	
  completamente	
  Open-­‐
   Source;	
  
•  Várias	
  vantagens;	
  
   –  Desenvolvedores;	
  
   –  Fabricantes	
  de	
  Smartphones;	
  
   –  E	
  Usuários;	
  

   –  A	
  licença	
  da	
  Apache	
  possibilita	
  alterações	
  sem	
  
      obrigar	
  a	
  liberação	
  de	
  código;	
  
                                                	
  
Android	
  Market	
  

•  Objevo:	
  	
  
    –  Possibilitar	
  aos	
  desenvolvedores	
  um	
  local	
  para	
  
       disponibilizar	
  suas	
  Apps.	
  


•  Para	
  ulizar:	
  
    –  Cadastro,	
  pagamento	
  de	
  US$	
  25.00;	
  

    –  Após	
  isso	
  pode	
  ser	
  instalado	
  por	
  qualquer	
  usuário;	
  
Android	
  Market	
  

•  Android	
  Market	
  já	
  possui	
  mais	
  aplica3vos	
  
   gratuitos	
  que	
  a	
  AppStore,	
  da	
  Apple	
  
           – Segundo	
  analistas,	
  loja	
  de	
  aplica6vos	
  do	
  
             Android	
  pode	
  superar	
  a	
  App	
  Store	
  em	
  
             número	
  total	
  de	
  programas	
  em	
  cinco	
  meses	
  
             02	
  de	
  Maio	
  de	
  2011	
  |	
  14:30h	
  
           – OlharDigital	
  	
  
Plataformas	
  ou	
  Versões	
  

•  No	
   mundo	
   Android	
   as	
  
   versões	
   são	
   conhecidas	
  
   como	
  plataformas;	
  
Plataformas	
  ou	
  Versões	
  

•  No	
  dia	
  10/05	
  	
  
     –  nova	
   versão,	
   Ice	
   Cream	
  
        Sandwich;	
  
     –  Unificar	
  as	
  plataformas	
  
          •  Smartphone	
  e	
  Tablets	
  
     –  Features:	
  
          •  Reconhecimento	
  de	
  Faces;	
  
          •  Reconhecimento	
  de	
  Voz	
  
                –  Superando	
  o	
  iOS;	
  
          •  Mudança	
  de	
  Foco	
  
                                                                                  	
  esse	
  ano	
  
                                                                 iliz ado	
  ainda
                                                D i sp o n i b
Android	
  SDK	
  

•  Contém:	
  	
  
    –  toda	
  a	
  API	
  necessária	
  para	
  desenvolver	
  ulizando	
  
       a	
  linguagem	
  Java;	
  

    –  Contém	
  o	
  emulador;	
  
        •  Sendo	
  possível	
  plugar	
  um	
  celular	
  na	
  USB	
  para	
  executar/
           testar	
  a	
  aplicação;	
  
        •  Para	
   isso	
   necessita	
   do	
   driver	
   do	
   celular	
   instalado	
   na	
  
           máquina;	
  
Android	
  SDK	
  

•  Instalando	
  o	
  SDK...	
  

    –  hvp://developer.android.com/sdk/	
  


•  Instalando	
  o	
  plugin	
  no	
  eclipse	
  –	
  ADT	
  

    –  hvp://dl.google.com/android/ADT-­‐10.0.1.zip	
  
Configurando	
  a	
  plataforma	
  no	
  SDK	
  

•  O	
   SDK	
   vem	
   vazio,	
   ou	
   seja,	
   sem	
   plataforma	
  
   alguma;	
  

•  Vamos	
  ulizar	
  a	
  versão	
  2.2;	
  

•  Para	
   isso	
   vamos	
   ulizar	
   a	
   ferramenta	
   inclusa	
  
   no	
   SDK	
   chamada,	
   Android	
   SDK	
   and	
   AVD	
  
   Manager.	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Instalar	
  novas	
  plataformas	
  

•  Documentação	
  

•  Add-­‐ons,	
  como:	
  Google	
  Maps	
  

•  Drivers	
  USB	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Para	
  iniciar	
  a	
  ferramenta	
  clique	
  em:	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Poderá	
  acontecer	
  o	
  seguinte:	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Solução	
  



      1º	
  Passo	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Solução	
  
                                 2º	
  Passo	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Solução	
  
                                 3º	
  Passo	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Solução	
  

    4º	
  Passo	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Para	
   visualizar	
   os	
   pacotes	
   que	
   estão	
  
   instalados,	
   clique	
   no	
   menu	
   de	
   opções	
   a	
  
   esquerda	
  em,	
  Installed	
  Packages.	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Para	
  instalar	
  uma	
  nova	
  plataforma,	
  faça:	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  

•  Mas	
  o	
  que	
  é	
  AVD	
  ?	
  

     –  Android	
  Virtual	
  Device	
  

     –  Criação	
   de	
   uma	
   configuração,	
   para	
   que	
   o	
  
        emulador	
  possa	
  simular	
  a	
  mesma;	
  
Android	
  SDK	
  And	
  AVD	
  Manager	
  
                                              Android	
  2.1	
  
                              AVD	
  1	
      SD	
  1024	
  MB	
  
                                              Resol.:	
  HVGA	
  




                                              Android	
  2.2	
  
                                              SD	
  500	
  MB	
  
                              AVD	
  2	
      Resol.:	
  HVGA	
  




                                             Android	
  2.2	
  
                                             SD	
  1024	
  MB	
  
                              AVD	
  3	
     Resol.:	
  WQVGA432	
  
Criando	
  uma	
  nova	
  AVD	
  

•  Clique	
  em	
  New	
  
HelloWorld	
  !	
  

•  Crie	
  um	
  novo	
  projeto	
  
    –  File	
  >	
  New	
  >	
  Android	
  Project	
  
HelloWorld	
  !	
  

•  Na	
  proxima	
  janela	
  
       •  Project	
  Name:	
  Nome	
  do	
  projeto;	
  
       •  Build	
  Target:	
  Plataforma	
  ulizada	
  (2.2)	
  
       •  Applica3on	
  Name:	
  No	
  da	
  aplicação	
  que	
  será	
  exibida	
  no	
  
          celular;	
  
       •  Package	
  Name:	
  br.com.nooclix.zn	
  	
  
             –  Manterá	
  a	
  Acvity	
  principal	
  (	
  Único	
  );	
  
       •  Create	
  Ac3vity:	
  Tela	
  principal	
  da	
  aplicação;	
  
       •  Min	
  SDK	
  Version:	
  	
  Level	
  da	
  API	
  (	
  2.2	
  =	
  8)	
  	
  
Criando	
  o	
  HelloWorld	
  !	
  


Após	
  preencher	
  	
  
todos	
  os	
  campos	
  	
  
clique	
  em	
  Finish	
  
Criando	
  o	
  HelloWorld	
  !	
  
Estrutura	
  do	
  Projeto	
  

•  Src	
  –	
  Código	
  Java	
  
•  Gen	
   –	
   Classe	
   R.	
   Permi	
   acessar	
   os	
   recursos	
   (imagens,	
   arquivos,	
  
   componentes)	
   através	
   de	
   constantes;	
   Não	
   pode	
   ser	
   alterada	
  
   manualmente;	
  
•  Assests	
  –	
  Contém	
  arquivos	
  customizados,	
  como	
  fontes;	
  
•  Res	
  –	
  Contém	
  subpastas	
  de	
  recursos;	
  
•  Drawable	
  –	
  Imagens	
  ulizadas	
  na	
  aplicação;	
  
•  Layout	
  –	
  Pasta	
  com	
  layouts	
  em	
  XML;	
  
•  Values	
  –	
  Arquivos	
  XML,	
  como:	
  Strings	
  para	
  internacionalização;	
  
     –  Cores,	
  Eslos,	
  etc.	
  
Executando	
  o	
  Projeto	
  


  Botão	
  direito	
  no	
  projeto	
  e	
  siga	
  os	
  passos	
  abaixo:	
  
Entendendo	
  os	
  arquivos	
  do	
  projeto	
  

•  /res/layout/main.xml	
  

•  Os	
  arquivos	
  XML	
  na	
  pasta	
  layout	
  representa	
  uma	
  tela	
  da	
  aplicação;	
  

•  As	
  TAGS	
  representa	
  os	
  componentes,	
  a	
  criação	
  da	
  Visão;	
  

•  Os	
  componentes	
  visuais	
  podem	
  ser	
  criados	
  via	
  API	
  Java;	
  
Entendendo	
  os	
  arquivos	
  do	
  projeto	
  

•  /res/values/string.xml	
  
•  Chave	
  -­‐	
  Valor;	
  
•  Muito	
  importante	
  para	
  internacionalização;	
  




                            Chave	
                   Valor	
  
Entendendo	
  os	
  arquivos	
  do	
  projeto	
  
•  A	
  Classe	
  R	
  

•  Possui	
  constantes	
  (do	
  po	
  INT)	
  para	
  todos	
  os	
  recursos	
  criados;	
  
•  Acessa	
  imagens;	
  
•  É	
  atualizada	
  automacamente	
  pelo	
  ADT(Plugin),	
  quando	
  a	
  pasta	
  res	
  
   é	
  alterada;	
  

     –    R.drawable.imagem1;	
  
     –    R.layout.meu_layout;	
  
     –    R.string.valor_string;	
  
     –    R.style.meu_eslo;	
  
Entendendo	
  os	
  arquivos	
  do	
  projeto	
  

•  IMPORTANTE:	
  

     Todos	
  os	
  recursos	
  devem	
  ter:	
  nomes	
  
   minusculos	
  e	
  sem	
  espaços.	
  Caso	
  não	
  siga	
  a	
  
      regra	
  a	
  classe	
  R	
  não	
  será	
  compilada.	
  
Entendendo	
  o	
  Código	
  
AndroidManifest.xml	
  
•  Deve-­‐se	
  manter	
  na	
  raiz	
  do	
  projeto;	
  
•  Mantem	
  todas	
  as	
  configurações	
  do	
  projeto:	
  
      –    Nome,	
  pacote	
  base,	
  ícone	
  
      –    Acvity’s	
  
      –    Versão	
  SDK	
  
      –    Permissões	
  


•  Com	
  o	
  eclipse	
  existe	
  um	
  editor	
  visual;	
  
•  Semelhante	
  ao	
  web.xml;	
  
AndroidManifest.xml	
  
AndroidManifest.xml	
  

  O	
  que	
  significa	
  essas	
  linhas?	
  


Pode	
  ser	
  executada	
  isoladamente,	
  ponto	
  inicial	
  


            A	
  Acvity	
  estará	
  na	
  tela	
  inicial	
  
Obtendo	
  componentes	
  

•  Em	
  certos	
  casos	
  é	
  necessário	
  capturar	
  valores	
  da	
  
   visão,	
  assim	
  como	
  adiciona-­‐los	
  de	
  forma	
  
   dinâmica;	
  

•  Método	
  findById(id);	
  

•  É	
  preciso	
  fazer	
  um	
  cast,	
  para	
  o	
  componente	
  
   ulizado;	
  
Obtendo	
  componentes	
  
Arquivo	
  XML	
  (	
  layout/main.xml	
  )	
  




Arquivo	
  Java	
  (	
  Principal.java	
  )	
  
Tratamento	
  de	
  Eventos	
  

•  Para	
  controlar	
  eventos,	
  iremos	
  o	
  ulizar	
  o	
  
   método	
  setOnClickListener(listener);	
  Veja;	
  
Exercicio	
  1	
  
•  Crie	
  um	
  projeto	
  chamado	
  tandroid;	
  
    –  Crie	
  as	
  seguintes	
  Strings	
  (string.xml)	
  
            •  Produto;	
  Quandade;	
  Valor;	
  Calcular;	
  
    –  E	
  faça:	
  
  Efetue	
  o	
  valor	
  total	
  da	
  compra	
  
E	
  o	
  SysOut	
  ?	
  

	
  
•  Ao	
  ulizar	
  o	
  método	
  System.out.println(),	
  nada	
  
     acontece;	
  
•  Normal;	
  
•  É	
  preciso	
  usar	
  o	
  LogCat,	
  com	
  a	
  chamada:	
  

               Log.i(“categoria”,	
  “mensagem”);	
  

              Log.w(“categoria”,	
  “mensagem”);	
  
Widgets	
  Iniciando…	
  



     Bem	
  vindo	
  ao	
  mundo	
  dos	
  
             Widgets	
  
TextView	
  e	
  EditText	
  
•  Propriedades:	
  
   –    layout_width	
  =	
  [“wrap_content”	
  	
  ou	
  “fill_parent”]	
  	
  -­‐>	
  Preenchimento	
  Lateral	
  
   –    layout_heigth	
  =	
  [“wrap_content”	
  	
  ou	
  “fill_parent”]	
  	
  -­‐>	
  Preenchimento	
  Altura	
  
   –    background	
  =	
  “#FFFF34”	
  -­‐>	
  Cor	
  de	
  Fundo	
  
   –    textColor	
  =	
  “#FFFF34”	
  -­‐>	
  Cor	
  da	
  Fonte	
  
   –    hint	
  =	
  “qualquer	
  texto”-­‐>	
  Mensagem	
  se	
  o	
  texto	
  esver	
  vazio.	
  
   –    autoLink	
  =	
  [“web	
  ou	
  map	
  e	
  etc”]	
  -­‐	
  >	
  o	
  TextView	
  Funciona	
  como	
  link.	
  
   –    password	
  	
  =	
  [true|false]	
  -­‐>	
  Campo	
  de	
  senha(******)	
  

   –  layout_weight	
  =	
  [“valor	
  inteiro”]	
  -­‐>	
  Refere-­‐se	
  a	
  porcentagem	
  que	
  o	
  
      componente	
  irá	
  ocupar	
  na	
  tela;	
  


         OBS:	
  A	
  parr	
  da	
  API	
  Level	
  8(2.2	
  Froyo)	
  fill_parent	
  tornou-­‐se	
  	
  match_parent	
  
CheckBox	
  e	
  ToggleBuvom	
  
         •  Componentes	
  para	
  seleção	
  de	
  iten	
  opcionais;	
  
         •  Propriedades:	
  
              –  textOn:	
  Exibe	
  um	
  texto	
  quando	
  selecionado;	
  
              –  textOff:	
  Exibe	
  um	
  texto	
  quando	
  não	
  está	
  selecionado;	
  
         •  Método	
  isChecked():	
  
              –  Retorna	
  a	
  situação	
  da	
  seleção;	
  



om	
  



 	
  
CheckBox	
  e	
  ToggleBuvom	
  

Arquivo	
  da	
  visão	
  anterior	
  (XML)	
  
RadioBuvom	
  
•  Seleção	
  Única	
  
•  É	
  ulizado	
  com	
  o	
  auxilio	
  de	
  um	
  RadioGroup	
  
•  Propriedades:	
  
     –  Text:	
  Texto	
  a	
  ser	
  exibido;	
  
     –  Checked:	
  Se	
  o	
  botão	
  iniciará	
  marcado	
  ou	
  não	
  	
  [	
  true	
  |	
  false	
  ]	
  


•  Método	
  para	
  obter	
  o	
  radio	
  selecionado,	
  pertence	
  ao	
  Group:	
  
     –  getCheckedRadioBuvonId();	
  
RadioBuvom	
  
•  Layout	
  XML	
  
Exercicio	
  2	
  
•  Crie	
  um	
  novo	
  layout,	
  calc_salario	
  

    –  Calcule	
  a	
  previsão	
  salarial	
  dos	
  funcionários:	
  

        •  Que	
  sejam	
  de	
  TI;	
  

        •  O	
  funcionário	
  escolherá	
  o	
  percentual	
  de	
  aumento;	
  
Exercicio	
  2	
  
Exercicio	
  2	
  
AutoCompleteTextView	
  
•  Efetua	
  uma	
  busca	
  enquanto	
  digita;	
  
   –  Propriedades:	
  
       •  comple3onThreshold:	
  Número	
  minimo	
  para	
  iniciar	
  o	
  
          autocomplete	
  (default	
  =	
  2)	
  
       •  comple3onHint:	
  Texto	
  de	
  dica	
  exibido	
  abaixo	
  da	
  caixa;	
  	
  


   –  É	
  necessário	
  ulizar	
  um	
  Adapter	
  
       •  ListAdapter	
  
AutoCompleteTextView	
  
•  Arquivo	
  XML	
  e	
  Java	
  
Buvon	
  e	
  ImageBuvon	
  
•  Ambos	
  são	
  botões;	
  

•  Porém,	
  o	
  Buvom	
  não	
  pode	
  ter	
  um	
  icone;	
  

•  O	
  ImageBuvon	
  tem	
  um	
  icone;	
  
ImageView	
  
•  Permi	
  a	
  visualização	
  de	
  imagens:	
  JPG,	
  PNG	
  e	
  
   GIF;	
  
    –  A	
  imagem	
  no	
  XML	
  é	
  adicionada	
  através	
  da	
  
       propriedade	
  src=@drawable/suaimagem;	
  
    –  Em	
  Java:	
  
ImageView	
  
•  Arquivo	
  XML	
  e	
  Java	
  
Spinner	
  
•  Funciona	
  como	
  um	
  ComboBox;	
  
•  Propriedades:	
  
   –  Prompt:	
  Similar	
  a	
  um	
  Titulo	
  de	
  Janela;	
  
•  Métodos:	
  
   –  Object	
  getSelectedItem()	
  :	
  Item	
  selecionado;	
  
   –  long	
  getSelecteditemId()	
  :	
  id	
  do	
  item	
  selecionado;	
  
   –  int	
  getSelectedItemPosion()	
  :	
  Posição	
  do	
  Item;	
  
            –  Ligado	
  ao	
  Array;	
  	
  


                                                setOnItemSelectedListener	
  
Spinner	
  
•  Arquivo	
  XML	
  e	
  Java	
  
ProgressDialog	
  
•  Mensagem	
  de	
  espera;	
  
•  Mantem-­‐se	
  em	
  execução	
  através	
  do	
  método	
  
   show()	
  até	
  que	
  o	
  método	
  dismiss();	
  
Exercicio	
  3	
  
•  Criar	
  uma	
  tela	
  com:	
  
    –  Spinner	
  com	
  nome	
  de	
  carros;	
  
    –  ImageView	
  para	
  exibir	
  as	
  fotos	
  quando	
  	
  
       clicados	
  no	
  Spinner	
  
    –  Obtenha	
  uma	
  das	
  imagens	
  da	
  internet:	
  URL;	
  
        •  Ulize	
  a	
  ProgressDialog;	
  
    –  Adicione	
  um	
  efeito	
  de	
  transição	
  
ImageGallery	
  
•  Exibi	
  diversas	
  imagens	
  de	
  uma	
  só	
  vez;	
  

•  As	
  fotos	
  são	
  passadas	
  com	
  o	
  indicador
   (mouse);	
  

•  É	
  necessário	
  a	
  criação	
  de	
  uma	
  classe	
  Adapter;	
  
    –  Herda	
  de	
  BaseAdapter	
  
ImageGallery	
  
•  Exemplo	
  (	
  adicione	
  imagens	
  em	
  drawable)	
  
          •  Criando	
  o	
  adapter	
  
	
  
ImageGallery	
  
•  Exemplo	
  (	
  adicione	
  imagens	
  em	
  drawable)	
  
          •  Criando	
  o	
  adapter	
  
	
  
ImageGallery	
  
•  Exemplo	
  (	
  adicione	
  imagens	
  em	
  drawable)	
  
          •  Criando	
  o	
  adapter	
  
	
  
ImageGallery	
  
•  Criando	
  a	
  Acvity	
  (	
  deve	
  ter	
  um	
  layout	
  para	
  isso	
  )	
  
ImageGallery	
  
•  Capturando	
  a	
  imagem	
  selecionada	
  
Acvity	
  Iniciando…	
  



     Bem	
  vindo	
  ao	
  mundo	
  dos	
  
               Ac3vity	
  
Acvity	
  
•  Representa	
  uma	
  tela	
  da	
  aplicação;	
  

•  Tem	
  a	
  função	
  de	
  gerenciar	
  os	
  eventos	
  da	
  tela;	
  

•  Regra	
  de	
  Visão;	
  

•  Configurar	
  o	
  View	
  a	
  ser	
  exibido;	
  
Acvity	
  
•  Deve	
  herdar	
  de	
  Acvity	
  ou	
  subclasses;	
  

•  Deve	
  implementar	
  onCreate:	
  
   –  Inicializar	
  	
  View;	
  
   –  Criar	
  os	
  elementos	
  da	
  tela;	
  


•  Deve	
  ser	
  informado	
  no	
  AndroidManifest.xml	
  
Acvity	
  
•  Estados	
  de	
  uma	
  acvity	
  
                            Executando	
  


             Temporariamente	
  interrompida	
  


                             Destruída	
  
Acvity	
  
•  Cada	
  Acvity	
  é	
  adicionada	
  a	
  um	
  stack	
  acvity;	
  

•  Outras	
  podem	
  estar:	
  
        •  Executando	
  em	
  segundo	
  plano;   	
  	
  
        •  Pausadas;	
  
        •  Paradas;	
  


•  Toda	
  tela	
  é	
  uma	
  Acvity:	
  ligação,	
  mensagem…	
  
Acvity	
  Ciclo	
  de	
  Vida	
  




                                     Finish()	
  
Navegando	
  entre	
  telas	
  
•  Para	
  navegarmos	
  entre	
  várias	
  telas,	
  
   ulizaremos	
  os	
  seguintes	
  métodos:	
  
   –  startAcvity(intent);	
  
       •  Pode	
  enviar	
  parâmetros	
  
       •  Exibe	
  uma	
  nova	
  acvity	
  
   –  startAcvityForResult(intent,codigo);	
  
       •  Pode	
  enviar	
  parâmetros	
  
       •  Exibe	
  uma	
  nova	
  acvity	
  
       •  Espera	
  um	
  retorno	
  da	
  mesma	
  
Enviando	
  parâmetros	
  
•  Para	
  se	
  enviar	
  parâmetros	
  uliza-­‐se	
  a	
  classe	
  
   Intent	
  em	
  união	
  com	
  a	
  Bundle,	
  ou	
  não;	
  
•  É	
  similar	
  a	
  um	
  HashMap;	
  




                                           Valor	
  INT	
  e	
  STRING	
  	
  
Enviando	
  parâmetros	
  
•  Para	
  se	
  enviar	
  parâmetros	
  abreviando…	
  
•  É	
  similar	
  a	
  um	
  HashMap;	
  




                                  Valor	
  Boolean	
  
Retornando	
  valores	
  
•  Uliza-­‐se	
  o	
  método	
  setResult(codigo,	
  intent);	
  
   –  Em	
  seguida	
  chama	
  o	
  método	
  finish();	
  
           –  Para	
  finalizar	
  a	
  Acvity	
  
Retornando	
  valores	
  
•  Capturando	
  o	
  retorno	
  
   –  onAcvityResult(int	
  requestCode,	
  int	
  resultCode,	
  Intent	
  data);	
  
   –  Efetua	
  a	
  leitura	
  do	
  intent	
  de	
  acordo	
  com	
  resultCode	
  
   –  requestCode	
  =	
  codigo	
  da	
  Intent	
  do	
  startAcvityForResult(i,	
  codigo);	
  
ListAcvity	
  
•  Exibe	
  dados	
  em	
  forma	
  de	
  lista;	
  

•  Subclasse	
  de	
  Acvity;	
  

•  Já	
  possui	
  métodos	
  relacionado	
  ao	
  
   componente	
  ListView;	
  
ListAcvity	
  
•  Já	
  possui	
  barra	
  de	
  rolagem;	
  

•  Método	
  setContentView(listView),	
  é	
  chamado	
  
   automáco;	
  

•  Necessário	
  um	
  ListAdapter;	
  
        •  Fazendo	
  a	
  ligação	
  entre	
  o	
  ListView	
  e	
  os	
  dados.	
  
ListAcvity	
  
•  Um	
  rápido	
  exemplo…	
  




                                  Array	
  com	
  itens	
  do	
  ListView	
  (Lista)	
  
ListAcvity	
  
•  Um	
  rápido	
  exemplo…	
  
Exercicio	
  4	
  
•  Crie	
  um	
  Menu	
  ulizando	
  uma	
  ListAcvity	
  
   –  Com	
  Icones	
  

   –  Ao	
  clicar	
  em	
  um	
  item,	
  navegar	
  para	
  a	
  	
  
      respecva	
  tela;	
  
   –  Esse	
  Menu	
  deve	
  conter	
  Icones,	
  Imagem	
  de	
  Fundo	
  
      (Adicione	
  um	
  tela	
  de	
  Login);	
  
       •  Precisa-­‐se	
  de	
  um	
  layout.xml	
  
       •  Uma	
  classe	
  representando	
  cada	
  Item	
  
       •  Adapter	
  


                                                                  Códigos	
  
Exercicio	
  4	
  
•  Criando	
  o	
  layout_list.xml	
  
Exercicio	
  4	
  
•  Criando	
  a	
  classe	
  Icones	
  
        •  Representando	
  cada	
  item	
  da	
  lista	
  
Exercicio	
  4	
  
•  Criando	
  o	
  a	
  classe	
  Icones	
  (Connuação)	
  
       •  Representando	
  cada	
  item	
  da	
  lista	
  
Exercicio	
  4	
  
•  Criando	
  o	
  a	
  classe	
  IconesAdapter	
  (Connuação)	
  
       •  Adaptor	
  para	
  a	
  List	
  
Exercicio	
  4	
  
•  Criando	
  o	
  a	
  classe	
  IconesAdapter	
  (Connuação)	
  
       •  Adaptor	
  para	
  a	
  List	
  
Exercicio	
  4	
  
•  Criando	
  o	
  a	
  classe	
  IconesAdapter	
  (Connuação)	
  
       •  Adaptor	
  para	
  a	
  List	
  
Exercicio	
  4	
  
•  Configurando	
  a	
  Acvity	
  
Exercicio	
  4	
  
•  Configurando	
  a	
  Acvity	
  
Intent	
  Iniciando…	
  



     Bem	
  vindo	
  ao	
  mundo	
  das	
  
                 Intent	
  
Intent	
  
•  Representa	
  uma	
  “ação”,	
  que	
  será	
  executada	
  
   pela	
  aplicação	
  em	
  conjunto	
  com	
  o	
  sistema	
  
   operacional;	
  
•  Exemplos:	
  
   –  Abrir	
  uma	
  nova	
  tela	
  startAcvity(intent);	
  
   –  Efetuar	
  uma	
  ligação;	
  
   –  Abrir	
  o	
  browser;	
  
   –  Abrir	
  um	
  mapa;	
  
Intent	
  
•  Algumas	
  das	
  avidades/intenções	
  precisam	
  de	
  
   autorização/permissão;	
  
   –  Internet:	
  
       •  android.permission.INTERNET	
  
   –  Contatos:	
  
       •  android.permission.READ_CONTACTS	
  
   –  Ligação:	
  
       •  android.permission.CALL_PHONE	
  
Vamos	
  a	
  praca	
  
•  Abrindo	
  o	
  browser	
  
Vamos	
  a	
  praca	
  
•  Faça	
  uma	
  ligação	
  
    –  Ação:	
  Intent.ACTION_CALL;	
  
    –  URI:	
  “tel:numerodesejado”;	
  
    –  android.permission.CALL_PHONE	
  
Intent	
  Finalizando	
  
•  Pode	
  ser	
  ulizado	
  para	
  comunicar	
  aplicações	
  
   disntas;	
  
   –  IntentFilter	
  
•  Exemplos:	
  
   –  Nossas	
  aplicações;	
  
   –  Abrir	
  mapa	
  em	
  determinadas	
  coordenadas;	
  
   –  Listar	
  contatos	
  ou	
  UM	
  contato	
  por	
  id;	
  
   –  Tocar	
  músicas,	
  videos…	
  
Layouts	
  Iniciando…	
  



     Bem	
  vindo	
  ao	
  mundo	
  dos	
  
              Layouts	
  
Layouts	
  
•  Define	
  um	
  forma	
  de	
  organizar	
  os	
  
   componentes	
  na	
  tela/View;	
  
    –  Horizontal	
  ou	
  Vercal;	
  	
  

    –  Exatas	
  coordenadas;	
  
        •  Podendo	
  ser	
  indicado	
  X	
  e	
  Y;	
  


    –  Tabular;	
  
Layouts	
  –	
  Hierarquia	
  de	
  Componentes	
  
                      View	
  



                                          ViewGroup	
  
 TextView	
  


     ImageView	
  
                     AbsoluteLayout	
        LinearLayout	
  



                                             TableLayout	
  
Layouts	
  
•  Propriedades	
  como:	
  
   –  Layout_width:	
  receber	
  inteiros(dpi,	
  px)	
  
       •  fill_parent,	
  match_parent,	
  wrap_content;	
  
   –  Layout_heightreceber	
  inteiros(dpi,	
  px)	
  
       •  fill_parent,	
  match_parent,	
  wrap_content;	
  
   –  Layout_weight	
  
   –  Layout_gravity	
  
   –  Layout_marginTop,	
  Layout_marginRight	
  
   –  background	
  
   –  Entre	
  outros….	
  
LinearLayout	
  
•  Possibilita	
  a	
  organização/alinhamento	
  de	
  
   componentes	
  na	
  vercal	
  ou	
  horizontal(padrão);	
  

•  Controlado	
  pela	
  propriedade	
  orientaon;	
  

•  Pode-­‐se	
  controlar	
  alinhamento	
  com	
  gravity;	
  

•  Pode-­‐se	
  controlar	
  preenchimento	
  com	
  weight;	
  
   –  Relevância	
  (quem	
  pode	
  mais);	
  
TableLayout	
  
•  Semelhante	
  a	
  uma	
  tabela;	
  
    –  Ul	
  para	
  formulários;	
  


•  Cada	
  linha	
  é	
  representada	
  por:	
  
    –  TableRow	
  subclasse	
  de	
  LinearLayout;	
  
    –  Cada	
  componente	
  inserido	
  representa	
  uma	
  
       coluna	
  automacamente;	
  
Layouts	
  Iniciando…	
  



     Bem	
  vindo	
  ao	
  mundo	
  das	
  
        No3fica3ons	
  
Noficaons	
  
•  Classe:	
  android.app.Noficaon	
  

•  Exibi	
  uma	
  mensagem	
  na	
  barra	
  de	
  	
  
   	
  status;	
  

•  Possui	
  um	
  conteúdo/mensagem;	
  

•  Visualizando	
  o	
  conteúdo	
  uma	
  Intent	
  	
  
   	
  pode	
  ser	
  disparada;	
  
Noficaons	
  
•  Úl	
  para	
  não	
  abrir	
  uma	
  tela	
  sem	
  permissão;	
  

•  Aplicação	
  em	
  segundo	
  plano	
  disparar	
  um	
  
   Alerta;	
  

•  Evita	
  atrapalhar	
  o	
  usuário	
  de	
  forma	
  elegante;	
  
Noficaons	
  
•  Configurando	
  
Noficaons	
  
•  Configurando	
  parâmetros	
  
   –  New	
  Noficaon	
  
      •  Icone	
  
      •  Texto	
  para	
  exibição	
  na	
  barra	
  de	
  status	
  
      •  Hora	
  e	
  Data	
  de	
  inicialização	
  
   –  PendingIntent	
  
      •  Contexto	
  
      •  Codigo	
  da	
  requisicao	
  
      •  Intent	
  (a	
  ser	
  executada	
  no	
  clique	
  );	
  
      •  Controlar	
  a	
  abertura	
  da	
  Intent	
  
Noficaons	
  
•  Configurando	
  parâmetros	
  
   –  LatesEventInfo	
  
      •  Contexto	
  
      •  Titulo	
  da	
  noficaon	
  
      •  Conteudo	
  
      •  PendingIntent	
  
   –  Nofy(id,	
  noficaon)	
  
      •  Id:	
  idenfica	
  a	
  noficacao	
  
Noficaons	
  
•  Configurando	
  para	
  cancelar	
  




     Ou	
  adicionar	
  no	
  onDestroy(),	
  para	
  encerra	
  junto	
  com	
  
     a	
  Acvity	
  que	
  a	
  iniciou!	
  
Hvp	
  Iniciando…	
  



      Bem	
  vindo	
  ao	
  mundo	
  do	
  
                   HEp	
  
HTTP	
  
•  Muitas	
  vezes	
  manter	
  os	
  dados	
  no	
  disposivo	
  é	
  
   caro;	
  complexo;	
  inseguro;	
  
•  Para	
  isso	
  a	
  solução	
  seria	
  ulizar	
  conexões	
  Hvp;	
  
    –  Teremos	
  acesso	
  a	
  dados	
  complexos;	
  
    –  Informações	
  seguras;	
  

•  Atualmente	
  as	
  aplicações	
  tornam-­‐se	
  on-­‐line;	
  
    –  Tento	
  acesso	
  em	
  tempo	
  real;	
  
•  Importante:	
  
    –  Quanto	
  maior	
  o	
  número	
  de	
  serviços	
  de	
  uma,	
  maior	
  
       será	
  o	
  seu	
  valor;	
  
HTTP	
  
•  Comumente	
  existe	
  a	
  necessidade	
  de	
  
   comunicação	
  com	
  um	
  servidor	
  para	
  troca	
  de	
  
   informações;	
  

•  Essa	
  comunicação	
  é	
  independente	
  de	
  
   linguagem,	
  visto	
  que	
  é	
  através	
  do	
  protocolo	
  
   HTTP;	
  
HTTP	
  Post	
  
•  Indica-­‐se	
  ulizar	
  o	
  método	
  POST	
  

•  Por	
  quê?	
  
    –  1º:	
  Dados	
  colocados	
  no	
  corpo	
  da	
  mensagem;	
  
    –  2º:	
  Separados	
  da	
  URI	
  
    –  3º:	
  São	
  encapsulados	
  para	
  o	
  usuário	
  
HTTP	
  Post	
  
•  Como	
  efetuar	
  a	
  comunicação	
  de	
  envio?	
  
HTTP	
  Post	
  
•  Como	
  efetuar	
  a	
  comunicação	
  de	
  retorno?	
  
Exercicio	
  Final	
  
•  Vamos	
  criar	
  uma	
  aplicação	
  para	
  cadastro	
  	
  
   	
  de	
  clientes	
  via	
  HTTP;	
  
    –  Nome	
  
    –  Endereço,	
  Numero	
  
    –  Tipo	
  de	
  Pessoa(FISICA	
  ou	
  JURIDICA)	
  
    –  Isento	
  de	
  ICMS	
  
Exercicio	
  Final	
  
•  Vamos	
  criar	
  uma	
  aplicação	
  para	
  enviar	
  email	
  
   	
  via	
  HTTP;	
  
   –  Email	
  enviado	
  disparar	
  uma	
  	
  
      noficação;	
  
Obrigado	
  


    Muito	
  Obrigado!	
  

Treinamento Android Nooclix

  • 1.
    Treinamento  em  Google  Android   Por:          Iury  Teixeira   Email:  iuryteixeira@nooclix.com.br                          franciury@gmail.com   Msn:      franciury@hotmail.com                
  • 2.
    Quem  sou  ?   •  Bacharel  em  Sistemas  de  Informação   •  Especialização  em  Desenvolvimento  Web  com   JavaEE  (Cursando)   •  Jug  Leader  CaJUG   •  Sócio  na  nooclix   •  Professor   •  Cer3ficações:  SCJP  6          (CSM)    
  • 3.
  • 4.
    Agenda   •  Android  ?   –  O  que  é  ?   •  Um  pouco  mais  de  conceitos   –  OHA   •  Componentes  Básicos   –  Estrutura   •  Widgets   –  Dalvik   •  Ac3vity   –  Kernel   •  Intent   –  Android  Market   •  Um  pouco  de  Layout   –  Emulador   •  No3fica3on   –  Config.  Ambiente   •  HEpConnec3on   –  HelloWorld  Android  !  
  • 5.
  • 6.
    Introdução   •  O  mercado  mobile  cresceu  muito  nos  úlmos   anos;   •  Uma  grande  procura  por:     •  Jogos  3D   •  Internet  a  qualquer  hora   •  GPS   •  TV  Digital   •  Musicas   •  Ah,  e  fazer  ligações…!  
  • 7.
    Introdução   •  Todos  estamos  nos  acostumandos  com  a   comodidade;   •  Opções  com  valor  elevado;   •  Solução  acessível,  flexivel  e  poderosa;   –  Para  empresas;   –  Para  usuários;   –  Para  operadoras;   –  Para  nós,  desenvolvedores.  
  • 8.
    O  Android  !   •  Para  tanto  surgiu  o  Google  Android  !   •  Plataforma  de  Desenvolvimento  para   aplicavos  móveis;   •  Baseada  em  Linux;   •  Já  possui  diversos  recursos  instalados  e  pré-­‐ configurados;  
  • 9.
    O  Android  !   •  É  mando  pela  Google  e    outras  instuições;   –  Como  assim  ?   •  Um  grupo  chamado  OHA,  formado  por  várias   empresas  do  seguimento;     •  Uniram-­‐se  ao  Google  para  desenvolver  um   solução  aberta,  moderna  e  que  compesse   com  a  Apple;  
  • 10.
    Open  Handset  Alliance   •  OHA  –  Open  Handset  Alliance   –  São  lideres  de  mercado,  aliados  e  liderados  pelo   Google;   –  Como:   •  HTC,  Samsung,  Sony,  Motorola,  LG,  Toshiba,  Nextel,   •  T-­‐Mobile,  Asus,  Intel,  etc....   •  Em  tordo  de  50  empresas  integram  o  grupo!   •  Grande  vantagem  por  ser  OpenSource,  Free(Gratuito);  
  • 11.
    Android   •  Pode  ser  customizado  de  qualquer  forma;   •  Integrar  aplicações  navas  com  as  suas;   •  Não  há  diferenças  entre  as  apps  navas  e  as   desenvolvidas  por  terceiros;   •  Recursos  3D  baseados  no  OpenGL  ES    
  • 12.
    Depois  de  tanto  poder…  
  • 13.
    Android  e  o  Linux   •  Android  é  baseado  no  Kernel  2.6  do  Linux;   •  O  Linux  é  responsável  por  gerenciar:     Memória   Redes   Threads   Processos   Drivers   Segurança  
  • 14.
    Android  e  o  Linux   •  Gerenciamento  de  aplicações:   –  Cada  aplicação  inicia  um  processo;   •  Seja  com  telas  ou  em  background   –  Se  preciso  o  sistema  poderá  encerrar  um  processo   para  liberar  memória  e  recursos;   •  Podendo  ser  reiniciado...    -­‐  Para  cada  aplicação  existe  um  usuário  no   sistema  operacional;      
  • 15.
    Máquina  Virtual   –  Assim  como  no  Java,  o  Android  possui  uma  VM,   chamada  Dalvik.  VM  omizada  para  baixo   consumo  de  recursos   –  Essa  mesma,  é  responsável  por  efetuar  toda   compilação  e  transformar  em  código  executável   no  Android;   –  Não  existe  uma  JVM  no  Android;   –  E  como  funciona  ?  
  • 16.
    Máquina  Virtual   Como  funciona  a  exportação  de  uma     Código  Java   aplicação  Android  !   .class  (Java   Compilado)   .dex  (Dalvik   Executável)   .apk  (Aplicação,   imagens…)  
  • 17.
  • 18.
    Licença   •  1ª  Plataforma  móvel  completamente  Open-­‐ Source;   •  Várias  vantagens;   –  Desenvolvedores;   –  Fabricantes  de  Smartphones;   –  E  Usuários;   –  A  licença  da  Apache  possibilita  alterações  sem   obrigar  a  liberação  de  código;    
  • 19.
    Android  Market   • Objevo:     –  Possibilitar  aos  desenvolvedores  um  local  para   disponibilizar  suas  Apps.   •  Para  ulizar:   –  Cadastro,  pagamento  de  US$  25.00;   –  Após  isso  pode  ser  instalado  por  qualquer  usuário;  
  • 20.
    Android  Market   • Android  Market  já  possui  mais  aplica3vos   gratuitos  que  a  AppStore,  da  Apple   – Segundo  analistas,  loja  de  aplica6vos  do   Android  pode  superar  a  App  Store  em   número  total  de  programas  em  cinco  meses   02  de  Maio  de  2011  |  14:30h   – OlharDigital    
  • 21.
    Plataformas  ou  Versões   •  No   mundo   Android   as   versões   são   conhecidas   como  plataformas;  
  • 22.
    Plataformas  ou  Versões   •  No  dia  10/05     –  nova   versão,   Ice   Cream   Sandwich;   –  Unificar  as  plataformas   •  Smartphone  e  Tablets   –  Features:   •  Reconhecimento  de  Faces;   •  Reconhecimento  de  Voz   –  Superando  o  iOS;   •  Mudança  de  Foco    esse  ano   iliz ado  ainda D i sp o n i b
  • 23.
    Android  SDK   • Contém:     –  toda  a  API  necessária  para  desenvolver  ulizando   a  linguagem  Java;   –  Contém  o  emulador;   •  Sendo  possível  plugar  um  celular  na  USB  para  executar/ testar  a  aplicação;   •  Para   isso   necessita   do   driver   do   celular   instalado   na   máquina;  
  • 24.
    Android  SDK   • Instalando  o  SDK...   –  hvp://developer.android.com/sdk/   •  Instalando  o  plugin  no  eclipse  –  ADT   –  hvp://dl.google.com/android/ADT-­‐10.0.1.zip  
  • 25.
    Configurando  a  plataforma  no  SDK   •  O   SDK   vem   vazio,   ou   seja,   sem   plataforma   alguma;   •  Vamos  ulizar  a  versão  2.2;   •  Para   isso   vamos   ulizar   a   ferramenta   inclusa   no   SDK   chamada,   Android   SDK   and   AVD   Manager.  
  • 26.
    Android  SDK  And  AVD  Manager   •  Instalar  novas  plataformas   •  Documentação   •  Add-­‐ons,  como:  Google  Maps   •  Drivers  USB  
  • 27.
    Android  SDK  And  AVD  Manager   •  Para  iniciar  a  ferramenta  clique  em:  
  • 28.
    Android  SDK  And  AVD  Manager   •  Poderá  acontecer  o  seguinte:  
  • 29.
    Android  SDK  And  AVD  Manager   •  Solução   1º  Passo  
  • 30.
    Android  SDK  And  AVD  Manager   •  Solução   2º  Passo  
  • 31.
    Android  SDK  And  AVD  Manager   •  Solução   3º  Passo  
  • 32.
    Android  SDK  And  AVD  Manager   •  Solução   4º  Passo  
  • 33.
    Android  SDK  And  AVD  Manager   •  Para   visualizar   os   pacotes   que   estão   instalados,   clique   no   menu   de   opções   a   esquerda  em,  Installed  Packages.  
  • 34.
    Android  SDK  And  AVD  Manager   •  Para  instalar  uma  nova  plataforma,  faça:  
  • 35.
    Android  SDK  And  AVD  Manager   •  Mas  o  que  é  AVD  ?   –  Android  Virtual  Device   –  Criação   de   uma   configuração,   para   que   o   emulador  possa  simular  a  mesma;  
  • 36.
    Android  SDK  And  AVD  Manager   Android  2.1   AVD  1   SD  1024  MB   Resol.:  HVGA   Android  2.2   SD  500  MB   AVD  2   Resol.:  HVGA   Android  2.2   SD  1024  MB   AVD  3   Resol.:  WQVGA432  
  • 37.
    Criando  uma  nova  AVD   •  Clique  em  New  
  • 38.
    HelloWorld  !   • Crie  um  novo  projeto   –  File  >  New  >  Android  Project  
  • 39.
    HelloWorld  !   • Na  proxima  janela   •  Project  Name:  Nome  do  projeto;   •  Build  Target:  Plataforma  ulizada  (2.2)   •  Applica3on  Name:  No  da  aplicação  que  será  exibida  no   celular;   •  Package  Name:  br.com.nooclix.zn     –  Manterá  a  Acvity  principal  (  Único  );   •  Create  Ac3vity:  Tela  principal  da  aplicação;   •  Min  SDK  Version:    Level  da  API  (  2.2  =  8)    
  • 40.
    Criando  o  HelloWorld  !   Após  preencher     todos  os  campos     clique  em  Finish  
  • 41.
  • 42.
    Estrutura  do  Projeto   •  Src  –  Código  Java   •  Gen   –   Classe   R.   Permi   acessar   os   recursos   (imagens,   arquivos,   componentes)   através   de   constantes;   Não   pode   ser   alterada   manualmente;   •  Assests  –  Contém  arquivos  customizados,  como  fontes;   •  Res  –  Contém  subpastas  de  recursos;   •  Drawable  –  Imagens  ulizadas  na  aplicação;   •  Layout  –  Pasta  com  layouts  em  XML;   •  Values  –  Arquivos  XML,  como:  Strings  para  internacionalização;   –  Cores,  Eslos,  etc.  
  • 43.
    Executando  o  Projeto   Botão  direito  no  projeto  e  siga  os  passos  abaixo:  
  • 44.
    Entendendo  os  arquivos  do  projeto   •  /res/layout/main.xml   •  Os  arquivos  XML  na  pasta  layout  representa  uma  tela  da  aplicação;   •  As  TAGS  representa  os  componentes,  a  criação  da  Visão;   •  Os  componentes  visuais  podem  ser  criados  via  API  Java;  
  • 45.
    Entendendo  os  arquivos  do  projeto   •  /res/values/string.xml   •  Chave  -­‐  Valor;   •  Muito  importante  para  internacionalização;   Chave   Valor  
  • 46.
    Entendendo  os  arquivos  do  projeto   •  A  Classe  R   •  Possui  constantes  (do  po  INT)  para  todos  os  recursos  criados;   •  Acessa  imagens;   •  É  atualizada  automacamente  pelo  ADT(Plugin),  quando  a  pasta  res   é  alterada;   –  R.drawable.imagem1;   –  R.layout.meu_layout;   –  R.string.valor_string;   –  R.style.meu_eslo;  
  • 47.
    Entendendo  os  arquivos  do  projeto   •  IMPORTANTE:   Todos  os  recursos  devem  ter:  nomes   minusculos  e  sem  espaços.  Caso  não  siga  a   regra  a  classe  R  não  será  compilada.  
  • 48.
  • 49.
    AndroidManifest.xml   •  Deve-­‐se  manter  na  raiz  do  projeto;   •  Mantem  todas  as  configurações  do  projeto:   –  Nome,  pacote  base,  ícone   –  Acvity’s   –  Versão  SDK   –  Permissões   •  Com  o  eclipse  existe  um  editor  visual;   •  Semelhante  ao  web.xml;  
  • 50.
  • 51.
    AndroidManifest.xml   O  que  significa  essas  linhas?   Pode  ser  executada  isoladamente,  ponto  inicial   A  Acvity  estará  na  tela  inicial  
  • 52.
    Obtendo  componentes   • Em  certos  casos  é  necessário  capturar  valores  da   visão,  assim  como  adiciona-­‐los  de  forma   dinâmica;   •  Método  findById(id);   •  É  preciso  fazer  um  cast,  para  o  componente   ulizado;  
  • 53.
    Obtendo  componentes   Arquivo  XML  (  layout/main.xml  )   Arquivo  Java  (  Principal.java  )  
  • 54.
    Tratamento  de  Eventos   •  Para  controlar  eventos,  iremos  o  ulizar  o   método  setOnClickListener(listener);  Veja;  
  • 55.
    Exercicio  1   • Crie  um  projeto  chamado  tandroid;   –  Crie  as  seguintes  Strings  (string.xml)   •  Produto;  Quandade;  Valor;  Calcular;   –  E  faça:   Efetue  o  valor  total  da  compra  
  • 56.
    E  o  SysOut  ?     •  Ao  ulizar  o  método  System.out.println(),  nada   acontece;   •  Normal;   •  É  preciso  usar  o  LogCat,  com  a  chamada:   Log.i(“categoria”,  “mensagem”);   Log.w(“categoria”,  “mensagem”);  
  • 57.
    Widgets  Iniciando…   Bem  vindo  ao  mundo  dos   Widgets  
  • 58.
    TextView  e  EditText   •  Propriedades:   –  layout_width  =  [“wrap_content”    ou  “fill_parent”]    -­‐>  Preenchimento  Lateral   –  layout_heigth  =  [“wrap_content”    ou  “fill_parent”]    -­‐>  Preenchimento  Altura   –  background  =  “#FFFF34”  -­‐>  Cor  de  Fundo   –  textColor  =  “#FFFF34”  -­‐>  Cor  da  Fonte   –  hint  =  “qualquer  texto”-­‐>  Mensagem  se  o  texto  esver  vazio.   –  autoLink  =  [“web  ou  map  e  etc”]  -­‐  >  o  TextView  Funciona  como  link.   –  password    =  [true|false]  -­‐>  Campo  de  senha(******)   –  layout_weight  =  [“valor  inteiro”]  -­‐>  Refere-­‐se  a  porcentagem  que  o   componente  irá  ocupar  na  tela;   OBS:  A  parr  da  API  Level  8(2.2  Froyo)  fill_parent  tornou-­‐se    match_parent  
  • 59.
    CheckBox  e  ToggleBuvom   •  Componentes  para  seleção  de  iten  opcionais;   •  Propriedades:   –  textOn:  Exibe  um  texto  quando  selecionado;   –  textOff:  Exibe  um  texto  quando  não  está  selecionado;   •  Método  isChecked():   –  Retorna  a  situação  da  seleção;   om    
  • 60.
    CheckBox  e  ToggleBuvom   Arquivo  da  visão  anterior  (XML)  
  • 61.
    RadioBuvom   •  Seleção  Única   •  É  ulizado  com  o  auxilio  de  um  RadioGroup   •  Propriedades:   –  Text:  Texto  a  ser  exibido;   –  Checked:  Se  o  botão  iniciará  marcado  ou  não    [  true  |  false  ]   •  Método  para  obter  o  radio  selecionado,  pertence  ao  Group:   –  getCheckedRadioBuvonId();  
  • 62.
  • 63.
    Exercicio  2   • Crie  um  novo  layout,  calc_salario   –  Calcule  a  previsão  salarial  dos  funcionários:   •  Que  sejam  de  TI;   •  O  funcionário  escolherá  o  percentual  de  aumento;  
  • 64.
  • 65.
  • 66.
    AutoCompleteTextView   •  Efetua  uma  busca  enquanto  digita;   –  Propriedades:   •  comple3onThreshold:  Número  minimo  para  iniciar  o   autocomplete  (default  =  2)   •  comple3onHint:  Texto  de  dica  exibido  abaixo  da  caixa;     –  É  necessário  ulizar  um  Adapter   •  ListAdapter  
  • 67.
  • 68.
    Buvon  e  ImageBuvon   •  Ambos  são  botões;   •  Porém,  o  Buvom  não  pode  ter  um  icone;   •  O  ImageBuvon  tem  um  icone;  
  • 69.
    ImageView   •  Permi  a  visualização  de  imagens:  JPG,  PNG  e   GIF;   –  A  imagem  no  XML  é  adicionada  através  da   propriedade  src=@drawable/suaimagem;   –  Em  Java:  
  • 70.
    ImageView   •  Arquivo  XML  e  Java  
  • 71.
    Spinner   •  Funciona  como  um  ComboBox;   •  Propriedades:   –  Prompt:  Similar  a  um  Titulo  de  Janela;   •  Métodos:   –  Object  getSelectedItem()  :  Item  selecionado;   –  long  getSelecteditemId()  :  id  do  item  selecionado;   –  int  getSelectedItemPosion()  :  Posição  do  Item;   –  Ligado  ao  Array;     setOnItemSelectedListener  
  • 72.
    Spinner   •  Arquivo  XML  e  Java  
  • 73.
    ProgressDialog   •  Mensagem  de  espera;   •  Mantem-­‐se  em  execução  através  do  método   show()  até  que  o  método  dismiss();  
  • 74.
    Exercicio  3   • Criar  uma  tela  com:   –  Spinner  com  nome  de  carros;   –  ImageView  para  exibir  as  fotos  quando     clicados  no  Spinner   –  Obtenha  uma  das  imagens  da  internet:  URL;   •  Ulize  a  ProgressDialog;   –  Adicione  um  efeito  de  transição  
  • 75.
    ImageGallery   •  Exibi  diversas  imagens  de  uma  só  vez;   •  As  fotos  são  passadas  com  o  indicador (mouse);   •  É  necessário  a  criação  de  uma  classe  Adapter;   –  Herda  de  BaseAdapter  
  • 76.
    ImageGallery   •  Exemplo  (  adicione  imagens  em  drawable)   •  Criando  o  adapter    
  • 77.
    ImageGallery   •  Exemplo  (  adicione  imagens  em  drawable)   •  Criando  o  adapter    
  • 78.
    ImageGallery   •  Exemplo  (  adicione  imagens  em  drawable)   •  Criando  o  adapter    
  • 79.
    ImageGallery   •  Criando  a  Acvity  (  deve  ter  um  layout  para  isso  )  
  • 80.
    ImageGallery   •  Capturando  a  imagem  selecionada  
  • 81.
    Acvity  Iniciando…   Bem  vindo  ao  mundo  dos   Ac3vity  
  • 82.
    Acvity   •  Representa  uma  tela  da  aplicação;   •  Tem  a  função  de  gerenciar  os  eventos  da  tela;   •  Regra  de  Visão;   •  Configurar  o  View  a  ser  exibido;  
  • 83.
    Acvity   •  Deve  herdar  de  Acvity  ou  subclasses;   •  Deve  implementar  onCreate:   –  Inicializar    View;   –  Criar  os  elementos  da  tela;   •  Deve  ser  informado  no  AndroidManifest.xml  
  • 84.
    Acvity   •  Estados  de  uma  acvity   Executando   Temporariamente  interrompida   Destruída  
  • 85.
    Acvity   •  Cada  Acvity  é  adicionada  a  um  stack  acvity;   •  Outras  podem  estar:   •  Executando  em  segundo  plano;     •  Pausadas;   •  Paradas;   •  Toda  tela  é  uma  Acvity:  ligação,  mensagem…  
  • 86.
    Acvity  Ciclo  de  Vida   Finish()  
  • 87.
    Navegando  entre  telas   •  Para  navegarmos  entre  várias  telas,   ulizaremos  os  seguintes  métodos:   –  startAcvity(intent);   •  Pode  enviar  parâmetros   •  Exibe  uma  nova  acvity   –  startAcvityForResult(intent,codigo);   •  Pode  enviar  parâmetros   •  Exibe  uma  nova  acvity   •  Espera  um  retorno  da  mesma  
  • 88.
    Enviando  parâmetros   • Para  se  enviar  parâmetros  uliza-­‐se  a  classe   Intent  em  união  com  a  Bundle,  ou  não;   •  É  similar  a  um  HashMap;   Valor  INT  e  STRING    
  • 89.
    Enviando  parâmetros   • Para  se  enviar  parâmetros  abreviando…   •  É  similar  a  um  HashMap;   Valor  Boolean  
  • 90.
    Retornando  valores   • Uliza-­‐se  o  método  setResult(codigo,  intent);   –  Em  seguida  chama  o  método  finish();   –  Para  finalizar  a  Acvity  
  • 91.
    Retornando  valores   • Capturando  o  retorno   –  onAcvityResult(int  requestCode,  int  resultCode,  Intent  data);   –  Efetua  a  leitura  do  intent  de  acordo  com  resultCode   –  requestCode  =  codigo  da  Intent  do  startAcvityForResult(i,  codigo);  
  • 92.
    ListAcvity   •  Exibe  dados  em  forma  de  lista;   •  Subclasse  de  Acvity;   •  Já  possui  métodos  relacionado  ao   componente  ListView;  
  • 93.
    ListAcvity   •  Já  possui  barra  de  rolagem;   •  Método  setContentView(listView),  é  chamado   automáco;   •  Necessário  um  ListAdapter;   •  Fazendo  a  ligação  entre  o  ListView  e  os  dados.  
  • 94.
    ListAcvity   •  Um  rápido  exemplo…   Array  com  itens  do  ListView  (Lista)  
  • 95.
    ListAcvity   •  Um  rápido  exemplo…  
  • 96.
    Exercicio  4   • Crie  um  Menu  ulizando  uma  ListAcvity   –  Com  Icones   –  Ao  clicar  em  um  item,  navegar  para  a     respecva  tela;   –  Esse  Menu  deve  conter  Icones,  Imagem  de  Fundo   (Adicione  um  tela  de  Login);   •  Precisa-­‐se  de  um  layout.xml   •  Uma  classe  representando  cada  Item   •  Adapter   Códigos  
  • 97.
    Exercicio  4   • Criando  o  layout_list.xml  
  • 98.
    Exercicio  4   • Criando  a  classe  Icones   •  Representando  cada  item  da  lista  
  • 99.
    Exercicio  4   • Criando  o  a  classe  Icones  (Connuação)   •  Representando  cada  item  da  lista  
  • 100.
    Exercicio  4   • Criando  o  a  classe  IconesAdapter  (Connuação)   •  Adaptor  para  a  List  
  • 101.
    Exercicio  4   • Criando  o  a  classe  IconesAdapter  (Connuação)   •  Adaptor  para  a  List  
  • 102.
    Exercicio  4   • Criando  o  a  classe  IconesAdapter  (Connuação)   •  Adaptor  para  a  List  
  • 103.
    Exercicio  4   • Configurando  a  Acvity  
  • 104.
    Exercicio  4   • Configurando  a  Acvity  
  • 105.
    Intent  Iniciando…   Bem  vindo  ao  mundo  das   Intent  
  • 106.
    Intent   •  Representa  uma  “ação”,  que  será  executada   pela  aplicação  em  conjunto  com  o  sistema   operacional;   •  Exemplos:   –  Abrir  uma  nova  tela  startAcvity(intent);   –  Efetuar  uma  ligação;   –  Abrir  o  browser;   –  Abrir  um  mapa;  
  • 107.
    Intent   •  Algumas  das  avidades/intenções  precisam  de   autorização/permissão;   –  Internet:   •  android.permission.INTERNET   –  Contatos:   •  android.permission.READ_CONTACTS   –  Ligação:   •  android.permission.CALL_PHONE  
  • 108.
    Vamos  a  praca   •  Abrindo  o  browser  
  • 109.
    Vamos  a  praca   •  Faça  uma  ligação   –  Ação:  Intent.ACTION_CALL;   –  URI:  “tel:numerodesejado”;   –  android.permission.CALL_PHONE  
  • 110.
    Intent  Finalizando   • Pode  ser  ulizado  para  comunicar  aplicações   disntas;   –  IntentFilter   •  Exemplos:   –  Nossas  aplicações;   –  Abrir  mapa  em  determinadas  coordenadas;   –  Listar  contatos  ou  UM  contato  por  id;   –  Tocar  músicas,  videos…  
  • 111.
    Layouts  Iniciando…   Bem  vindo  ao  mundo  dos   Layouts  
  • 112.
    Layouts   •  Define  um  forma  de  organizar  os   componentes  na  tela/View;   –  Horizontal  ou  Vercal;     –  Exatas  coordenadas;   •  Podendo  ser  indicado  X  e  Y;   –  Tabular;  
  • 113.
    Layouts  –  Hierarquia  de  Componentes   View   ViewGroup   TextView   ImageView   AbsoluteLayout   LinearLayout   TableLayout  
  • 114.
    Layouts   •  Propriedades  como:   –  Layout_width:  receber  inteiros(dpi,  px)   •  fill_parent,  match_parent,  wrap_content;   –  Layout_heightreceber  inteiros(dpi,  px)   •  fill_parent,  match_parent,  wrap_content;   –  Layout_weight   –  Layout_gravity   –  Layout_marginTop,  Layout_marginRight   –  background   –  Entre  outros….  
  • 115.
    LinearLayout   •  Possibilita  a  organização/alinhamento  de   componentes  na  vercal  ou  horizontal(padrão);   •  Controlado  pela  propriedade  orientaon;   •  Pode-­‐se  controlar  alinhamento  com  gravity;   •  Pode-­‐se  controlar  preenchimento  com  weight;   –  Relevância  (quem  pode  mais);  
  • 116.
    TableLayout   •  Semelhante  a  uma  tabela;   –  Ul  para  formulários;   •  Cada  linha  é  representada  por:   –  TableRow  subclasse  de  LinearLayout;   –  Cada  componente  inserido  representa  uma   coluna  automacamente;  
  • 117.
    Layouts  Iniciando…   Bem  vindo  ao  mundo  das   No3fica3ons  
  • 118.
    Noficaons   •  Classe:  android.app.Noficaon   •  Exibi  uma  mensagem  na  barra  de      status;   •  Possui  um  conteúdo/mensagem;   •  Visualizando  o  conteúdo  uma  Intent      pode  ser  disparada;  
  • 119.
    Noficaons   •  Úl  para  não  abrir  uma  tela  sem  permissão;   •  Aplicação  em  segundo  plano  disparar  um   Alerta;   •  Evita  atrapalhar  o  usuário  de  forma  elegante;  
  • 120.
  • 121.
    Noficaons   •  Configurando  parâmetros   –  New  Noficaon   •  Icone   •  Texto  para  exibição  na  barra  de  status   •  Hora  e  Data  de  inicialização   –  PendingIntent   •  Contexto   •  Codigo  da  requisicao   •  Intent  (a  ser  executada  no  clique  );   •  Controlar  a  abertura  da  Intent  
  • 122.
    Noficaons   •  Configurando  parâmetros   –  LatesEventInfo   •  Contexto   •  Titulo  da  noficaon   •  Conteudo   •  PendingIntent   –  Nofy(id,  noficaon)   •  Id:  idenfica  a  noficacao  
  • 123.
    Noficaons   •  Configurando  para  cancelar   Ou  adicionar  no  onDestroy(),  para  encerra  junto  com   a  Acvity  que  a  iniciou!  
  • 124.
    Hvp  Iniciando…   Bem  vindo  ao  mundo  do   HEp  
  • 125.
    HTTP   •  Muitas  vezes  manter  os  dados  no  disposivo  é   caro;  complexo;  inseguro;   •  Para  isso  a  solução  seria  ulizar  conexões  Hvp;   –  Teremos  acesso  a  dados  complexos;   –  Informações  seguras;   •  Atualmente  as  aplicações  tornam-­‐se  on-­‐line;   –  Tento  acesso  em  tempo  real;   •  Importante:   –  Quanto  maior  o  número  de  serviços  de  uma,  maior   será  o  seu  valor;  
  • 126.
    HTTP   •  Comumente  existe  a  necessidade  de   comunicação  com  um  servidor  para  troca  de   informações;   •  Essa  comunicação  é  independente  de   linguagem,  visto  que  é  através  do  protocolo   HTTP;  
  • 127.
    HTTP  Post   • Indica-­‐se  ulizar  o  método  POST   •  Por  quê?   –  1º:  Dados  colocados  no  corpo  da  mensagem;   –  2º:  Separados  da  URI   –  3º:  São  encapsulados  para  o  usuário  
  • 128.
    HTTP  Post   • Como  efetuar  a  comunicação  de  envio?  
  • 129.
    HTTP  Post   • Como  efetuar  a  comunicação  de  retorno?  
  • 130.
    Exercicio  Final   • Vamos  criar  uma  aplicação  para  cadastro      de  clientes  via  HTTP;   –  Nome   –  Endereço,  Numero   –  Tipo  de  Pessoa(FISICA  ou  JURIDICA)   –  Isento  de  ICMS  
  • 131.
    Exercicio  Final   • Vamos  criar  uma  aplicação  para  enviar  email    via  HTTP;   –  Email  enviado  disparar  uma     noficação;  
  • 132.
    Obrigado   Muito  Obrigado!