- Google Sites

Propaganda
Introdução ao Android
Cayo Pabllo¹
¹Grupo de Pesquisa Multidisciplinar em Informática Aplicada - MIA
¹http://www.ifbaiano.edu.br
[email protected]
Estes slides são concedidos sob uma Licença Creative Commons.
Veja detalhes e restrições adicionais no último slide.
Campus Catu 2014.1
Laboratório para Dispositivos Móveis e Sem Fio
Introdução
No mundo, há mais de:
●7 bilhões de linhas de celulares no mundo
●1 bilhões de pessoas possuem smartphones
●50 milhões de tablets
●2,7 bilhão de pessoas têm acesso a internet
No Brasil, há mais de:
●272 milhões de celulares
●40 milhões de smartphones
●10 milhões de tablets
●105 milhões de pessoas com acesso a internet
●52 milhões de acessos a internet via smartphones e/ou
tables
Diversidade de recursos dos dispositivos móveis
Cada vez mais serviços são oferecidos para os
dispositivos móveis
Diversidade de fabricantes e dispositivos móveis
2
Consumo do mercado mundial
3
Fonte: NIELSEN; 2013
Os tipos de dispositivos utilizados
4
Fonte: NIELSEN; 2013
Serviços mais utilizados
Fonte: NIELSEN; 2013 5
Aplicações mais utilizadas
6
Fonte: NIELSEN; 2013
Plataformas mais utilizadas em smartphones no mundo
Fonte: IDC; 2013
7
Plataformas mais utilizadas em tablets no mundo
8
Plataformas utilizados em smartphones no Brasil
9
Quantidade de usuários móveis
Fonte: MOBITHINKING; 2013
10
Quantidade de aplicações por plataformas
Fonte: FORBES; 2013
11
O que é o Android?
É uma plataforma de desenvolvimento para
dispositivos móveis, baseada em um sistema
operacional Linux, com diversas aplicações já
instaladas
Todas as aplicações desenvolvidas no Android
utilizam à linguagem Java
Desenvolvido pela Google e atualmente é mantida
pela Open Handset Alliance (OHA)
12
O que é o Android?
É um ambiente de software para dispositivos móveis
que inclui:
●Um Sistema Operacional baseado em um kernel Linux
●Uma rica Interface de Usuário (UI)
●Aplicativos de usuário
●Bibliotecas de código
●Framework de aplicativo
●Suporte a multimídia
●Dentre outros
Todas as aplicações desenvolvidas no Android
utilizam à linguagem Java
Desenvolvido pela Google e atualmente é mantida
pela Open Handset Alliance (OHA)
13
Ambiente de software do Android
Aplicativos
personalizados e
integrados escritos
em Java
Máquina Virtual
Dalvik Virtual
Kernel Linux
14
Fonte: ABLESON et al, 2012
Arquitetura
15
Fonte: GOOGLE, 2014
Camadas
Aplicativos de usuário: contatos, telefone, navegador, etc
Gerenciadores de aplicativo: janelas, conteúdo, atividades,
telefonia, localização, notificações, etc
Tempo de execução Android: Java via Dalvik VM
Bibliotecas: gráficas, mídia, banco de dados, comunicações,
engine do navegador, etc
Kernel Linux, incluindo drives de dispositivo, navegador, etc
Hadware com recursos específicos como GPS, câmera,
bluetooth, etc
16
Fonte: ABLESON et al, 2012
Licença
O Android possui duas licenças distintas de códigofonte aberto:
●GNU Genaral Public License (GPL) devido ao kernel
Linux
●Apache Software License (ASL) para a plataforma
Android (excluindo o kernel Linux)
17
GooglePay
Centro de distribuição de aplicações e divulgação do
Android
Custo de U$ 25
70% do lucro das vendas vai para o desenvolvedor
18
Intent
É uma declaração de necessidade, composto de
diversas informações que descrevem a ação ou serviço
desejado
São importantes por que facilitam a navegação de
modo inovador e representam o aspecto mais
importante na codificação
Traz o paradigma “clique aqui” para o núcleo do uso
(e desenvolvimento) de aplicativos Android
Seu atributo de ação é normalmente um verbo, por
exemplo, VIEW, PICK ou EDIT
Há diversas ações nativas definidas como membros
da classe Intent, mas é possível criar novas ações
19
Intent
Para visualizar uma informação
android.content.Intent.ACTION_VIEW
Seu componente de dados é expresso na forma de
um Uniform Resource Identifiers (URI) e pode ser
virtualmente qualquer informação
Tipo de informação
Dados do URI
Busca de contato
content://contacts/people
Busca de mapa
Geo:0,0?
q=23+Route+206+Stanhope+NJ
Abrir uma página Web específica
http://www.ifbaiano.edu.br
Fonte: ABLESON et al, 2012
20
Intent
Um Intent é avaliado e enviado para o handler mais
apropriado
Há 2 tipos de Intent:
●Implícito
É quando uma requisição é realizada a um aplicativo
criado pela SDK ou nativo do Android
São dependentes do IntentFilter e do ambiente Android
para despachar o Intent para o contêiner apropriado
●Explícito
Permite especificar a classe exata que necessita ser
manipulada pelo Intent
É extremamente útil quando é sabido exatamente o que
a Activity deseja manipular o Intent
21
IntentFilter
Define a relação entre o Intent e o aplicativo
Pode ser genérico ou específico em relação a quais
Intents oferece o serviço
Pode se específico aos dados do Intent, à ação ou a
ambos
Também possuem um campo categoria (category)
É
frequentemente
definido
no
arquivo
AndroidManifest.xml através da tag <intent-filter>
O AndroidManifest.xml é essencialmente um arquivo
que descreve o aplicativo
22
Relação entre Intent, IntentFilter e BroadcastReceiver
Quando um Intent é expedido, o sistema avalia os
Activitys, Services e BroadcastReceivers
Para alugar: Localize
Para alugar: Faça um
qualquer coisa no mapa
passeio pela Internet
(IntentFilter)
(intentFilter)
Aplicativo Android nº 2 (BroadcastReceiver)
startActivity (Intent);
ou
startActivity(Intent, identifier);
ou
startService(Intent);
Para alugar:
algum lugar:
Visualize,
Visualize,
edite e
edite
procure
e procure
qualquer
qualquer(IntentFilter)
contato
contato (IntentFilter)
Aplicativo Android nº 3 (BroadcastReceiver)
Para alugar: Ação personalizada sobre dados
personalizados (IntentFilter)
Aplicativo Android nº 4 (BroadcastReceiver)
Ajude-me; Localizar
uma pessoa (Intent)
Ajude-me; Localizar um
endereço no mapa (Intent)
Aplicativo Android nº 1
23
Fonte: ABLESON et al, 2012
Activity
É tanto uma unidade de interação do usuário –
tipicamente preenchido por completo a tela de um
dispositivo – quanto uma unidade de execução
Representa um componente visível de um aplicativo
dentro do Android
Os aplicativos Android costumam ter mais de uma
Activity, cada uma mostra uma UI e responde a eventos
iniciados tanto pelo sistema quanto pelo usuário
A Activity emprega uma ou mais Views para
apresentar os elementos de UI ao usuário
24
Activity
Cada Activity está amplamente separada das outras
O código que implementa determinada Activity não
chama diretamente
métodos no código que
implementa outra Activity
Aplicativo 1
Início
A1
A2
Aplicativo 2
Aplicativo 3
A3
A4
Troca de mensagens
Visualizar uma lista de mensagens
O usuário toca uma mensagem da lista
Troca de mensagens
Visualizar uma mensagem
O usuário toca em Menu->Visualizar
contato
Contatos
Visualizar um contato
O usuário toca na opção Realizar
chamada
Telefone
Liga para o número de celular do
contato
Fonte: MEDNIEKS et al, 2012
25
Service
São utilizadas em tarefas de segundo plano, que
podem ser ativas, mas não visíveis a tela
O Android evita recuperar serviços, sendo assim, uma
vez iniciado um serviço, é provável que o mesmo
continue disponível, a não ser que a memória
disponível fique extremamente restrita
26
BroadcastReceiver
É semelhante a Activity mas sem a UI própria
Todos os BroadcastReceiver registrados para um
determinado Intent recebem o Intent sempre que
transmitido
Se um aplicativo quiser receber e responder a um
evento
global
deve
ser
registado
a
um
BroadcastReceiver
A Intent é usada para ativar os BroacastReceiver
27
ContentProvider
É uma camada que fornece abstração de dados para
seus clientes e centraliza as rotinas de armazenamento
e recuperação em um único local
Pode fornecer dados para um Activity ou Service no
mesmo aplicativo ou contidos em outros aplicativos
Permite utilizar qualquer forma de mecanismo de
armazenamento de dados disponível no Android
(arquivos, banco de dados SQLite, mapa hash da
memória , dentre outros)
28
ContentProvider
Aplicativo Android nº3
Activity 3.1
Aplicativo Android nº1
Aplicativo Android nº2
Activity 1.1
Activity 2.1
ContentProvider A
Activity 1.2
SQLite
Arquivo
de dados
XML
Conexão virtual
com
armazenamento
remoto
Fonte: ABLESON et al, 2012
29
Ciclo de vida de uma Activity
Se o usuário abrir a aplicação novamente a Activity
é recriada
Volta a executar quando o usuário achar necessário
Volta a ser visível para o usuário, ocupando o
topo da pilha
Caso o SO necessite de memória o SO pode
encerrar a Activity que está rodando em segundo
plano
30
30
Fonte: GOOGLE, 2014
Ciclo de vida de uma Activity
31
Fonte: GOOGLE, 2014
AndroidManifest.xml
Contém todas as configurações necessárias para
executar a aplicação
Exemplo:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.edu.ifbaiano.catu.ads.ldmsf“>
<application android:icon="@drawable/icon”>
<activity android:name=".HelloWorld” android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
32
Mapeando aplicativos para processos
A aplicação é executada em um único processo Linux
O SO pode descarregar ou interromper uma aplicação
de tempos em tempos para acomodar a demanda de
alocação de recursos
Normalmente as seguintes regras são seguidas
(ALBESON et al, 2012):
●Atividades visíveis e em execução têm prioridade
máxima
●Atividades visíveis que não estejam sendo executadas
são importantes, porque foram pausadas recentemente e
provavelmente serão reiniciadas em breve
●Serviços em execução são os próximos em prioridade
●Os candidatos mais prováveis para exclusão são
processos vazios (carregados talvez por razões de
desempenho em caching) ou que tenham Activity 33
adormecidos
Android SDK
Pré-requisitos
●Máquina virtual Java
●Eclipse
Android SDK
●http://developer.android.com/sdk/
34
Pacotes Android essenciais
Pacotes Java inclusos:
●java.lang - Classes básicas de linguagem Java
●java.io – Recursos de entrada/saída
●java.net – Conexão de rede
●java.text – Utilitário de manipulação de texto
●java.math – Classes matemáticas e de manipulação
numérica
●javax.net – Classes de rede
●javax.security – Classes de segurança
●javax.xml – Classes XML baseadas em DOM
●org.apache.* - Classes HTTP
●org.xml – Classes XML baseadas em SAX
35
Pacotes Android essenciais
Pacotes Android:
●android.app – Modelo de acesso do aplicativo Android
●android.bluetooth – Funcionalidade bluetooth
●android.content – Acesso e publicação de dados
●android.net – Contém a classe URI utilizada para acessar
conteúdos
●android.gesture – Cria, recomenda, carrega e salva gestos
●android.graphics – Primitivas geométricas
●android.location – Serviços de localização
●android.opengl – Classses OpenGL
●android.os – Acesso no nível do SO
●android.provider – Classes relativas a ContentProvider
●android.telephony – Acesso aos recursos de telefonia
●android.text – Layout de texto
●android.util – Manipulação de texto e logs, inclusive XML
●android.view – Elementos de UI
36
●android.webkit – Funcionalidades de navegador
●android.widget – Mais elementos de UI
Ambiente de desenvolvimento
IDE de código-fonte aberto do Eclipse
 Codificação
 Depuração
Ferramentas de linha de comando
 Ferramentas de transferência de
arquivos
 Testador de simulação GSM
Emulador Android
Android Development Tools (plug-in)
SDK
Configuração de perfil do emulador
Inicialização do emulador
Visualização de processos e
sistemas de arquivos
 Visualização de log




 Diversas skins
 Opção de conectividade de rede
 Integrado ao Eclipse via o plug-in
Android Development Tools (ADT)
Dispositivos Android
 Hardware do aparelho
Documentação do SDK
37
Estrutura do Projeto
/ → Raiz do projeto
src → Código fonte
gen → Código Java gerado automaticamente
res → Recursos da aplicação
●drawable-__ dpi → São os artefatos visuais, como as
imagens de acordo com a resolução
●layout → Arquivos xml de UI
●values → Contém arquivos xml que possuem strings e
valores numéricos utilizados no código
●raw → Contém arquivos de dados que podem ser
carregados como fluxos
AndroidManifest.xml → Configuração do projeto
38
Classe R
É gerada automaticamente sendo composta de
classes estáticas internas que armazenam referências
para todos os recursos da aplicação na forma de um
valor int
O valor é um ponteiro constante para um arquivo
objeto, por meio de uma tabela de recursos contida em
um arquivo especial que é criado pela ferramenta aapt
e usado pelo arquivo R.java
Nunca deve ser alterada manualmente
39
Minha primeira aplicação Android
import android.app.Activity;
import android.os.Bundle;
public class AppWord extends Activity {
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
40
Referências
ABLESON, W. F.; SEN, R.; KING, C.; ORTIZ, C. E. Android
em ação. Campus/Elsevier, 3ª edição, 2012. 622 p.
ANATEL. Disponível em: <http://www.anatel.gov.br>
GARTNER. Gartner Says Smartphone Sales Accounted for
55 Percent of Overall Mobile Phone Sales in Third Quarter
of
2013.
Disponível
em:
<
http://www.gartner.com/newsroom/id/2623415>
GARTNER. Gartner Says Worldwide Tablet Sales Grew 68
Percent in 2013, With Android Capturing 62 Percent of the
Market.
Disponível
em:
<
http://www.gartner.com/newsroom/id/2674215>.
FOLHA DE SÂO PAULO. Vendas de tablets vão superar as
de
notebooks
no
Brasil.
Disponível
em:
<
http://veja.abril.com.br/noticia/vida-digital/vendas-de-tablets-v
ao-superar-as-de-notebooks-no-brasil
>
41
Referências
FORBES. How Much Do Average Apps Make? Disponível
em:
<
http://www.forbes.com/sites/tristanlouis/2013/08/10/how-muchdo-average-apps-make/
>
GOOGLE. Android Developers. Disponível em: <
http://developer.android.com/index.html>
IBOPE. 52 milhões de pessoas têm acesso à web pelo
celular, aponta IBOPE Media. Disponível em: <
http://www.ibope.com.br/pt-br/noticias/paginas/52-milhoes-depessoas-tem-acesso-a-web-pelo-celular-aponta-ibope-media.aspx
>
IBOPE. Número de pessoas com acesso à internet no
Brasil chega a 105 milhões. Disponível em <
http://www.ibope.com/pt-br/noticias/paginas/numero-de-pessoas
-com-acesso-a-internet-no-brasil-chega-a-105-milhoes.aspx
>
42
Referências
IDC. Android and iOS Continue to Dominate the Worldwide
Smartphone Market with Android Shipments Just Shy of
800 Million in 2013, According to IDC. Disponível em: <
http://www.idc.com/getdoc.jsp?containerId=prUS24676414>
IDC. Worldwide Tablet Market Surges Ahead on Strong
First Quarter Sales, Says IDC. Disponível em: <
http://www.idc.com/getdoc.jsp?containerId=prUS24093213>
ITU.
ictFacts
and
Figures.
Disponível
em:
<
http://www.itu.int/en/ITU-D/Statistics/Documents/facts/ICTFacts
Figures2013.pdf
>
LACHETA, R. R. Google Android. Novatec, 2ª edição, 2010.
608 p.
MEDNIEKS, Z.; DORNIN, L.; MEIKE, G. B.; NAKAMURA, M.
Programando o Android. O'Reilly/Novatec, 2ª edição, 2013.
676 p.
43
Referências
MOBITHINKING. Global mobile statistics 2013 Section E:
Mobile apps, app stores, pricing and failure rates. Disponível
em:
<
http://mobithinking.com/mobile-marketing-tools/latest-mobile-stat
s/e
>
NIElLSEN. The Mobile Consumer – a global snaphsot.
Disponível
em:
<
http://www.nielsen.com/content/dam/corporate/us/en/reportsdownloads/2013%20Reports/Mobile-Consumer-Report-2013.pdf
>
NETMARKETSHARE. IOS, Android Market Share on
Mobile/Tablet.
Disponível
em:
<
http://www.netmarketshare.com/mobile-phones.aspx?qprid=9
&qpcustomb=1&qpcustom=iOS,Android
>
NUDELMAN, G. Padrões de projeto para o Android.
Wiley/Novatec, 1ª edição, 2013.
44
Licença
A presente obra encontra-se licenciada sob a licença Creative Commons
Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil.
Para
visualizar
uma
cópia
da
licença,
visite
http://creativecommons.org/licenses/by-nc-sa/3.0/br/ ou mande uma carta para:
Creative Commons, 171 Second Street, Suite 300, San Francisco, California,
94105, USA.
45
Download