SlideShare uma empresa Scribd logo
Erisvaldo Gadelha Saraiva Júnior

Faculdade de Tecnologia de João Pessoa (FATEC-JP)
Especialização em Desenvolvimento para Dispositivos Móveis
Disciplina: Tecnologias para Dispositivos Móveis

Android
                               E-mail: erisvaldojunior@gmail.com
                                  Site: http://erisvaldojunior.com
                                        Twitter: @erisvaldojunior
Sobre mim


     Empreendedor Yupi Studios
     (http://yupistudios.com);

     Desenvolvedor Mobile (LAViD);

     Mestrando em Informática (UFPB);

     Analista de Sistemas (Cehap).
Sobre a Yupi Studios




    www.yupistudios.com
Games (MinerMan)
Aplicativos (Pump Me Up!)
Soluções Corporativas (Cardápio Digital)
O que será exposto na aula?

                         Conceitos Introdutórios;
Organize with Sections



                         Mercado Mobile;

                         Expor as Tecnologias e Tendências;

                         Introduzir o Android e preparar o
                         ambiente de desenvolvimento.
Era da Computação Ubíqua
Conceitos Introdutórios
Computação Móvel / Pervasiva / Ubíqua
Conceitos Introdutórios
Computação Móvel / Pervasiva / Ubíqua
Conceitos Introdutórios
Computação em Nuvem (Cloud Computing)
Conceitos Introdutórios
Computação em Nuvem (Cloud Computing)
Conceitos Introdutórios
Conceitos Introdutórios
                          Realidade Aumentada
Roteiro da Aula


 VISÃO GERAL   PLATAFORMAS E         A PLATAFORMA
 DO MERCADO      TENDÊNCIAS             ANDROID




                       Entendendo o Mundo da Mobilidade
VISÃO GERAL DO
MERCADO


   Números do Mercado Mobile no Brasil e no Mundo
O Mercado Mobile



                         Mercado brasileiro de telefonia móvel;
Organize with Sections




                         Números do mercado internacional;

                         Mercado de jogos (Brasil e mundo).
Celulares no Brasil (2007 a 2009)
Market Share das operadoras no Brasil (2007 a 2009)
Mercado brasileiro de celulares (2010)


      202 milhões e 944 mil celulares
      Crescimento de 16,7%;
      104,7 celulares a cada 100 habitantes.


      Operadoras
      Vivo - 29,7%
      Claro - 25,4%
      TIM – 25,1%
      Oi – 19,4%
Celulares no mundo (2000 a 2009)
Principais mercados de celular no mundo (2008 e 2009)
Operadoras de telefonia no mundo (2008 e 2009)
Market Share dos fabricantes (2005 a 2007)
Market Share dos fabricantes (2009 e 2010)
Mercado americano de jogos para dispositivos móveis
Mercado mundial de jogos para dispositivos móveis




                        Gartner
Plataformas e Tendências



   Plataformas de Mobilidade e Tendências do Mercado
SOs para Desenvolvimento (no Presente)




              iOS                     Android
              RIM                        SYMBIAN



    PALM OS          Windows Mobile                MAEMO
iOS (Apple)

        iPod, iPhone (2007) e iPad (2010);

        Baseado no Mac OS X (Objective-C);

        Kit de desenvolvimento exclusivo para
        Mac OS;

        Aplicativos exclusivamente na Apple
        App Store.
Android (Open Handset Alliance, liderada pelo Google)

       Plataforma aberta baseada em Linux;

       Android Development Tools (ADT)
       Plugin para Eclipse;

       Desenvolvimento em Java (Linux /
       Windows / Mac OS);

       1º smartphone: HTC G1 (2008);
       1º tablet: Samsung Galaxy Tab (2010).
Plataformas para Desenvolvimento (no Presente)



                     JavaME
                    Flash Lite

                      PyS60

                      BREW
JavaME



         Quase 2 bilhões de aparelhos;

         Grande comunidade de
         desenvolvedores;

         Atingiu 95% dos aparelhos em 2007.
Comparativo entre JavaME e Flash Lite
Comparativo entre Tecnologias
SOs para Desenvolvimento (Apostas para o Futuro)




                                        Windows
   BADA              MeeGo
                                        Phone 7
Mercado Mobile em 2010 (Divisão dos SOs)
                         Segundo a AdMob, dados de 2010, o Android ocupa a segunda
                         posição entre os sistemas operacionais para smartphone no mundo,
                         possuindo 26% do mercado e atrás apenas do iOS, que detém 40%.
Organize with Sections
Mercado Mobile em 2010 (Crescimento dos SOs)
                         Um aspecto interessante, porém, é o crescimento do Android no
                         mercado. O SO vem em uma ascendente contínua, ao contrário do
                         iOS, que vem oscilando, e do Symbian OS, que perdeu mercado.
Organize with Sections
Mercado Mobile em 2010 (Divisão dos Fabricantes)
                     A AdMob também mostra que a Apple (aparelhos iOS) possui a maior fatia
                     de smartphones do mercado. A Nokia (aparelhos Symbian e Maemo)
                     detém a segunda posição.
Organize with Sections
Android deve superar iOS em breve
Várias pesquisas e especialistas apontam que o Android deve se tornar
mais popular que o iOS nos próximos anos.

                            Android deve superar sistema operacional do iPhone em 2012, diz estudo.
   Organize with Sections

                            http://www.tecnologia3g.com.br/site/pt/page/noticias_detalhe.asp?cod=261

                            Android é a plataforma que mais cresce, diz consultoria
                            http://tecnologia.ig.com.br/noticia/2010/11/03/android+e+a+plataforma+que
                            +mais+cresce+diz+consultoria+9956087.html

                            Co-fundador da Apple (Steve Wozniak) acredita que Android ganhará corrida
                            entre smartphones
                            http://olhardigital.uol.com.br/produtos/digital_news/co-fundador-da-apple-
                            acredita-que-android-ganhara-corrida-entre-smartphones/14935

                            Demanda por desenvolvedores Android cresceu 710% em um ano
                            http://imasters.com.br/noticia/18931/carreira/demanda_por_desenvolvedore
                            s_android_cresceu_710_em_um_ano/
Lojas de Aplicativos para Dispositivos Móveis (App Stores)

                   Modelo Antigo (antes das App Stores)

 Desenvolvedor /
                        Publisher / Grande Empresa            Operadoras
Pequena Empresa




            A porcentagem final para o desenvolvedor independente ou
            pequena empresa acabava sendo menor que 20% do total.
Lojas de Aplicativos para Dispositivos Móveis (App Stores)

                   Novo Modelo (era das App Stores)

Desenvolvedor /                                          Loja de aplicativos do
   Empresa                                             Fabricante ou Operadora




            A porcentagem final para o desenvolvedor independente ou
                   empresa agora gira em torno de 70% do total.
Apple App Store
             Loja de aplicativos para iOS (iPod, iPhone e iPad) gerenciada
             pela Apple e disponível através dos próprios aparelhos.
             Lançada em julho de 2008;

             340 mil aplicativos e 10 bilhões de downloads até
             janeiro de 2011;
App Stores




             Disponível em cerca de 90 países;

             Share de 70% Desenvolvedor e 30% Apple;

             Desenvolvedor paga inscrição e anuidade no valor
             de U$ 99,00.
Google Android Market
             Loja de aplicativos para Android gerenciada pela Google e
             disponível através dos próprios aparelhos.
              Lançado em outubro de 2008;

              Mais de 200 mil aplicativos e 3 bilhões de
              downloads até janeiro de 2011;
App Stores




              Disponível em cerca de 48 países;

              Share de 70% Desenvolvedor e 30% Google;

              Desenvolvedor paga taxa única de inscrição no
              valor de U$ 25,00.
Comparativo Android Market X Apple App Store
                 Dados referentes ao ano de 2009, quando a distância entre
                 Android Market e a Apple App Store ainda era muito grande.
Organize with Sections
Comparativo Android Market x Apple App Store
A média de downloads da Apple App Store é superior a do Android
Market, bem como a porcentagem de usuários que compram aplicações
(dados de 2009).
  Organize with Sections
Nokia Ovi Store
             Loja de aplicativos para dispositivos Nokia (Symbian, QT, Flash
             Lite e JavaME) e disponível através dos próprios aparelhos.

               Lançada em maio de 2009;

               50 mil aplicativos e média de 3 milhões de
               downloads por dia (janeiro de 2011);
App Stores




               Disponível em mais de 200 países;

               Share de 70% Desenvolvedor e 30% Nokia;

               Desenvolvedor paga taxa única de inscrição
               de apenas 1 (um) euro.
Comparação entre App Stores (custo para desenvolvedores)
Relação de App Stores (distimo.com)
In-App Payment é uma tendência
             Jogos e aplicativos são gratuitos à priori, embora vários
             recursos possam ser comprados dentro do próprio aplicativo.
App Stores
A plataforma Android



      Introdução ao Android, Arquitetura e Layouts
Definição do Android



Pilha de Software para Dispositivos Móveis que
inclui um Sistema Operacional, um Middleware e
aplicações-chave.

O Android SDK provê ferramentas e APIs para o
desenvolvimento de aplicações na plataforma
Android usando a linguagem de programação Java.
Recursos do Android

• Biblioteca Gráfica 2D e Suporte a 3D (OpenGL ES 1.0);

• SQLite;

• Suporte a Mídias diversas (MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG,
GIF);

• Bluetooth, EDGE, 3G e WiFi (dependente do hardware);

• Câmera, GPS, Bússola e Acelerômetro (dependente do hardware);

• Para desenvolvedores: Android Development Tools (ADT) Plugin para
Eclipse.
História do Android

     Julho de 2005: Google comprou a
     startup Android;

     Novembro de 2007: Google anunciou a
     Open Handset Alliance (OHA) e o
     Android;

     Ainda nesse mês, liberou a primeira
     versão do Android SDK.
História do Android


     Outubro de 2008: Android se torna
     Open Source;

     Ainda nesse mês, lançado o primeiro
     smartphone com Android: o HTC G1;

     Lançado o primeiro Android Developer
     Phone (ADP), baseado no G1.
História do Android

     Julho de 2009: HTC Hero, concorrente
     direto do iPhone;

     Novembro de 2009: Motorola Droid, 1
     milhão de unidades em pouco mais de
     dois meses;

     Chegou no Brasil como Motorola
     Milestone e foi sucesso de vendas.
História do Android


     Em 2010, dezenas de ótimos
     smartphones Android foram lançados;

     Setembro de 2010: Samsung Galaxy Tab,
     primeiro tablet a concorrer com o iPad;

     Dezembro de 2010: Quarto ADP
     lançado, o Samsung Nexus S.
Versões do Android




                     AndroidManifest.xml
Android 1.1 (fevereiro de 2009)
•Alarm Clock
•API Demos
•Browser
•Calculadora
•Camera
•Contatos
•Dev Tools
•Dialer
•Email
•Maps (e StreetView)
•Mensagem
•Música
•Imagens (Galeria)
•Configurações
Android 1.5 Cupcake (maio de 2009)


Grande evolução na interface (UI),
adicionando as seguintes novidades:

•Gravação de vídeos
•Bluetooth A2DP
•Conexão Bluetooth Automática
•Upload de vídeos para YouTube e Picasa
•Copiar e Colar
Android 1.6 Donut (setembro de 2009)

O HTC Hero trazia essa versão, que incluia o
novo Android Market, além das seguintes
melhorias:

•Integração de câmera, gravação de vídeos e
galeria
•Busca por gestos e voz
•Integração de aplicativos
•Grande melhoria no Text-To-Speech
Android 2.0/2.1 Eclair (outubro de 2009)

Uma das versões mais usadas até hoje.

•Desempenho otimizado
•Mais opções de tamanho e resolução de tela
•UI bastante melhorada
•Suporte ao Exchange
•Live wallpapers
•Teclado virtual melhorado
•Bluetooth 2.1
•Google Maps 3.1.2
Android 2.2 Froyo (maio de 2010)



•Suporte completo ao Flash 10.1
•Desempenho bastante otimizado (até 5x)
•Hotspot para até 8 aparelhos
•Home Screen melhorada (atalhos dedicados)
•Melhoria do Exchange
•Melhoria da câmera
•Salvar aplicativos no cartão de memória
•Discagem por bluetooth
Android 2.3 Gingerbread (dezembro de 2010)



•Melhoria do Copiar e Colar
•Interface melhorada
•Suporte a NTFC
•Teclado multitouch
•Suporte a SIP
•Gerenciador de Downloads
•Suporte a câmera frontal e vídeo-conferência
Google App Inventor for Android
                           Criação de aplicações para Android visualmente, sem a
App Inventor for Android

                           necessidade de escrever código.
Google App Inventor for Android
                           Orientado a blocos, basta definir as suas propriedades visuais e
App Inventor for Android

                           as suas ações para determinados eventos.
App Inventor for Android   Google App Inventor for Android
Arquitetura do Android
Arquitetura do Android
     Applications
     Conjunto de aplicações-chave nativas do Android, incluindo um cliente
     de e-mail, gerenciador de SMS, calendário, mapa, navegador,
     gerenciador de contatos e outros. Todas essas aplicações foram escritas
     em Java.


     Application Framework
     Desenvolvedores tem acesso completo às mesmas APIs que as
     aplicações-chave. O framework provê um conjunto de Views que podem
     ser utilizados para construir a interface da aplicação, incluindo listas,
     tabelas, caixas de texto, botões e até mesmo um browser embutido.
     Disponibiliza também Content Providers que permitem o acesso a dados
     de outras aplicações (como o gerenciador de Contatos). Há, ainda, o
     Resource Manager (provê acesso a recursos como imagens e arquivos
     de layout), o Notification Manager (permite que a aplicação mostre
     avisos personalizados) e o Activity Manager (gerencia o ciclo de vida da
     aplicação e a sua navegação).
Arquitetura do Android
     Libraries
     Conjunto de bibliotecas C/C++ utilizadas por vários componentes do
     Android. Essas bibliotecas provêem recursos que são expostos aos
     desenvolvedores através de sua camada sobrejacente: Application
     Framework.


     Android Runtime
     Cada aplicação no Android roda em um processo diferente no Linux e
     para cada processo é criada uma instância da máquina virtual Dalvik.
     Essa máquina virtual foi criada de forma que um dispositivo possa
     executar múltiplas instâncias de forma eficiente.
     As classes compiladas da aplicação são transformadas para o formato
     .dex (Dalvik Executable), otimizado para uma mínima utilização de
     memória. A Dalvik VM interage diretamente com o kernel Linux para
     execução de funcionalidades subjacentes como tratamento de
     concorrência e gerenciamento de memória.
Noções sobre aplicações Android


           As aplicações são escritas em Java e o seu código compilado,
           juntamente com os recursos que a aplicação utilizada, são
           empacotados em um arquivo .apk pela ferramenta aapt. É
           esse arquivo .apk que é usado para distribuir a aplicação e
           instalá-la nos dispositivos Android;



           Por padrão, cada aplicação é executada como um processo
           separado, com ID único e máquina virtual própria, isolando o
           seu código das demais aplicações.
Componentes da Aplicação
Um recurso fundamental do Android é o reuso de componentes. Caso uma
aplicação precise disponibilizar uma lista de imagens com scrolling e outra
aplicação apresenta tal componente e o disponibilizou para as demais, pode-
se invocar esse componente.


Devido a essa organização dos aplicativos em componentes, as aplicações
Android não possuem um único ponto de entrada (não há um método main(),
por exemplo). Ao invés disso, as aplicações apresentam componentes
essenciais que o sistema pode instanciar e executar quando necessário. Esses
componentes podem ser de quatro tipos:
            Activities (apresenta uma interface visual para o usuário)

            Services (roda em segundo plano por um período de tempo indeterminado)

            Broadcast Receivers (recebe e reage a eventos do sistema)

            Content providers (dados do aplicativo disponíveis para os demais)
Ativando e desativando componentes
Content Providers são ativados por meio de uma requisição de um
ContentResolver. Os demais componentes (Activities, Services e Broadcast
Receivers) são ativados por mensagens assíncronas denominadas intents. Trata-
se de um objeto da classe Intent que armazena o conteúdo da mensagem. Para
activities e services, o objeto apresenta o nome da ação que está sendo
requisitada bem como o endereço do dado em que atuará, além de outras coisas.
No caso de uma Activity, por exemplo, pode conter uma requisição para
apresentar uma imagem ao usuário ou permitir que o usuário edite algum texto.
Já para Broadcast Receivers, o objeto Intent pode anunciar que um botão da
câmera foi pressionado, por exemplo.



 Content Provider e BroadCast Receiver não precisam ser desativados, uma vez
 que permanecem ativos somente enquanto estão respondendo requisições.
 Já Activities e Services podem permanecer em execução por um longo
 período de tempo, daí a necessidade de finalizá-los através dos métodos
 finish() e stopSelf(), respectivamente.
Activities

O componente mais comum de uma aplicação é um Activity. É implementado
como uma subclasse de Activity e uma aplicação pode conter uma ou mais
activities. Cada qual representa uma interface visual e uma delas é marcada
como sendo a inicial que deve ser apresentada quando a aplicação é iniciada.
Mover-se de uma Activity para outra consiste em fazer com que a Activity atual
invoque a próxima.



Cada Activity possui uma janela padrão para
                                                 O visual da janela é composto
desenhar. Normalmente a janela ocupa a tela
                                                 por uma hierarquia de views,
toda mas também pode ser menor e flutuar
                                                 objetos derivados da classe
sobre outras janelas. Uma Activity pode
                                                 base View. As views também
conter janelas adicionais, como por exemplo
                                                 são      responsáveis     por
um dialog que exige uma resposta do usuário
                                                 responder às ações do usuário
ou mostra um aviso quando um dado item é
                                                 direcionadas ao seu espaço.
selecionado.
Activities e Tasks

Conforme dito anteriormente, uma Activity pode iniciar outra, inclusive uma que
pertença a outro aplicativo. Por exemplo: uma aplicação deseja mostrar o mapa
de algum local. Já existe uma Activity que o faz, então tudo o que a sua Activity
precisa fazer é chamar o método startActivity() passando como parâmetro o
objeto da classe Intent com as informações necessárias. O mapa será mostrado e,
quando o usuário pressionar a tecla voltar, sua Activity será mostrada novamente
na tela.



  Para o usuário, isso é transparente. O Android mantém ambas as activities na
  mesma Task. Uma Task, para o usuário, é como se fosse uma aplicação.
  Tecnicamente é um grupo de Activities relacionadas que foram adicionadas
  em uma pilha. A base da pilha é a primeira Activity que é mostrada quando a
  Task é iniciada, enquanto que o topo é a Activity que está sendo executada no
  momento, ou seja, que está recebendo o foco das ações do usuário.
Ciclo de vida de uma Activity
Basicamente, uma Activity possui
         três estados:

         Ativo: quando a Activity está
         no topo da pilha (visível na
         tela e recebendo as ações do
         usuário);

         Pausado: quando a Activity
         perdeu     o    foco     mas
         permanece visível ao usuário.
         Ou seja, há outra Activity no
         topo que é transparente ou
         não ocupa toda a tela;

         Parado: quando a Activity
         está ofuscada por outra.
         Mantém o estado mas pode
         ser eliminada pelo sistema
         em caso de falta de memória.
Ciclo de vida de uma Activity
Services
Diferentemente de activities, os services não possuem interface e executam em
segundo plano por um período de tempo indeterminado. Cada serviço é uma
classe que herda de Service.




 Um exemplo clássico de Service é um tocador
 de músicas. A aplicação deve consistir de uma
 ou mais activities que permitem ao usuário
 selecionar as músicas e começar a tocá-las.
 Contudo, a execução das músicas em si não
 faz parte da Activity mas sim de um Service,
 uma vez que o usuário espera que a música
 continue a ser tocada após sair da tela.
Ciclo de vida de um Service
Broadcast Receivers

Componente que recebe e reage a anúncios de broadcast, geralmente oriundos
do sistema. Cada receiver é uma classe que herda de BroadCastReceiver.



 Mudança no fuso horário, anúncio de bateria
 fraca e mudança da linguagem por parte do
 usuário são exemplos de anúncios que podem
 ser capturados por Broadcast Receivers.

 Uma aplicação pode conter quantos
 receptores quiser. Os receptores podem
 iniciar uma Activity ou utilizar o
 NotificationManager para alertar o usuário
 (acender a luz do aparelho, vibrar, executar
 um som, etc).
Ciclo de vida de Broadcast Receivers



Quando uma mensagem de broadcast chega ao receptor, o Android invoca o
método onReceive(), passando como parâmetro um objeto Intent contendo a
mensagem.




 O Broadcast Receiver fica ativo apenas enquanto está executando esse método.
Content Providers

Componente que torna um conjunto específico de dados da aplicação disponível
para outras aplicações. Cada provider é uma classe que herda de ContentProvider
e disponibiliza um conjunto padrão de métodos para que outras aplicações
possam recuperar e armazenar dados do tipo que o provedor controla.




     As aplicações não podem acessar
     os métodos de um Content
     Provider diretamente. Para isso,
     elas precisam de um objeto
     ContentResolver, o qual pode
     conversar com qualquer Content
     Provider.
Como o Android suporta múltiplas telas?
                            Desde o Android 1.6, a plataforma provê suporte a múltiplos
Suporte a Múltiplas Telas

                            tamanhos de tela e resoluções, adequando-se aos muitos tipos e
                            tamanhos de dispositivos com Android.

                            Assim, a partir do Android 1.6, a plataforma divide a infinidade de
                            tamanhos de tela e resoluções suportadas em:

                            • Um conjunto de três tamanhos: large, normal e small;
                            • Um conjunto de três densidades: hdpi (high), mdpi (medium) e ldpi (low).

                            Dessa forma, a aplicação pode prover layouts e imagens para qualquer
                            um desses três conjuntos, sem a necessidade de trabalhar com o
                            tamanho físico real da tela do aparelho.

                            Em tempo de execução, o Android carrega o conjunto adequado de
                            recursos, baseado no dispositivo em questão.
Suporte a Múltiplas Telas
Suporte a Múltiplas Telas
Suporte a Múltiplas Telas
                            Organização de pastas de layout e imagens para uma aplicação que, em tese,
                                         suporta todos os tamanhos de telas e resoluções.
Views e ViewGroups em Android
Em Android, todos os componentes de interface gráfica são representados por
subclasses de android.view.View que representam os componentes gráficos
como TextView, Button, TextEdit, RadioButton, CheckBox, etc. Além da classe
android.view.ViewGroup, que representa um container de views e também de
ViewGroups. Ela é a classe base para componentes de layouts, como
LinearLayout, RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout, etc.
Hierarquia de classes de UI
Layouts e Layout Params em Android

Para que os componentes possam ser acomodados de acordo com o layout de
seu pai, os mesmos devem manter uma relação de obediência. Sendo assim, cada
filho deve configurar os seus parâmetros de layouts, por meio da classe
ViewGroup.LayoutParams, que permite que estes determinem suas propriedades
de posição e tamanho referente ao layout de seus pais.
LinearLayout
O layout básico, padrão quando da geração de um .XML de layout no Android, é o
LinearLayout. Como o próprio nome diz, ele dispõe os componentes linearmente
em uma unica direção definida pelo atributo android:layout_orientation.
LinearLayout e LayoutParams


android:layout_gravity: similar ao float do CSS, o
gravity define a posição do conteúdo do
LinearLayout na tela, podendo-se usar top,
bottom, left, right, center, center_vertical,
center_horizontal, etc. Pode-se usar combinações
através do conector “|”. Por exemplo: “bottom |
right”.

android:layout_weight: indica quanto do espaço
extra no LinearLayout será alocado para a visão
associada aos LayoutParams. Ou seja, pode-se
dividir a tela entre os layouts atribuindo a cada
um deles um peso que define qual deles terá
maior espaçamento e, casa todos tenham o
mesmo peso, a tela é dividida igualmente.             Aplicação de peso (weight) em
                                                     um componente do LinearLayout
LinearLayout (Código)
FrameLayout

Arranja seus filhos de acordo com uma pilha de componentes que são
adicionados, sendo que o topo da pilha contém o objeto que foi adicionado por
último. Pode-se usar quando se tem várias imagens e uma é sobreposta pela
outra (como um slide de imagens) conforme vão sendo adicionadas.




          Criando uma pilha de
      componentes com FrameLayout                 Sobreposição de componentes
                                                       com FrameLayout
FrameLayout (Código)




Nota: O FrameLayout é usado comumente a partir de uma de suas subclasses,
tais como ImageSwitcher, ViewAnimator, ViewSwitcher, ScrollView, TabHost, etc.
AbsoluteLayout

Implementa um plano cartesiano e posiciona os componentes em coordenadas X,
Y de forma absoluta.




                                                 Posicionando componentes no
                                                        AbsoluteLayout
AbsoluteLayout (Código)
RelativeLayout

Os componentes são ajustados através de relacionamentos entre si ou ao seu pai.
RelativeLayout (Código)
TableLayout
Comporta seus filhos em linhas e colunas. Cada filho é representado por um
TableRow (uma espécie de LinearLayout na horizontal) que permite que uma ou
ais células sejam adicionadas horizontalmente, sendo que cada célula pode
conter um único View.
TableLayout (Código)
What’s Your Message?
OBRIGADO!

Mais conteúdo relacionado

PPTX
Arquitetura dos dispositivos móveis
PDF
Aula 1- Fundamentos da computação móvel
PDF
Dispositivos móveis
PDF
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 2
PDF
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
PDF
PDF
Aula 1 - Introdução ao Mobile
PPTX
Redes de Computadores
Arquitetura dos dispositivos móveis
Aula 1- Fundamentos da computação móvel
Dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 2
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Aula 1 - Introdução ao Mobile
Redes de Computadores

Mais procurados (20)

PPT
Tipos de Sistemas Operacionais
PDF
Aula: Características dos dispositivos móveis
PPT
Introdução a dispositivos móveis.
PDF
Internet das Coisas - Conectando você e tudo ao seu redor
PDF
Introdução à Arquitetura de Computadores
PPT
Introducao à Informatica Aplicada
PDF
Internet das Coisas - Conceitos, tecnologias e aplicações
PDF
Android
PDF
Internet das Coisas: Conceitos e Aplicações
PPTX
Dispositivos móveis: Conceito, história e mercado
ODP
Aula - Arquiteturas de aplicações móveis
PPTX
Sistema Operacional Android
PDF
Aula1 - Apresentação de Banco de Dados
DOCX
Resenha piratas do vale do silício
PPTX
Hardware e software
PPT
Introdução à Informática
PDF
Sistemas operacionais
PPTX
Aula 5 - Redes de computadores
PDF
Manutenção de Computadores - Aula 1
Tipos de Sistemas Operacionais
Aula: Características dos dispositivos móveis
Introdução a dispositivos móveis.
Internet das Coisas - Conectando você e tudo ao seu redor
Introdução à Arquitetura de Computadores
Introducao à Informatica Aplicada
Internet das Coisas - Conceitos, tecnologias e aplicações
Android
Internet das Coisas: Conceitos e Aplicações
Dispositivos móveis: Conceito, história e mercado
Aula - Arquiteturas de aplicações móveis
Sistema Operacional Android
Aula1 - Apresentação de Banco de Dados
Resenha piratas do vale do silício
Hardware e software
Introdução à Informática
Sistemas operacionais
Aula 5 - Redes de computadores
Manutenção de Computadores - Aula 1
Anúncio

Destaque (20)

PDF
Android - Conceito e Arquitetura
PDF
Introdução ao Android Studio
PPTX
Rizal's grand tour of europe with viola
PPTX
BUSINESS QUIZ -Round 1
PDF
Android Aula 2
PDF
PDI Slides
ODP
Certificação ITIL e Curso ITIL Virtual
PPT
Snc 2º ano - 2012
PDF
Monthly Planner 2017
PPT
Proposta De Valor
PPT
Passos bíblicos para o fim
PDF
Integração contínua em PHP com Jenkins
PDF
Controle biológico
PPT
Saude da mulher
PPTX
Belgique : enquête d'opinion sur le tourisme responsable
PPT
Comprendre la crise financière (2009)
KEY
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
PPTX
Une introduction au e-commerce (ICHEC 2012)
PDF
Les Barbares Attaquent l'immobilier
PPT
Introduction au droit des societes (formation ecole des mines 2010)
Android - Conceito e Arquitetura
Introdução ao Android Studio
Rizal's grand tour of europe with viola
BUSINESS QUIZ -Round 1
Android Aula 2
PDI Slides
Certificação ITIL e Curso ITIL Virtual
Snc 2º ano - 2012
Monthly Planner 2017
Proposta De Valor
Passos bíblicos para o fim
Integração contínua em PHP com Jenkins
Controle biológico
Saude da mulher
Belgique : enquête d'opinion sur le tourisme responsable
Comprendre la crise financière (2009)
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
Une introduction au e-commerce (ICHEC 2012)
Les Barbares Attaquent l'immobilier
Introduction au droit des societes (formation ecole des mines 2010)
Anúncio

Semelhante a Android Aula 1 (20)

PDF
Desenvolvimento de Apps e Games para Android - Parte 1
PPTX
Android como plataforma de consumo de conteúdo, mídias digitais e entretenime...
PDF
A Era da Mobilidade
PDF
JavaMe no Mercado Mobile
PDF
JavaME no Mercado Mobile
PPTX
Android: História, Mercado e Possibilidades (#TDC2011 - Floripa)
PPTX
The is an app for that!
PPT
Robson Soares - Android no Javaneiros 2010
PPTX
Ciclo de palestras da JFRJ - Aplicativos Móveis
PDF
Relatório Mobilize de Inteligência de Mercado – Apps – #5
PDF
Relatório Mobilize de Inteligência de Mercado #5 - Apps
PPTX
Desenvolvendo aplicações móveis
PDF
Universo dos aplicativos para dispositivos móveis.
PPTX
Android
PDF
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
PPTX
Sistemas operacionais I - trabalho software movel
PDF
O Mercado e Desenvolvimento em Mobile
PDF
Introdução a programação em Android
PDF
Mobile - Uma introdução sobre sistemas para dispositivos móveis.
Desenvolvimento de Apps e Games para Android - Parte 1
Android como plataforma de consumo de conteúdo, mídias digitais e entretenime...
A Era da Mobilidade
JavaMe no Mercado Mobile
JavaME no Mercado Mobile
Android: História, Mercado e Possibilidades (#TDC2011 - Floripa)
The is an app for that!
Robson Soares - Android no Javaneiros 2010
Ciclo de palestras da JFRJ - Aplicativos Móveis
Relatório Mobilize de Inteligência de Mercado – Apps – #5
Relatório Mobilize de Inteligência de Mercado #5 - Apps
Desenvolvendo aplicações móveis
Universo dos aplicativos para dispositivos móveis.
Android
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
Sistemas operacionais I - trabalho software movel
O Mercado e Desenvolvimento em Mobile
Introdução a programação em Android
Mobile - Uma introdução sobre sistemas para dispositivos móveis.

Mais de Erisvaldo Junior (20)

PDF
Desenvolvimento de Apps e Games para iOS - Parte 2
PDF
Desenvolvimento de Apps e Games para iOS - Parte 1
PDF
Desenvolvimento de apps e games para android parte 8
PDF
Desenvolvimento de Apps e Games para Android - Parte 7
PDF
Desenvolvimento de Apps e Games para Android - Parte 6
PDF
Desenvolvimento de Apps e Games para Android - Parte 5
PDF
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
PDF
Desenvolvimento de Apps e Games para Android - Parte 4
PDF
Desenvolvimento de Apps e Games para Android - Parte 3
PDF
Desenvolvimento de Apps e Games para Android - Parte 2
PDF
Nokia SDK for Java
PDF
Java me record management system
PDF
Java me material complementar
PDF
Java me material complementar
PDF
Java me record management system
PDF
Java me generic connection framework
PDF
Introdução a api de baixo nível do java me
PDF
Introdução a game api do java me
PDF
O futuro do Android
PDF
Android Aula 5
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de apps e games para android parte 8
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Parte 4
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 2
Nokia SDK for Java
Java me record management system
Java me material complementar
Java me material complementar
Java me record management system
Java me generic connection framework
Introdução a api de baixo nível do java me
Introdução a game api do java me
O futuro do Android
Android Aula 5

Último (19)

PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Custos e liquidação no SAP Transportation Management, TM130 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Aula04-Academia Heri- Tecnologia Geral 2025
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula 18 - Manipulacao De Arquivos python
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Apple Pippin Uma breve introdução. - David Glotz
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...

Android Aula 1

  • 1. Erisvaldo Gadelha Saraiva Júnior Faculdade de Tecnologia de João Pessoa (FATEC-JP) Especialização em Desenvolvimento para Dispositivos Móveis Disciplina: Tecnologias para Dispositivos Móveis Android E-mail: erisvaldojunior@gmail.com Site: http://erisvaldojunior.com Twitter: @erisvaldojunior
  • 2. Sobre mim Empreendedor Yupi Studios (http://yupistudios.com); Desenvolvedor Mobile (LAViD); Mestrando em Informática (UFPB); Analista de Sistemas (Cehap).
  • 3. Sobre a Yupi Studios www.yupistudios.com
  • 7. O que será exposto na aula? Conceitos Introdutórios; Organize with Sections Mercado Mobile; Expor as Tecnologias e Tendências; Introduzir o Android e preparar o ambiente de desenvolvimento.
  • 8. Era da Computação Ubíqua Conceitos Introdutórios
  • 9. Computação Móvel / Pervasiva / Ubíqua Conceitos Introdutórios
  • 10. Computação Móvel / Pervasiva / Ubíqua Conceitos Introdutórios
  • 11. Computação em Nuvem (Cloud Computing) Conceitos Introdutórios
  • 12. Computação em Nuvem (Cloud Computing) Conceitos Introdutórios
  • 13. Conceitos Introdutórios Realidade Aumentada
  • 14. Roteiro da Aula VISÃO GERAL PLATAFORMAS E A PLATAFORMA DO MERCADO TENDÊNCIAS ANDROID Entendendo o Mundo da Mobilidade
  • 15. VISÃO GERAL DO MERCADO Números do Mercado Mobile no Brasil e no Mundo
  • 16. O Mercado Mobile Mercado brasileiro de telefonia móvel; Organize with Sections Números do mercado internacional; Mercado de jogos (Brasil e mundo).
  • 17. Celulares no Brasil (2007 a 2009)
  • 18. Market Share das operadoras no Brasil (2007 a 2009)
  • 19. Mercado brasileiro de celulares (2010) 202 milhões e 944 mil celulares Crescimento de 16,7%; 104,7 celulares a cada 100 habitantes. Operadoras Vivo - 29,7% Claro - 25,4% TIM – 25,1% Oi – 19,4%
  • 20. Celulares no mundo (2000 a 2009)
  • 21. Principais mercados de celular no mundo (2008 e 2009)
  • 22. Operadoras de telefonia no mundo (2008 e 2009)
  • 23. Market Share dos fabricantes (2005 a 2007)
  • 24. Market Share dos fabricantes (2009 e 2010)
  • 25. Mercado americano de jogos para dispositivos móveis
  • 26. Mercado mundial de jogos para dispositivos móveis Gartner
  • 27. Plataformas e Tendências Plataformas de Mobilidade e Tendências do Mercado
  • 28. SOs para Desenvolvimento (no Presente) iOS Android RIM SYMBIAN PALM OS Windows Mobile MAEMO
  • 29. iOS (Apple) iPod, iPhone (2007) e iPad (2010); Baseado no Mac OS X (Objective-C); Kit de desenvolvimento exclusivo para Mac OS; Aplicativos exclusivamente na Apple App Store.
  • 30. Android (Open Handset Alliance, liderada pelo Google) Plataforma aberta baseada em Linux; Android Development Tools (ADT) Plugin para Eclipse; Desenvolvimento em Java (Linux / Windows / Mac OS); 1º smartphone: HTC G1 (2008); 1º tablet: Samsung Galaxy Tab (2010).
  • 31. Plataformas para Desenvolvimento (no Presente) JavaME Flash Lite PyS60 BREW
  • 32. JavaME Quase 2 bilhões de aparelhos; Grande comunidade de desenvolvedores; Atingiu 95% dos aparelhos em 2007.
  • 33. Comparativo entre JavaME e Flash Lite
  • 35. SOs para Desenvolvimento (Apostas para o Futuro) Windows BADA MeeGo Phone 7
  • 36. Mercado Mobile em 2010 (Divisão dos SOs) Segundo a AdMob, dados de 2010, o Android ocupa a segunda posição entre os sistemas operacionais para smartphone no mundo, possuindo 26% do mercado e atrás apenas do iOS, que detém 40%. Organize with Sections
  • 37. Mercado Mobile em 2010 (Crescimento dos SOs) Um aspecto interessante, porém, é o crescimento do Android no mercado. O SO vem em uma ascendente contínua, ao contrário do iOS, que vem oscilando, e do Symbian OS, que perdeu mercado. Organize with Sections
  • 38. Mercado Mobile em 2010 (Divisão dos Fabricantes) A AdMob também mostra que a Apple (aparelhos iOS) possui a maior fatia de smartphones do mercado. A Nokia (aparelhos Symbian e Maemo) detém a segunda posição. Organize with Sections
  • 39. Android deve superar iOS em breve Várias pesquisas e especialistas apontam que o Android deve se tornar mais popular que o iOS nos próximos anos. Android deve superar sistema operacional do iPhone em 2012, diz estudo. Organize with Sections http://www.tecnologia3g.com.br/site/pt/page/noticias_detalhe.asp?cod=261 Android é a plataforma que mais cresce, diz consultoria http://tecnologia.ig.com.br/noticia/2010/11/03/android+e+a+plataforma+que +mais+cresce+diz+consultoria+9956087.html Co-fundador da Apple (Steve Wozniak) acredita que Android ganhará corrida entre smartphones http://olhardigital.uol.com.br/produtos/digital_news/co-fundador-da-apple- acredita-que-android-ganhara-corrida-entre-smartphones/14935 Demanda por desenvolvedores Android cresceu 710% em um ano http://imasters.com.br/noticia/18931/carreira/demanda_por_desenvolvedore s_android_cresceu_710_em_um_ano/
  • 40. Lojas de Aplicativos para Dispositivos Móveis (App Stores) Modelo Antigo (antes das App Stores) Desenvolvedor / Publisher / Grande Empresa Operadoras Pequena Empresa A porcentagem final para o desenvolvedor independente ou pequena empresa acabava sendo menor que 20% do total.
  • 41. Lojas de Aplicativos para Dispositivos Móveis (App Stores) Novo Modelo (era das App Stores) Desenvolvedor / Loja de aplicativos do Empresa Fabricante ou Operadora A porcentagem final para o desenvolvedor independente ou empresa agora gira em torno de 70% do total.
  • 42. Apple App Store Loja de aplicativos para iOS (iPod, iPhone e iPad) gerenciada pela Apple e disponível através dos próprios aparelhos. Lançada em julho de 2008; 340 mil aplicativos e 10 bilhões de downloads até janeiro de 2011; App Stores Disponível em cerca de 90 países; Share de 70% Desenvolvedor e 30% Apple; Desenvolvedor paga inscrição e anuidade no valor de U$ 99,00.
  • 43. Google Android Market Loja de aplicativos para Android gerenciada pela Google e disponível através dos próprios aparelhos. Lançado em outubro de 2008; Mais de 200 mil aplicativos e 3 bilhões de downloads até janeiro de 2011; App Stores Disponível em cerca de 48 países; Share de 70% Desenvolvedor e 30% Google; Desenvolvedor paga taxa única de inscrição no valor de U$ 25,00.
  • 44. Comparativo Android Market X Apple App Store Dados referentes ao ano de 2009, quando a distância entre Android Market e a Apple App Store ainda era muito grande. Organize with Sections
  • 45. Comparativo Android Market x Apple App Store A média de downloads da Apple App Store é superior a do Android Market, bem como a porcentagem de usuários que compram aplicações (dados de 2009). Organize with Sections
  • 46. Nokia Ovi Store Loja de aplicativos para dispositivos Nokia (Symbian, QT, Flash Lite e JavaME) e disponível através dos próprios aparelhos. Lançada em maio de 2009; 50 mil aplicativos e média de 3 milhões de downloads por dia (janeiro de 2011); App Stores Disponível em mais de 200 países; Share de 70% Desenvolvedor e 30% Nokia; Desenvolvedor paga taxa única de inscrição de apenas 1 (um) euro.
  • 47. Comparação entre App Stores (custo para desenvolvedores)
  • 48. Relação de App Stores (distimo.com)
  • 49. In-App Payment é uma tendência Jogos e aplicativos são gratuitos à priori, embora vários recursos possam ser comprados dentro do próprio aplicativo. App Stores
  • 50. A plataforma Android Introdução ao Android, Arquitetura e Layouts
  • 51. Definição do Android Pilha de Software para Dispositivos Móveis que inclui um Sistema Operacional, um Middleware e aplicações-chave. O Android SDK provê ferramentas e APIs para o desenvolvimento de aplicações na plataforma Android usando a linguagem de programação Java.
  • 52. Recursos do Android • Biblioteca Gráfica 2D e Suporte a 3D (OpenGL ES 1.0); • SQLite; • Suporte a Mídias diversas (MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG, GIF); • Bluetooth, EDGE, 3G e WiFi (dependente do hardware); • Câmera, GPS, Bússola e Acelerômetro (dependente do hardware); • Para desenvolvedores: Android Development Tools (ADT) Plugin para Eclipse.
  • 53. História do Android Julho de 2005: Google comprou a startup Android; Novembro de 2007: Google anunciou a Open Handset Alliance (OHA) e o Android; Ainda nesse mês, liberou a primeira versão do Android SDK.
  • 54. História do Android Outubro de 2008: Android se torna Open Source; Ainda nesse mês, lançado o primeiro smartphone com Android: o HTC G1; Lançado o primeiro Android Developer Phone (ADP), baseado no G1.
  • 55. História do Android Julho de 2009: HTC Hero, concorrente direto do iPhone; Novembro de 2009: Motorola Droid, 1 milhão de unidades em pouco mais de dois meses; Chegou no Brasil como Motorola Milestone e foi sucesso de vendas.
  • 56. História do Android Em 2010, dezenas de ótimos smartphones Android foram lançados; Setembro de 2010: Samsung Galaxy Tab, primeiro tablet a concorrer com o iPad; Dezembro de 2010: Quarto ADP lançado, o Samsung Nexus S.
  • 57. Versões do Android AndroidManifest.xml
  • 58. Android 1.1 (fevereiro de 2009) •Alarm Clock •API Demos •Browser •Calculadora •Camera •Contatos •Dev Tools •Dialer •Email •Maps (e StreetView) •Mensagem •Música •Imagens (Galeria) •Configurações
  • 59. Android 1.5 Cupcake (maio de 2009) Grande evolução na interface (UI), adicionando as seguintes novidades: •Gravação de vídeos •Bluetooth A2DP •Conexão Bluetooth Automática •Upload de vídeos para YouTube e Picasa •Copiar e Colar
  • 60. Android 1.6 Donut (setembro de 2009) O HTC Hero trazia essa versão, que incluia o novo Android Market, além das seguintes melhorias: •Integração de câmera, gravação de vídeos e galeria •Busca por gestos e voz •Integração de aplicativos •Grande melhoria no Text-To-Speech
  • 61. Android 2.0/2.1 Eclair (outubro de 2009) Uma das versões mais usadas até hoje. •Desempenho otimizado •Mais opções de tamanho e resolução de tela •UI bastante melhorada •Suporte ao Exchange •Live wallpapers •Teclado virtual melhorado •Bluetooth 2.1 •Google Maps 3.1.2
  • 62. Android 2.2 Froyo (maio de 2010) •Suporte completo ao Flash 10.1 •Desempenho bastante otimizado (até 5x) •Hotspot para até 8 aparelhos •Home Screen melhorada (atalhos dedicados) •Melhoria do Exchange •Melhoria da câmera •Salvar aplicativos no cartão de memória •Discagem por bluetooth
  • 63. Android 2.3 Gingerbread (dezembro de 2010) •Melhoria do Copiar e Colar •Interface melhorada •Suporte a NTFC •Teclado multitouch •Suporte a SIP •Gerenciador de Downloads •Suporte a câmera frontal e vídeo-conferência
  • 64. Google App Inventor for Android Criação de aplicações para Android visualmente, sem a App Inventor for Android necessidade de escrever código.
  • 65. Google App Inventor for Android Orientado a blocos, basta definir as suas propriedades visuais e App Inventor for Android as suas ações para determinados eventos.
  • 66. App Inventor for Android Google App Inventor for Android
  • 68. Arquitetura do Android Applications Conjunto de aplicações-chave nativas do Android, incluindo um cliente de e-mail, gerenciador de SMS, calendário, mapa, navegador, gerenciador de contatos e outros. Todas essas aplicações foram escritas em Java. Application Framework Desenvolvedores tem acesso completo às mesmas APIs que as aplicações-chave. O framework provê um conjunto de Views que podem ser utilizados para construir a interface da aplicação, incluindo listas, tabelas, caixas de texto, botões e até mesmo um browser embutido. Disponibiliza também Content Providers que permitem o acesso a dados de outras aplicações (como o gerenciador de Contatos). Há, ainda, o Resource Manager (provê acesso a recursos como imagens e arquivos de layout), o Notification Manager (permite que a aplicação mostre avisos personalizados) e o Activity Manager (gerencia o ciclo de vida da aplicação e a sua navegação).
  • 69. Arquitetura do Android Libraries Conjunto de bibliotecas C/C++ utilizadas por vários componentes do Android. Essas bibliotecas provêem recursos que são expostos aos desenvolvedores através de sua camada sobrejacente: Application Framework. Android Runtime Cada aplicação no Android roda em um processo diferente no Linux e para cada processo é criada uma instância da máquina virtual Dalvik. Essa máquina virtual foi criada de forma que um dispositivo possa executar múltiplas instâncias de forma eficiente. As classes compiladas da aplicação são transformadas para o formato .dex (Dalvik Executable), otimizado para uma mínima utilização de memória. A Dalvik VM interage diretamente com o kernel Linux para execução de funcionalidades subjacentes como tratamento de concorrência e gerenciamento de memória.
  • 70. Noções sobre aplicações Android As aplicações são escritas em Java e o seu código compilado, juntamente com os recursos que a aplicação utilizada, são empacotados em um arquivo .apk pela ferramenta aapt. É esse arquivo .apk que é usado para distribuir a aplicação e instalá-la nos dispositivos Android; Por padrão, cada aplicação é executada como um processo separado, com ID único e máquina virtual própria, isolando o seu código das demais aplicações.
  • 71. Componentes da Aplicação Um recurso fundamental do Android é o reuso de componentes. Caso uma aplicação precise disponibilizar uma lista de imagens com scrolling e outra aplicação apresenta tal componente e o disponibilizou para as demais, pode- se invocar esse componente. Devido a essa organização dos aplicativos em componentes, as aplicações Android não possuem um único ponto de entrada (não há um método main(), por exemplo). Ao invés disso, as aplicações apresentam componentes essenciais que o sistema pode instanciar e executar quando necessário. Esses componentes podem ser de quatro tipos: Activities (apresenta uma interface visual para o usuário) Services (roda em segundo plano por um período de tempo indeterminado) Broadcast Receivers (recebe e reage a eventos do sistema) Content providers (dados do aplicativo disponíveis para os demais)
  • 72. Ativando e desativando componentes Content Providers são ativados por meio de uma requisição de um ContentResolver. Os demais componentes (Activities, Services e Broadcast Receivers) são ativados por mensagens assíncronas denominadas intents. Trata- se de um objeto da classe Intent que armazena o conteúdo da mensagem. Para activities e services, o objeto apresenta o nome da ação que está sendo requisitada bem como o endereço do dado em que atuará, além de outras coisas. No caso de uma Activity, por exemplo, pode conter uma requisição para apresentar uma imagem ao usuário ou permitir que o usuário edite algum texto. Já para Broadcast Receivers, o objeto Intent pode anunciar que um botão da câmera foi pressionado, por exemplo. Content Provider e BroadCast Receiver não precisam ser desativados, uma vez que permanecem ativos somente enquanto estão respondendo requisições. Já Activities e Services podem permanecer em execução por um longo período de tempo, daí a necessidade de finalizá-los através dos métodos finish() e stopSelf(), respectivamente.
  • 73. Activities O componente mais comum de uma aplicação é um Activity. É implementado como uma subclasse de Activity e uma aplicação pode conter uma ou mais activities. Cada qual representa uma interface visual e uma delas é marcada como sendo a inicial que deve ser apresentada quando a aplicação é iniciada. Mover-se de uma Activity para outra consiste em fazer com que a Activity atual invoque a próxima. Cada Activity possui uma janela padrão para O visual da janela é composto desenhar. Normalmente a janela ocupa a tela por uma hierarquia de views, toda mas também pode ser menor e flutuar objetos derivados da classe sobre outras janelas. Uma Activity pode base View. As views também conter janelas adicionais, como por exemplo são responsáveis por um dialog que exige uma resposta do usuário responder às ações do usuário ou mostra um aviso quando um dado item é direcionadas ao seu espaço. selecionado.
  • 74. Activities e Tasks Conforme dito anteriormente, uma Activity pode iniciar outra, inclusive uma que pertença a outro aplicativo. Por exemplo: uma aplicação deseja mostrar o mapa de algum local. Já existe uma Activity que o faz, então tudo o que a sua Activity precisa fazer é chamar o método startActivity() passando como parâmetro o objeto da classe Intent com as informações necessárias. O mapa será mostrado e, quando o usuário pressionar a tecla voltar, sua Activity será mostrada novamente na tela. Para o usuário, isso é transparente. O Android mantém ambas as activities na mesma Task. Uma Task, para o usuário, é como se fosse uma aplicação. Tecnicamente é um grupo de Activities relacionadas que foram adicionadas em uma pilha. A base da pilha é a primeira Activity que é mostrada quando a Task é iniciada, enquanto que o topo é a Activity que está sendo executada no momento, ou seja, que está recebendo o foco das ações do usuário.
  • 75. Ciclo de vida de uma Activity Basicamente, uma Activity possui três estados: Ativo: quando a Activity está no topo da pilha (visível na tela e recebendo as ações do usuário); Pausado: quando a Activity perdeu o foco mas permanece visível ao usuário. Ou seja, há outra Activity no topo que é transparente ou não ocupa toda a tela; Parado: quando a Activity está ofuscada por outra. Mantém o estado mas pode ser eliminada pelo sistema em caso de falta de memória.
  • 76. Ciclo de vida de uma Activity
  • 77. Services Diferentemente de activities, os services não possuem interface e executam em segundo plano por um período de tempo indeterminado. Cada serviço é uma classe que herda de Service. Um exemplo clássico de Service é um tocador de músicas. A aplicação deve consistir de uma ou mais activities que permitem ao usuário selecionar as músicas e começar a tocá-las. Contudo, a execução das músicas em si não faz parte da Activity mas sim de um Service, uma vez que o usuário espera que a música continue a ser tocada após sair da tela.
  • 78. Ciclo de vida de um Service
  • 79. Broadcast Receivers Componente que recebe e reage a anúncios de broadcast, geralmente oriundos do sistema. Cada receiver é uma classe que herda de BroadCastReceiver. Mudança no fuso horário, anúncio de bateria fraca e mudança da linguagem por parte do usuário são exemplos de anúncios que podem ser capturados por Broadcast Receivers. Uma aplicação pode conter quantos receptores quiser. Os receptores podem iniciar uma Activity ou utilizar o NotificationManager para alertar o usuário (acender a luz do aparelho, vibrar, executar um som, etc).
  • 80. Ciclo de vida de Broadcast Receivers Quando uma mensagem de broadcast chega ao receptor, o Android invoca o método onReceive(), passando como parâmetro um objeto Intent contendo a mensagem. O Broadcast Receiver fica ativo apenas enquanto está executando esse método.
  • 81. Content Providers Componente que torna um conjunto específico de dados da aplicação disponível para outras aplicações. Cada provider é uma classe que herda de ContentProvider e disponibiliza um conjunto padrão de métodos para que outras aplicações possam recuperar e armazenar dados do tipo que o provedor controla. As aplicações não podem acessar os métodos de um Content Provider diretamente. Para isso, elas precisam de um objeto ContentResolver, o qual pode conversar com qualquer Content Provider.
  • 82. Como o Android suporta múltiplas telas? Desde o Android 1.6, a plataforma provê suporte a múltiplos Suporte a Múltiplas Telas tamanhos de tela e resoluções, adequando-se aos muitos tipos e tamanhos de dispositivos com Android. Assim, a partir do Android 1.6, a plataforma divide a infinidade de tamanhos de tela e resoluções suportadas em: • Um conjunto de três tamanhos: large, normal e small; • Um conjunto de três densidades: hdpi (high), mdpi (medium) e ldpi (low). Dessa forma, a aplicação pode prover layouts e imagens para qualquer um desses três conjuntos, sem a necessidade de trabalhar com o tamanho físico real da tela do aparelho. Em tempo de execução, o Android carrega o conjunto adequado de recursos, baseado no dispositivo em questão.
  • 85. Suporte a Múltiplas Telas Organização de pastas de layout e imagens para uma aplicação que, em tese, suporta todos os tamanhos de telas e resoluções.
  • 86. Views e ViewGroups em Android Em Android, todos os componentes de interface gráfica são representados por subclasses de android.view.View que representam os componentes gráficos como TextView, Button, TextEdit, RadioButton, CheckBox, etc. Além da classe android.view.ViewGroup, que representa um container de views e também de ViewGroups. Ela é a classe base para componentes de layouts, como LinearLayout, RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout, etc.
  • 88. Layouts e Layout Params em Android Para que os componentes possam ser acomodados de acordo com o layout de seu pai, os mesmos devem manter uma relação de obediência. Sendo assim, cada filho deve configurar os seus parâmetros de layouts, por meio da classe ViewGroup.LayoutParams, que permite que estes determinem suas propriedades de posição e tamanho referente ao layout de seus pais.
  • 89. LinearLayout O layout básico, padrão quando da geração de um .XML de layout no Android, é o LinearLayout. Como o próprio nome diz, ele dispõe os componentes linearmente em uma unica direção definida pelo atributo android:layout_orientation.
  • 90. LinearLayout e LayoutParams android:layout_gravity: similar ao float do CSS, o gravity define a posição do conteúdo do LinearLayout na tela, podendo-se usar top, bottom, left, right, center, center_vertical, center_horizontal, etc. Pode-se usar combinações através do conector “|”. Por exemplo: “bottom | right”. android:layout_weight: indica quanto do espaço extra no LinearLayout será alocado para a visão associada aos LayoutParams. Ou seja, pode-se dividir a tela entre os layouts atribuindo a cada um deles um peso que define qual deles terá maior espaçamento e, casa todos tenham o mesmo peso, a tela é dividida igualmente. Aplicação de peso (weight) em um componente do LinearLayout
  • 92. FrameLayout Arranja seus filhos de acordo com uma pilha de componentes que são adicionados, sendo que o topo da pilha contém o objeto que foi adicionado por último. Pode-se usar quando se tem várias imagens e uma é sobreposta pela outra (como um slide de imagens) conforme vão sendo adicionadas. Criando uma pilha de componentes com FrameLayout Sobreposição de componentes com FrameLayout
  • 93. FrameLayout (Código) Nota: O FrameLayout é usado comumente a partir de uma de suas subclasses, tais como ImageSwitcher, ViewAnimator, ViewSwitcher, ScrollView, TabHost, etc.
  • 94. AbsoluteLayout Implementa um plano cartesiano e posiciona os componentes em coordenadas X, Y de forma absoluta. Posicionando componentes no AbsoluteLayout
  • 96. RelativeLayout Os componentes são ajustados através de relacionamentos entre si ou ao seu pai.
  • 98. TableLayout Comporta seus filhos em linhas e colunas. Cada filho é representado por um TableRow (uma espécie de LinearLayout na horizontal) que permite que uma ou ais células sejam adicionadas horizontalmente, sendo que cada célula pode conter um único View.