Você está na página 1de 25

O Guia Definitivo de

ANDROID
para
Programadores

JELSAF RODRIGUES
Introduo
Ol desenvolvedor,

Quando decidi que queria tentar desenvolver para Android, a pri-


meira coisa que fiz foi ir para o Youtube. Eu amo Youtube quando se
trata de aprendizado. Vrios vdeos, vrias dicas e muito cdigo.

Mas depois de alguns tutoriais, eu ainda no tinha entendido como


Android funcionava. Um ms estudando e nada. Estava me sentindo
um idiota. E pior ainda, estava tendo aulas de Android na universi-
dade. Mas alguma coisa estava faltando, s no sabia exatamente o
que.

Depois de um ms procurando por materiais de estudo, encon-


trei um curso gratuito de Material Design para Android no Udemy
(plataforma de ensino online). Um dos melhores cursos de desen-
volvimento e interao com usurio que j tive.

Trs meses depois, eu estava conseguindo comear aplicativos, mas


por algum motivo eu no conseguia deixar de jeito que eu queria e
acabava abandonando e comeava um novo.

Estou desenvolvendo Android h dois anos e estou em aprendizado


constante. Se voc um desenvolvedor ou um interessado em desen-
volver para Android, ento esse e-book o meu presente para voc.

Esse e-book o que eu precisava quando estava comeando a apren-


der. Nele h as direes do que voc precisa aprender para ser um
desenvolvedor completo em Android.

Um aviso: no irei me aprofundar nos tpicos apresentados aqui,


pois eles sero como placas de direo, apontando para o caminho
que gradualmente ir te levar ao maior entendimento sobre a lingua-
gem.

Bem-vindo ao Guia Definitivo de Android para Programadores!


Espero que voc aproveite cada uma das pginas.
Android Studio
Android Studio a IDE (Ambiente de Desenvolvimento Integrado)
oficial para desenvolvimento de aplicativos Android e baseado no
Intelli IDEA, que focado na produtividade do desenvolvedor.

A ferramenta contm recursos como:

- Sistema de compilao flexvel baseado no Gradle


- Emulador rpido
- Ambiente unificado para todos os dispositivos Android
- Instant Run para enviar alteraes a aplicativos em execuo
- Modelos de cdigo e integrao com o GitHub
- Ferramentas e estruturas de teste
- Ferramentas de verificao de cdigo para desempenho, usabil-
idade e compatibilidade
- Compatibilidade com C++ e NDK
- Compatibilidade com Google Cloud Platform

O Android Studio cria projetos com um ou mais mdulos com arqui-


vos de cdigo fonte e recursos. Cada mdulo inclu:

- manifests: contm o arquivo AndroidManifest.xml
- java: contm os arquivos de cdigo-fonte do Java, incluindo cdi-
go de teste do JUnit.
- res: contm todos os recursos que no so cdigo, como layout
XML, strings de UI e imagens de Bitmap.

Para mais informaes, visite o site:

https://developer.android.com/studio/intro/index.html
Java
Java , basicamente, uma coleo de palavras e simbolos que expressa
o que o nosso cdigo ir fazer, em outras palavras, uma abstrao da
comunio entre computador e desenvolvedor.

Java, assim como outras linguagens, trabalha com diversos tipos de


dados como:

- int : valores inteiros, sem decimal.
- float: valores decimais.
- boolean: valores decimais ou boleanos, que so representados
por true e false.
- char: representa um nico caracter.
- String: vrios tipos de caracteres.

Java tambm trabalha com variveis, que armazenam dados. Veja os


exemplos abaixo:

- int versao = 1;
- String titulo = Android para Programadores;

A linguagem tambm usa mtodos, que contm uma sesso de cdi-


go que podem ser chamados de diferentes locais e reusados. Veja o
exemplo abaixo:

public String getNome(){


String nome = Joo da Silva;
return nome;
}

Para mais informaes, recomendo os sites:

http://blog.teamtreehouse.com/java-basics-for-android-develop-
ment-part-1
https://www.tutorialspoint.com/android/
Orientao a Objetos
Java, assim como C# e C++, uma liguagem com programao ori-
entada a objetos. O que significa que a representao de elementos
feita atravs de um objeto ou classe.

Existem quatro pontos inportantes quando falamos de orientao a


objetos: abstrao, encapsulamento, herana e polimorfismo.

Abstrao a representao de um objeto real, incluindo identidade,


propriedades e mtodos.
public class Pessoa{
private String nome;
public String andar(){
return Mais um passo...;
}
}

Encapsulamento so feitos atravs de getters e setters, encapsulando


propriedade privadas e adicionando segurana aplicao.
public class Circulo{
private String raio;
public void setRaio(double raio){
this.raio = raio;
}
public double getArea(){
raio*raio*Math.PI;
}
}
O Guia Definitivo de Android para Programadores

Herana quando um objeto herda caractersticas de outro objeto.


public class Pessoa{
private String nome;
}

public class Funcionario extends Pessoa{


private String cargo;

Polimorfismo a alterao do funcionamento interno de um mtodo


herdado de um objeto pai. No exemplo abaixo, cada funcionrio tem
um salario, mas diretores e programadores tem diferentes bnus.
public class Funcionario{
private double salario;
public double getSalario(){
return salario;
}
}

public class Diretor extends Funcionario{


public double getSalario(){
return salario * 1.5;
}
}

public class Programador extends Funcionario{


public double getSalario(){
return salario * 1.2;
}
}

Para mais informaes, visite os sites:

http://www.devmedia.com.br/os-4-pilares-da-programacao-orienta-
da-a-objetos/9264
Android Activity, Intent e Fragment
Activity

Activity em Android a tela de interao com o usurio, possuindo


um layout xml e um arquivo de cdigo. Cada activity tem um ciclo
de vida (lifecycle) que muda dependendo do estado da atividade. O
ciclo de vida representado pelos seguintes mtodos:
- onStart: quando a activity iniciada.
- onRestart: quando a activity reiniciada depois de parada.
- onResume: quando continuada depois de pausada.
- onPause: quando a activity pausada pelo sistema ou usurio.
- onStop: quando a activity parada.
- onDestroy: quando a activity finalizada.

Intent

Intent uma mensagem assincrona que permite componentes


requisitar funcionalidades de outros componentes Android. O Intent
tambm permite requisies para componentes de uma aplicao para
outra. Alm disso, Intents permitem a transmisso de dados atravs
da requisies. O exemplo abaixo mostra a chamada de uma Activity
para outra passando alguns dados:
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra(Value1, This value one for ActivityTwo );
i.putExtra(Value2, This value two ActivityTwo);
startActivityForResult(i, REQUEST_CODE);

Fragment

Fragment o pedao de uma activity, permitindo um design mais


modular, ou seja, uma activity pode possuir multiplos fragments.
Fragments tambm possuem um ciclo de vida, um layout xml e ar-
quivo de cdigo prprio.

Para mais informaes visite o site:


https://developer.android.com/reference/android/app/Activity.html
SQLite
SQLite o sistema de gerenciamente de banco de dados utilizado pelo
Android para armazenamento de informaes. Ele grava os dados
num arquivo de texto junto ao aplicativo e recupera as informaes
quando necessrio.

O banco de dados dividido em tabelas, que podem receber os se-


guintes tipos de dados:

- NULL - Quando o valor nulo.
- INTEGER - Quando o valor um inteiro.
- REAL - Quando o valor um decimal.
- TEXT - Quando o valor um conjunto de caracteres (texto).
- BLOB - Quando o valor boleano, ou seja, true ou false.

O gerenciamento do banco de dados feito atravs de queries, coman-


dos em SQLite que dizem o que deve ser feito no banco.

Para criao e deleo de tabelas usamos as seguintes queries:

- CREATE TABLE - Cria a tabela.


- DROP TABLE - Deleta a tabela.

Para gerenciamento de dados nas tabelas, as seguintes queries podem


ser utilizadas:

- INSERT - Insere dados na tabela.


- UPDATE - Atualiza dados na tabela.
- DELETE - Deleta dados da tabela.
- SELECT - Seleciona dados da tabela.

Para mais informaes, recomendo o site:


http://www.vogella.com/tutorials/AndroidSQLite/article.html
Content Provider
Caso seja necessrio o compartilhamento de dados do bancos entre
a sua aplicao e outras, o Android fornece o content provider para
compartilhar dados.

Para mais informaes, recomendo o site:


http://www.vogella.com/tutorials/AndroidSQLite/article.html
Layouts
Linear Layout

O linear layout alinha os componentes dentro dele em uma s di-


reo, vertical ou horizontal.

Para mais informaes, recomendo o site:


https://developer.android.com/guide/topics/ui/layout/linear.html

Relative Layout

O relative layout alinha os componentes dentro dele de acordo com a


posio de outro componente ou do relative layout.

Para mais informaes, recomendo o site:


https://developer.android.com/guide/topics/ui/layout/relative.html

Absolute Layout

O absolute layout permite que as coodenadas de cada elemento seja


especificada dentro dele.

Para mais informaes, recomendo o site:


https://www.tutorialspoint.com/android/android_absolute_layout.
htm

Frame Layout

O frame layout separa uma rea na tela para mostra somente um


item.

Para mais informaes, recomendo o site:


https://www.tutorialspoint.com/android/android_frame_layout.htm
O Guia Definitivo de Android para Programadores

Table Layout

O table layout disponibiliza os componentes em linhas e colunas


como uma tabela.

Para mais informaes, recomendo o site:


https://www.tutorialspoint.com/android/android_table_layout.htm

Grid View Layout

O grid view layout alinha os componentes dentro dele em duas di-


menses.

Para mais informaes, recomendo o site:


https://developer.android.com/guide/topics/ui/layout/gridview.html

Web View Layout

O web view layout preparado para mostrar pginas web dentro da


aplicao.

Para mais informaes, recomendo o site:


https://www.tutorialspoint.com/android/android_webview_layout.
htm
Componentes
Componentes so os diferentes tipos de elementos e views de inter-
ao com o usurios como botes e imagens. Veremos alguns exem-
plos abaixo:

Boto

Componente que uma vez clicado ou pressionado realiza uma ao.

Edit Text

Componente para input de caracteres.

Spinner

Componente que contm uma lista para seleo.

Image View

Componente para exibio de imagem.

Date and Time Picker

Componente para seleo de data e/ou hora.

Check Box

Componente para seleo de multiplos itens.

Radio Button

Componente para seleo de item nico.

Para mais informaes, recomendo o site:


Android Componentes
List Views
List View

O list view um componente que mostra uma lista de items vertical-


mente com uma barra de rolagem.

Para mais informaes, recomendo o site:


ListView

Grid View

O grid view um componente que mostra uma lista de items em duas


dimenses com uma barra de rolagem.

Para mais informaes, recomendo o site:


GridView

View Customizada

Para customizar a disposio do elementos dentro dos itens da list


view ou do grid view, um Adapter ser necessrio, possibilitando que
os componentes tenha at mesmo imagens.

Para mais informaes, recomendo o site:


Tutorial ListView with Image

Recycler View & Card View

O recycler view um componente que mostra uma lista de items verti-


calmente ou horizontalmente com uma barra de rolagem. O card view
um componente parecido com um carto que pode ser utilizado nos
items de um recycler view.

Para mais informaes, recomendo o site:


RecyclerView and CardView
Multimedia
Multimedia API

Dentre vrias APIs, o Android possui os de multimedia: audio, video,


cmera e fotos.

Para mais informaes, recomendo o site:


https://developer.android.com/about/versions/android-5.0.html

Audio & Video

O Android permite a reproduo e controle de audio e vdeo atravs


do MediaPlayer.

Para mais informaes, recomendo os sites:


https://developer.android.com/guide/topics/media/mediaplayer.html
http://www.vogella.com/tutorials/AndroidMedia/article.html#play-
ing-sound

Cmera & Galeria

O API de cmera pode ser utilizada para tirar fotos atravs da sua
aplicao e o API de galeria pode ser utilizada para visualizao das
imagens que esto no dispositivo.

Para mais informaes, recomendo os sites:


https://developer.android.com/training/camera/photobasics.html
https://developer.android.com/guide/topics/media/camera.html
Tarefas Assincronas & Processos
Rodar processos em background sempre recomendvel quando
se est fazendo download de arquivos ou quando h clculos com-
plexos a serem feitos.

Para isso, preciso monitorar o andamentos de tipo de processo e ai


entra o AsyncTask (Tarefa Assincrona);

private class MyTask extends AsyncTask<Void, Void, Void> { ... }

Quando uma tarefa executada, 4 passos so feitos:



1. onPreExecute() - Esse passo geralmente usado para configu-
rao da tarefa, como mostrar uma barra de progresso ao usurio.
2. doInBackground(Params...) - Esse passo executado logo aps
o primeiro e onde o processamento de dados feito. Nesse passo, o
mtodo publishProgress(Progress...) pode ser chamado para atual-
izao do progresso do processamento.
3. onProgressUpdate(Progress...) - Esse passo executado quan-
do o publishProgress(Progress...) chamado. Ele pode, por exemplo,
atualizar a barra de progresso que o usurio est visualizando.
4. onPostExecute(Result) - Esse passo executado assim que o
processo finalizado e o resultado recebido como parmetro.

Caso a tarefa precise ser cancelada, o mtodo cancel(boolean) pode


ser chamado a qualquer momento.

Para mais informaes, recomendo o site:


http://www.vogella.com/tutorials/AndroidBackgroundProcessing/ar-
ticle.html
Services
Services (Servios) so utilizados quando necessrio fazer processos
em background sem precisar de interao com o usurio e que funci-
one mesmo se o aplicativo for fechado.

Cada service pode ser pblico ou privado, ou seja, caso ele seja priva-
do somente a aplicao que o iniciou ir acess-lo, se pblico, outras
aplicaes podero acess-lo.

Para comunicar que o processo foi finalizado, o service usa um broad-


cast para transmitir a informao e a activity usa receiver para receber
essa informao.

Tambm possvel agendar a execuo de services atravs do Job-


Scheduler. Esse agendamento necessrio quando processos precis-
am ser executados em loop a cada perodo de tempo.

Para mais informaes, recomendo os sites:


http://www.vogella.com/tutorials/AndroidServices/article.html
https://www.tutorialspoint.com/android/android_services.htm
http://www.vogella.com/tutorials/AndroidTaskScheduling/article.
html
Material Design
A partir do Android 5.0 (API de nvel 21) componentes e funciona-
lidades de Material Design foram disponibilizados para desenvolvi-
mento.

Material Design abrange vrios aspectos do comportamento e layout


do aplicativo como cores, animaes, dimenses e fontes.

Temas

Listas e Cartes

Para mais informaes, visite o site:


https://material.io/guidelines/
Web Services
Web Service um padro de comunicao entre plataformas hetereo-
geneas

SOAP

SOAP (Simple Object Access Protocol) uma protocolo de mensagem


que independe de sistemas operacionais e utiliza o protocolo HTTP e
XML para comunicao.

Restful API & Operaes CRUD

O Restful mais robusto que SOAP pois requer menos banda de in-
ternet para transmisso. Ele tambm utiliza o protocolo HTTP para
comunicao

CRUD um conjunto de operaes que so representadas atravs dos


prefixos HTTP. As requisies CRUD podem conter um dos seguintes
prefixos:

- POST (Create).
- GET (Read).
- PUT (Update/Replace).
- PATCH (Update/Modify).
- DELETE (Delete).

Para mais informaes, recomendo os sites:


http://programmerguru.com/android-tutorial/android-webser-
vice-tutorial/#what-is-web-service
http://searchsoa.techtarget.com/definition/SOAP
http://www.restapitutorial.com/lessons/httpmethods.html
Usando bibliotecas de terceiros
Existem algumas bibliotecas desenvolvidas por terceiros que ajudam
a vida de desenvolvedores, como:

Volley

Volley uma biblioteca HTTP que facilita requisies tornando-as


mais fceis e rpidas. Essa biblioteca oferece recursos como:

- Automatizao de requisies.
- Conexo com multiplas redes.
- Cache HTTP.
- Priorizao de requisio.
- Cancelamento de requisio.
- Customizaes como desistir e repetir.
- Ferramentas de debug e rastreamento.

Para mais informaes, recomendo o site:


https://developer.android.com/training/volley/index.html

Firebase

Firebase uma biblioteca disponibilizada pelo Google com o objeti-


vo de facilitar o desenvolvimento de aplicativos. Ela oferece recursos
como:

- Anlise de uso do aplicativo e envolvimento do usurio.


- Envio de mensagens e notificaes.
- Salva a autentificao de usurio.
- Armazenamento e sincronizao de dados em tempo real.
- Armazenamento de contedo de usurios em nuvem.
- Hospedagem do aplicativo na web.
- Entre outros recursos.

Para mais informaes, recomendo o site:


https://firebase.google.com/docs/android/setup
API de Localizao & Google Maps
Localizao

O API de localizao fornece longitude e latitude uma vez que o apli-


cativo detecta conexo com o GPS.

Google Maps

Esse API do Google oferece vrios recursos interessantes para o


desenvolvimento de aplicativos como:

- Google Places: onde possvel adicionar informaes de mil-


hes de locais ao seu aplicativo.
- Google Maps Directions: onde possvel o clculo de rotas.
- Google Maps Geocoding: onde possvel a converso de en-
dereo em coordenadas geogrficas.

Para mais informaes, recomendo os sites:


Android Location
Google Maps Api
Conectividade do Dispositivo
Android permite o controle de conexo via bluetooh e via Internet.

Bluetooth

As funcionalidades do bluetooth que podem ser controladas so:



- Configurao com o bluetooth.
- Procura por dispositivos pareados ou disponveis na rea local.
- Conexo com dispositivos.
- Transferncia de dados.

Internet

As funcionalidades de Internet que podem ser contradas so:

- Verificao do tipo de conexo


- Monitoramento na fora de conexo

Para mais informaes, visite os websites:


Wi-Fi Peer-to-Peer Android Documentation
Bluetooth Android Documentation
Android - Bluetooh Tutorial
Testando
Para ter certeza do funcionamento do aplicativo em diferentes dis-
positivos, teste-o num dispositivo com o nmero baixo de configu-
raes e num dispositivo com um nmero alto de configuraes para
verificar resoluo de tela e desempenho.

Para teste de cdigo, existem dois tipos de teste unitrio, local e in-
strumental.

Teste de Unidade Local

Testes locais rodam com o JVM e voc pode usar algumas bibliotecas
como o Mockito para simulao. Esses testes esto localizados em
module-name/src/test/java/.

Teste de Unidade Instrumental

Testes instrumentais tem que ser executados em um emulador ou


dispositivo. O aplicativo ser instalado no background e ento uma
aplicativo de teste instalado que ir controlar seu aplicativo, lana-
lo e executar os testes neccessrios. Esses testes esto localizados em
module-name/src/androidTest/java/.

Para mais informaes, recomendo o site:


Developing Android unit and instrumentation tests - Tutorial
The basics of Unit and Instrumentation Testing on Android
Publicando o Aplicativo no Google
Existem diversos modos de distribuio do seu aplicativo depois
de pronto, como coloca-los no seu website ou enviar o apk para os
usurios. O mais comum a publicao no Google Play. Recomendo
que voc de uma olhada no checklist de lanamento antes da publi-
cao.

O primeiro passo se voc no tem uma conta de desenvolvedor no


Google Play fazer uma. Para manter a conta em funcionamento, h
uma taxa de 25 dlares.

O segundo passo fazer alguns materiais promocionais com o


propsito de atrair a ateno de usurios, como capturas de tela,
vdeos, grficos e textos promocionais.

O terceiro passo configurar quais pases que seu aplicativo deve al-
canar, quais idiomas que o aplicativo ser anunciado e o preo que
quer cobrar em cada pas.

O quarto passo verificar se todas as configuraes foram feitas e de-


pois clicar no boto Publish no console de desenvolvedor.

Para mais informaes, recomendo o site:


https://developer.android.com/studio/publish/index.html
Um pouco mais sobre o autor

Desenvolvedor de sistemas desde os 16 anos, Jelsaf Rodrigues tem


participado do desenvolvido sistemas web e mobile para grandes
empresas brasileiras e internacionais. Apaixonado por podcasts,
programao e empreendedorismo, ele acredita que trabalho duro
e foco so as chaves para o sucesso.

Você também pode gostar