Aula 01
Configurando ambiente
Introdução
 Android é um sistema operacional voltado para
dispositivos móveis

 Desenvolvido pela OHA - Open Handset Alliance
(aliança entre várias empresas:
Google, HTC, LG, Samsung, Motorola...)

 Sistema Operacional baseado no kernel 2.6 do Linux e
kernel 3.x(Android versão 4.0 ou superior)
Introdução
 Seu código é open source sob licença Apache,
permitindo que seja modificado livremente e
redistribuídos

 O ambiente de desenvolvimento oficial é o Eclipse +
plugin ADT(Android Development Tools), usando a
linguagem Java

 Laptops, netbooks, smartbooks e TVs inteligentes já
estçao utilizando o sistema operacional Android
Ambientação
 Download do Android ADT Bundle, encontrado em
http://developer.android.com/sdk/index.html

 No ADT Bundle já se encontram todos os softwares
que antes eram necessários ser baixados
separadamente: Eclipse + ADT plugin, Android SDK
Tools, Android Platform-tools, etc.
Criando uma aplicação
 Com o Eclipse aberto(e já ambientado), basta clicar
em File -> New -> Android Application Project

 Será necessário preencher alguns campos:
 Application Name – nome da aplicação
 Project Name – nome do projeto no Eclipse
 Package Name – parâmetro bastante importante pois
serve como identificador único(dentre todos os outros
publicados no Google Play) da aplicação
 Acitivity Name – nome da Activity
 Layout Name – nome do layout da tela inicial
Dalvik Debug Monitor Server
(DDMS)
 Ferramenta que possui diversas funções que
interagem com o emulador ou o próprio celular

 É possível utilizá-la para visualizar logs da aplicação,
simular ligações telefônicas, simular envio de SMS,
simular uma posição GPS, etc
LogCat
 Local onde são exibidas as mensagens de log da
aplicação

 Se o método System.out.println() for chamado, sua
saída não será no console, como de costume, e sim no
LogCat
LogCat
 Tipos de logs:






Informação – Log.i(“”,””)
Erro – Log.e(“”, “”)
Verbose – Log.v(“”,””)
Alerta – Log.w(“”,””)
Debug – Log.d(“”,””)

 Cada tipo tem uma cor, melhorando a visualização no
LogCat
Arquivos gerados
 activity_main.xml
 Localizado na pasta /res/layout
 Define a interface gráfica que será apresentada na tela
da aplicação
 Arquivo criado com basicamente duas tags:
<RelativeLayout> e <TextView>
 A tag <RelativaLayout> indica que o layout raiz da
aplicação será do tipo relativo
 A tag <TextView>, localizada dentro da tag
<RelativeLayout>, indica que a telá terá uma View do tipo
TextView localizada no centro
Arquivos gerados
 strings.xml
 Localizado na pasta /res/values
 Permite a organização de todas as mensagens da aplicação
 Além de ser uma boa prática de programação, facilita a
internacionalização do aplicativo

 R.java
 Classe gerada automaticamente
 Contém constantes de todos os recursos da aplicação(recursos
estão localizados na pasta /res)
 Toda vez que um arquivo da pasta /res é retirado, adicionado
ou modificado, a classe R.java é regerada
Arquivos gerados
 MainActivity.java
 Localizado no pacote definido no momento da criação do
projeto
 Classe que herda de Activity, representa uma tela na
aplicação
 Responsável por tratar os eventos de tela, como um
clique em um botão, por exemplo
 O primeiro método disparado dessa classe é o
onCreate(Bundle). Nesse método é definido que o layout
que será utilizado é o acitivity_main.xml
Arquivos gerados
 AndroidManifest.xml
 Funciona como o coração da aplicação
 Contém todas as configurações de uma aplicação:







Nome da aplicação
Pacote da aplicação
Declaração de Activities
Declaração de Services
Declaração de BroadcastReceivers
Quais permissões a aplicação necessitará para ser
executada
 Ícone da aplicação
Aula 02
Activites e views básicas
O que é uma Activity?
 Representa uma tela do aplicativo

 Trata os eventos ocorridos – Ex: onClick
 setContentView(View): define a interface que será
usada

 onCreate (Bundle)
 AndroidManifest .xml
 Layout em xml
Exemplo activity
AndroidManifest.xml
Ciclo de vida
Ciclo de vida
 onCreate(Bundle)

 onStart()
 onResume()
 onPause()
 onStop()
 onDestroy()

 onRestart()
View
 Superclasse das classes de interface (UI) que
interagem com o usuário

 Propriedades:







Layout – Tamanho do controle. Ex: (match, fill..)
Padding – Distância para a margem
Gravity – Define a posição (ex: center, left, top..)
Text
Background
Entre outras…
TextView

 Representa um texto na tela
 Similar ao JLabel do Swing
 Alguns tipos comuns: normal, com
hint, autolink, password, etc..
EditText
 Utilizado para entrada de
texto

 Similar ao JTextField no
Swing

 Tipos de entrada: texto
normal, apenas números,
senha, etc
Button

 Cria um botão na tela

 Normalmente associado a um evento de
onClick, definido no XML ou criado listener na activity
Button - XML
 1o: Define propriedade no nó do botão:

 2o: Cria método na Activity
Button - onClickListener
 1o: Faça a activity implementar onClickListener:

 2o: Implementar o método onClick(View v)

 Solução alternativa: classe anônima!
Outras Views
 CheckBox

 ToggleButton

 Radio Button
Outras Views
 Spinner

 ImageView

 SeekBar
Prática
 Criar uma calculadora de IMC (peso/altura^2)
(kg/m^2), que receba o peso e a altura do usuário
(EditText ou SeekBar), calcule e exiba o resultado
(TextView, Image, etc) conforme a tabela abaixo:
Aula 03
Layouts
Layout
 Classes que herdam de ViewGroup

 Usados para organizar componentes graficos na tela

 Podem ser desenhados de duas formas:
 Via XML, pelo plugin gráfico do Eclipse
 Via programação, em tempo de execução
Linear Layout
 Exibe seus componentes em uma única direção:
horizontal ou vertical
FrameLayout
 Organiza seus componentes em forma de pilha, sendo
o último componente adicionado o do topo da pilha

 Muito utilizado quando se quer ter uma imagem de
fundo
FrameLayout
RelativeLayout
 Ajusta seus componentes atraves de relacionamentos
entre os próprios componentes ou ao seu pai

 Desvantagem: caso seja alterado a posição de um
componente, pode acontecer de os outros
componentes da tela perderem suas posições
originais, pois um componente sempre estará
posicionado em relação a outro.
RelativeLayout
ScrollView
 Classe que herda de Frame Layout

 É bastante utilizada quando a tela possui muitos
elementos, necessitando de um scroll.
Exemplo - Instagram
Exemplo - Facebook
Exemplo - Foursquare
Prática 02
 Criar três activites, navegando entre elas usando um menu (criado
com linear, table ou fragments), tal que o conteúdo das activites
contenha:

 activity1) três editText e três botões, dispostos em linhas
 activity2) 4 imagens dispostas nos cantos + um botão no na parte
inferior ocupando toda a linha

 activity3) Uma imagem grande, maior que a tela, com a opção de
visualizar toda

 observação: certifique-se que não há grandes diferenças entre
telas pequenas e telas grandes (de 2.7'' a 10.1''), principalmente
na activity2
Prática 02 – Activity 1
Prática 02 – Activity 2
Prática 02 – Activity 3
Aula 04
Views avançadas e notification
Toast
 Exibe uma mensagem temporária ao usuário

 Não interage com o usuário
Notifications
 Classe que representa uma notificação ao usuário

 Se localiza na barra de status do celular
 Bastante utilizada para notificar o usuário que algo
ocorreu de modo que não atrapalhe o que ele está
fazendo no momento
Notifications
ListActiviy
 Activity especial para listar elementos, com uma
listView interna

 Scrollable
 Necessário preencher um ArrayAdapter para mostrar
os dados

 onListItemClick(ListView l, View v, int position, long id)
Dialog
 Pequena janela que exibe um alerta para o usuário e
pode aguardar uma tomada de decisão dele
LayoutInflate
 Transforma um layout XML em uma View

 Usado quando se quer modificar um layout em tempo
de execução
Aula 05
Intents e recursos do dispositivo
Intent
 “Intenção” de fazer algo
 Classe que representa uma mensagem enviada ao
sistema operacional

 Pode ser utilizada para:







Abrir uma Activity da aplicação atual
Abrir uma Activity de outra aplicação
Abrir o Google maps
Abrir o browser
Abrir o aplicativo de câmera fotográfica
etc
Abrindo o browser
Abrindo a agenda de contatos
Fazendo uma ligação
Mostrando um endereço no
Google Maps
Pratica 04
 Criar uma Activity que capture um Intent enviado por
uma nova Activity, de outra aplicação.


Aula 06
Banco de dados: SQLite
SharedPreferences
SQLite
 Biblioteca escrita em linguagem C que implementa um
banco de dados SQL

 Rápido, leve e poderoso
 Multiplataforma

 Suporta tipo de dados integer, real, text e blob
 Uma das formas de persistir dados no Android
SQLite
 Não necessita de instalação, configuração ou
administração

 Escreve os dados no próprio disco do dispositivo(a
biblioteca não se conecta a um servidor de banco de
dados)

 Não permite que os dados de uma aplicação sejam
acessados por outra aplicação
SharedPreferences
 Permite salvar dados do tipo

primitivo(boolean’s, float’s, int’s, long’s, e string’s) na forma
de chave-valor

 Os dados ficam salvos mesmo quando a aplicação é
fechada

 SharedPreferences geralmente não é utilizado para salvar
grandes cargas de dados, mas apenas para salvar
configurações de usuário ou configurações da própria
aplicação

 Um exemplo bastante utilizado é salvar o login e senha de
um usuário. Isto faz que o usuário não necessite digitar seu
login e senha sempre
Aula 07
Utilizando Services
Aula 08
Dúvidas e projetos

Computação Móvel 2012.2 - Android

  • 1.
  • 2.
    Introdução  Android éum sistema operacional voltado para dispositivos móveis  Desenvolvido pela OHA - Open Handset Alliance (aliança entre várias empresas: Google, HTC, LG, Samsung, Motorola...)  Sistema Operacional baseado no kernel 2.6 do Linux e kernel 3.x(Android versão 4.0 ou superior)
  • 3.
    Introdução  Seu códigoé open source sob licença Apache, permitindo que seja modificado livremente e redistribuídos  O ambiente de desenvolvimento oficial é o Eclipse + plugin ADT(Android Development Tools), usando a linguagem Java  Laptops, netbooks, smartbooks e TVs inteligentes já estçao utilizando o sistema operacional Android
  • 4.
    Ambientação  Download doAndroid ADT Bundle, encontrado em http://developer.android.com/sdk/index.html  No ADT Bundle já se encontram todos os softwares que antes eram necessários ser baixados separadamente: Eclipse + ADT plugin, Android SDK Tools, Android Platform-tools, etc.
  • 5.
    Criando uma aplicação Com o Eclipse aberto(e já ambientado), basta clicar em File -> New -> Android Application Project  Será necessário preencher alguns campos:  Application Name – nome da aplicação  Project Name – nome do projeto no Eclipse  Package Name – parâmetro bastante importante pois serve como identificador único(dentre todos os outros publicados no Google Play) da aplicação  Acitivity Name – nome da Activity  Layout Name – nome do layout da tela inicial
  • 6.
    Dalvik Debug MonitorServer (DDMS)  Ferramenta que possui diversas funções que interagem com o emulador ou o próprio celular  É possível utilizá-la para visualizar logs da aplicação, simular ligações telefônicas, simular envio de SMS, simular uma posição GPS, etc
  • 7.
    LogCat  Local ondesão exibidas as mensagens de log da aplicação  Se o método System.out.println() for chamado, sua saída não será no console, como de costume, e sim no LogCat
  • 8.
    LogCat  Tipos delogs:      Informação – Log.i(“”,””) Erro – Log.e(“”, “”) Verbose – Log.v(“”,””) Alerta – Log.w(“”,””) Debug – Log.d(“”,””)  Cada tipo tem uma cor, melhorando a visualização no LogCat
  • 9.
    Arquivos gerados  activity_main.xml Localizado na pasta /res/layout  Define a interface gráfica que será apresentada na tela da aplicação  Arquivo criado com basicamente duas tags: <RelativeLayout> e <TextView>  A tag <RelativaLayout> indica que o layout raiz da aplicação será do tipo relativo  A tag <TextView>, localizada dentro da tag <RelativeLayout>, indica que a telá terá uma View do tipo TextView localizada no centro
  • 10.
    Arquivos gerados  strings.xml Localizado na pasta /res/values  Permite a organização de todas as mensagens da aplicação  Além de ser uma boa prática de programação, facilita a internacionalização do aplicativo  R.java  Classe gerada automaticamente  Contém constantes de todos os recursos da aplicação(recursos estão localizados na pasta /res)  Toda vez que um arquivo da pasta /res é retirado, adicionado ou modificado, a classe R.java é regerada
  • 11.
    Arquivos gerados  MainActivity.java Localizado no pacote definido no momento da criação do projeto  Classe que herda de Activity, representa uma tela na aplicação  Responsável por tratar os eventos de tela, como um clique em um botão, por exemplo  O primeiro método disparado dessa classe é o onCreate(Bundle). Nesse método é definido que o layout que será utilizado é o acitivity_main.xml
  • 12.
    Arquivos gerados  AndroidManifest.xml Funciona como o coração da aplicação  Contém todas as configurações de uma aplicação:       Nome da aplicação Pacote da aplicação Declaração de Activities Declaração de Services Declaração de BroadcastReceivers Quais permissões a aplicação necessitará para ser executada  Ícone da aplicação
  • 13.
    Aula 02 Activites eviews básicas
  • 14.
    O que éuma Activity?  Representa uma tela do aplicativo  Trata os eventos ocorridos – Ex: onClick  setContentView(View): define a interface que será usada  onCreate (Bundle)  AndroidManifest .xml  Layout em xml
  • 15.
  • 16.
  • 17.
    Ciclo de vida onCreate(Bundle)  onStart()  onResume()  onPause()  onStop()  onDestroy()  onRestart()
  • 18.
    View  Superclasse dasclasses de interface (UI) que interagem com o usuário  Propriedades:       Layout – Tamanho do controle. Ex: (match, fill..) Padding – Distância para a margem Gravity – Define a posição (ex: center, left, top..) Text Background Entre outras…
  • 19.
    TextView  Representa umtexto na tela  Similar ao JLabel do Swing  Alguns tipos comuns: normal, com hint, autolink, password, etc..
  • 20.
    EditText  Utilizado paraentrada de texto  Similar ao JTextField no Swing  Tipos de entrada: texto normal, apenas números, senha, etc
  • 21.
    Button  Cria umbotão na tela  Normalmente associado a um evento de onClick, definido no XML ou criado listener na activity
  • 22.
    Button - XML 1o: Define propriedade no nó do botão:  2o: Cria método na Activity
  • 23.
    Button - onClickListener 1o: Faça a activity implementar onClickListener:  2o: Implementar o método onClick(View v)  Solução alternativa: classe anônima!
  • 24.
    Outras Views  CheckBox ToggleButton  Radio Button
  • 25.
    Outras Views  Spinner ImageView  SeekBar
  • 26.
    Prática  Criar umacalculadora de IMC (peso/altura^2) (kg/m^2), que receba o peso e a altura do usuário (EditText ou SeekBar), calcule e exiba o resultado (TextView, Image, etc) conforme a tabela abaixo:
  • 27.
  • 28.
    Layout  Classes queherdam de ViewGroup  Usados para organizar componentes graficos na tela  Podem ser desenhados de duas formas:  Via XML, pelo plugin gráfico do Eclipse  Via programação, em tempo de execução
  • 29.
    Linear Layout  Exibeseus componentes em uma única direção: horizontal ou vertical
  • 30.
    FrameLayout  Organiza seuscomponentes em forma de pilha, sendo o último componente adicionado o do topo da pilha  Muito utilizado quando se quer ter uma imagem de fundo
  • 31.
  • 32.
    RelativeLayout  Ajusta seuscomponentes atraves de relacionamentos entre os próprios componentes ou ao seu pai  Desvantagem: caso seja alterado a posição de um componente, pode acontecer de os outros componentes da tela perderem suas posições originais, pois um componente sempre estará posicionado em relação a outro.
  • 33.
  • 34.
    ScrollView  Classe queherda de Frame Layout  É bastante utilizada quando a tela possui muitos elementos, necessitando de um scroll.
  • 35.
  • 36.
  • 37.
  • 38.
    Prática 02  Criartrês activites, navegando entre elas usando um menu (criado com linear, table ou fragments), tal que o conteúdo das activites contenha:  activity1) três editText e três botões, dispostos em linhas  activity2) 4 imagens dispostas nos cantos + um botão no na parte inferior ocupando toda a linha  activity3) Uma imagem grande, maior que a tela, com a opção de visualizar toda  observação: certifique-se que não há grandes diferenças entre telas pequenas e telas grandes (de 2.7'' a 10.1''), principalmente na activity2
  • 39.
    Prática 02 –Activity 1
  • 40.
    Prática 02 –Activity 2
  • 41.
    Prática 02 –Activity 3
  • 42.
  • 43.
    Toast  Exibe umamensagem temporária ao usuário  Não interage com o usuário
  • 44.
    Notifications  Classe querepresenta uma notificação ao usuário  Se localiza na barra de status do celular  Bastante utilizada para notificar o usuário que algo ocorreu de modo que não atrapalhe o que ele está fazendo no momento
  • 45.
  • 46.
    ListActiviy  Activity especialpara listar elementos, com uma listView interna  Scrollable  Necessário preencher um ArrayAdapter para mostrar os dados  onListItemClick(ListView l, View v, int position, long id)
  • 47.
    Dialog  Pequena janelaque exibe um alerta para o usuário e pode aguardar uma tomada de decisão dele
  • 48.
    LayoutInflate  Transforma umlayout XML em uma View  Usado quando se quer modificar um layout em tempo de execução
  • 49.
    Aula 05 Intents erecursos do dispositivo
  • 50.
    Intent  “Intenção” defazer algo  Classe que representa uma mensagem enviada ao sistema operacional  Pode ser utilizada para:       Abrir uma Activity da aplicação atual Abrir uma Activity de outra aplicação Abrir o Google maps Abrir o browser Abrir o aplicativo de câmera fotográfica etc
  • 51.
  • 52.
    Abrindo a agendade contatos
  • 53.
  • 54.
    Mostrando um endereçono Google Maps
  • 55.
    Pratica 04  Criaruma Activity que capture um Intent enviado por uma nova Activity, de outra aplicação. 
  • 56.
    Aula 06 Banco dedados: SQLite SharedPreferences
  • 57.
    SQLite  Biblioteca escritaem linguagem C que implementa um banco de dados SQL  Rápido, leve e poderoso  Multiplataforma  Suporta tipo de dados integer, real, text e blob  Uma das formas de persistir dados no Android
  • 58.
    SQLite  Não necessitade instalação, configuração ou administração  Escreve os dados no próprio disco do dispositivo(a biblioteca não se conecta a um servidor de banco de dados)  Não permite que os dados de uma aplicação sejam acessados por outra aplicação
  • 59.
    SharedPreferences  Permite salvardados do tipo primitivo(boolean’s, float’s, int’s, long’s, e string’s) na forma de chave-valor  Os dados ficam salvos mesmo quando a aplicação é fechada  SharedPreferences geralmente não é utilizado para salvar grandes cargas de dados, mas apenas para salvar configurações de usuário ou configurações da própria aplicação  Um exemplo bastante utilizado é salvar o login e senha de um usuário. Isto faz que o usuário não necessite digitar seu login e senha sempre
  • 60.
  • 61.

Notas do Editor

  • #15 Bundle: a mapping from string values to various Parcelable type
  • #18 onCreate(Bundle):Como já visto anteriormente, é o primeiro método a ser executado quando uma activity é lançada. Geralemente é responsável por carregar os layouts XML e outras operações de inicialização. É executado somente uma vez durante a “vida útil” de uma Activity.onStart(): É chamado quando a Activity está ficando visível para o usuário. Dependendo do estado da aplicação, esse método pode ser chamado após o onCreate() ou depois do onRestart(), que é quando a aplicação que estava em background volta a ter focoonResume(): É chamado quando a Activity está executando como Activity principal, ou seja, quando ela está no topo da pilha.onPause(): Método chamado quando a Activity do topo da pilha é interrompida por algum motivo(uma ligação recebida, por exemplo). É nesse método que o estado da aplicação é salvo para quando a voltar a executar, tudo possa ser recuperado.onStop(): Chamado quando uma Activity perde completamente o foco(uma outra Activity é iniciada, por exemplo). Em seguida é chamado o método onDestroy()(quando a Acitivity for encerrada) ou o método onRestart(quando a Activity for reiniciada)onDestroy(): É chamado quando uma Activity é finalizada. Pode ser chamado pelo método finish() da aplicação, ou quando o só decide liberar recursos. É executado somente uma vez durante a “vida útil” de uma Activity.onRestart(): Chamada imediatamente antes do onStart(), quando uma Activity volta a ter foco depois de estar em background.