Buscar

ANDROID - guia para programadores

Prévia do material em texto

O Guia Definitivo de
ANDROID 
para
Programadores
JELSAFÁ RODRIGUES
Introdução
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. Vários vídeos, várias dicas e muito código.
Mas depois de alguns tutoriais, eu ainda não tinha entendido como 
Android funcionava. Um mês 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ó não sabia exatamente o 
que.
Depois de um mês 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 interação com usuário que já tive.
Três meses depois, eu estava conseguindo começar aplicativos, mas 
por algum motivo eu não conseguia deixar de jeito que eu queria e 
acabava abandonando e começava 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, então esse e-book é o meu presente para você. 
Esse e-book é o que eu precisava quando estava começando a apren-
der. Nele há as direções do que você precisa aprender para ser um 
desenvolvedor completo em Android.
Um aviso: não irei me aprofundar nos tópicos apresentados aqui, 
pois eles serão como placas de direção, 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 páginas.
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 contém recursos como:
 - Sistema de compilação flexível baseado no Gradle
 - Emulador rápido
 - Ambiente unificado para todos os dispositivos Android
 - Instant Run para enviar alterações a aplicativos em execução
 - Modelos de código e integração com o GitHub
 - Ferramentas e estruturas de teste
 - Ferramentas de verificação de código 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 módulos com arqui-
vos de código fonte e recursos. Cada módulo incluí:
 
 - manifests: contém o arquivo AndroidManifest.xml
 - java: contém os arquivos de código-fonte do Java, incluindo códi-
go de teste do JUnit.
 - res: contém todos os recursos que não são código, como layout 
XML, strings de UI e imagens de Bitmap.
Para mais informações, visite o site:
https://developer.android.com/studio/intro/index.html
Java
Java é, basicamente, uma coleção de palavras e simbolos que expressa 
o que o nosso código irá fazer, em outras palavras, uma abstração da 
comunição 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 são representados 
por true e false.
 - char: representa um único caracter.
 - String: vários tipos de caracteres.
Java também trabalha com variáveis, que armazenam dados. Veja os 
exemplos abaixo:
 - int versao = 1;
 - String titulo = “Android para Programadores”;
A linguagem também usa métodos, que contém uma sessão de códi-
go que podem ser chamados de diferentes locais e reusados. Veja o 
exemplo abaixo:
public String getNome(){
 String nome = “João da Silva”;
 return nome;
}
Para mais informações, recomendo os sites:
http://blog.teamtreehouse.com/java-basics-for-android-develop-
ment-part-1
https://www.tutorialspoint.com/android/
Orientação a Objetos
Java, assim como C# e C++, é uma liguagem com programação ori-
entada a objetos. O que significa que a representação de elementos é 
feita através de um objeto ou classe.
Existem quatro pontos inportantes quando falamos de orientação a 
objetos: abstração, encapsulamento, herança e polimorfismo.
Abstração é a representação de um objeto real, incluindo identidade, 
propriedades e métodos.
 public class Pessoa{
 private String nome;
 public String andar(){
 return “Mais um passo...”;
 }
 }
Encapsulamento são feitos através de getters e setters, encapsulando 
propriedade privadas e adicionando segurança à aplicação.
 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
Herança é quando um objeto herda características de outro objeto.
 public class Pessoa{
 private String nome;
 }
 public class Funcionario extends Pessoa{
 private String cargo;
 }
Polimorfismo é a alteração do funcionamento interno de um método 
herdado de um objeto pai. No exemplo abaixo, cada funcionário tem 
um salario, mas diretores e programadores tem diferentes bônus.
 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 informações, 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 interação com o usuário, possuindo 
um layout xml e um arquivo de código. Cada activity tem um ciclo 
de vida (lifecycle) que muda dependendo do estado da atividade. O 
ciclo de vida é representado pelos seguintes métodos:
 - 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 usuário.
 - 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 
também permite requisições para componentes de uma aplicação para 
outra. Além disso, Intents permitem a transmissão de dados através 
da requisições. 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 pedaço de uma activity, permitindo um design mais 
modular, ou seja, uma activity pode possuir multiplos fragments. 
Fragments também possuem um ciclo de vida, um layout xml e ar-
quivo de código próprio.
Para mais informações 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 informações. Ele grava os dados 
num arquivo de texto junto ao aplicativo e recupera as informações 
quando necessário.
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 através de queries, coman-
dos em SQLite que dizem o que deve ser feito no banco.Para criação e deleção 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 informações, recomendo o site:
http://www.vogella.com/tutorials/AndroidSQLite/article.html
Content Provider
Caso seja necessário o compartilhamento de dados do bancos entre 
a sua aplicação e outras, o Android fornece o content provider para 
compartilhar dados.
Para mais informações, 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-
reção, vertical ou horizontal.
Para mais informações, 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 
posição de outro componente ou do relative layout.
Para mais informações, 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 informações, 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 informações, recomendo o site:
https://www.tutorialspoint.com/android/android_frame_layout.htm
Table Layout
O table layout disponibiliza os componentes em linhas e colunas 
como uma tabela.
Para mais informações, 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-
mensões.
Para mais informações, recomendo o site:
https://developer.android.com/guide/topics/ui/layout/gridview.html
Web View Layout
O web view layout é preparado para mostrar páginas web dentro da 
aplicação.
Para mais informações, recomendo o site:
https://www.tutorialspoint.com/android/android_webview_layout.
htm
O Guia Definitivo de Android para Programadores
Componentes
Componentes são os diferentes tipos de elementos e views de inter-
ação com o usuários como botões e imagens. Veremos alguns exem-
plos abaixo:
Botão
Componente que uma vez clicado ou pressionado realiza uma ação.
Edit Text
Componente para input de caracteres.
Spinner
Componente que contém uma lista para seleção.
Image View
Componente para exibição de imagem.
Date and Time Picker
Componente para seleção de data e/ou hora.
Check Box
Componente para seleção de multiplos itens.
Radio Button
Componente para seleção de item único.
Para mais informações, 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 informações, recomendo o site:
ListView
Grid View
O grid view é um componente que mostra uma lista de items em duas 
dimensões com uma barra de rolagem.
Para mais informações, recomendo o site:
GridView
View Customizada
Para customizar a disposição do elementos dentro dos itens da list 
view ou do grid view, um Adapter será necessário, possibilitando que 
os componentes tenha até mesmo imagens.
Para mais informações, 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 cartão que pode ser utilizado nos 
items de um recycler view.
Para mais informações, recomendo o site:
RecyclerView and CardView
Multimedia
Multimedia API
Dentre várias API’s, o Android possui os de multimedia: audio, video, 
câmera e fotos.
Para mais informações, recomendo o site:
https://developer.android.com/about/versions/android-5.0.html
Audio & Video
O Android permite a reprodução e controle de audio e vídeo através 
do MediaPlayer.
Para mais informações, recomendo os sites:
https://developer.android.com/guide/topics/media/mediaplayer.html
http://www.vogella.com/tutorials/AndroidMedia/article.html#play-
ing-sound
Câmera & Galeria
O API de câmera pode ser utilizada para tirar fotos através da sua 
aplicação e o API de galeria pode ser utilizada para visualização das 
imagens que estão no dispositivo.
Para mais informações, 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 recomendável quando 
se está fazendo download de arquivos ou quando há cálculos 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 são feitos:
 
 1. onPreExecute() - Esse passo geralmente é usado para configu-
ração da tarefa, como mostrar uma barra de progresso ao usuário.
 2. doInBackground(Params...) - Esse passo é executado logo após 
o primeiro e onde o processamento de dados é feito. Nesse passo, o 
método publishProgress(Progress...) pode ser chamado para atual-
ização 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 usuário está visualizando.
 4. onPostExecute(Result) - Esse passo é executado assim que o 
processo é finalizado e o resultado é recebido como parâmetro.
Caso a tarefa precise ser cancelada, o método cancel(boolean) pode 
ser chamado a qualquer momento.
Para mais informações, recomendo o site:
http://www.vogella.com/tutorials/AndroidBackgroundProcessing/ar-
ticle.html
Services
Services (Serviços) são utilizados quando é necessário fazer processos 
em background sem precisar de interação com o usuário e que funci-
one mesmo se o aplicativo for fechado. 
Cada service pode ser público ou privado, ou seja, caso ele seja priva-
do somente a aplicação que o iniciou irá acessá-lo, se público, outras 
aplicações poderão acessá-lo.
 Para comunicar que o processo foi finalizado, o service usa um broad-
cast para transmitir a informação e a activity usa receiver para receber 
essa informação.
Também é possível agendar a execução de services através do Job-
Scheduler. Esse agendamento é necessário quando processos precis-
am ser executados em loop a cada período de tempo.
Para mais informações, 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 nível 21) componentes e funciona-
lidades de Material Design foram disponibilizados para desenvolvi-
mento.
Material Design abrange vários aspectos do comportamento e layout 
do aplicativo como cores, animações, dimensões e fontes.
Temas 
Listas e Cartões
Para mais informações, visite o site:
https://material.io/guidelines/
Web Services
Web Service é um padrão de comunicação 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 comunicação.
Restful API & Operações CRUD
O Restful é mais robusto que SOAP pois requer menos banda de in-
ternet para transmissão.Ele também utiliza o protocolo HTTP para 
comunicação
CRUD é um conjunto de operações que são representadas através dos 
prefixos HTTP. As requisições CRUD podem conter um dos seguintes 
prefixos:
 - POST (Create).
 - GET (Read).
 - PUT (Update/Replace).
 - PATCH (Update/Modify).
 - DELETE (Delete).
Para mais informações, 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 requisições tornando-as 
mais fáceis e rápidas. Essa biblioteca oferece recursos como:
 - Automatização de requisições.
 - Conexão com multiplas redes.
 - Cache HTTP.
 - Priorização de requisição.
 - Cancelamento de requisição.
 - Customizações como desistir e repetir.
 - Ferramentas de debug e rastreamento.
Para mais informações, 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: 
 - Análise de uso do aplicativo e envolvimento do usuário.
 - Envio de mensagens e notificações.
 - Salva a autentificação de usuário.
 - Armazenamento e sincronização de dados em tempo real.
 - Armazenamento de conteúdo de usuários em nuvem.
 - Hospedagem do aplicativo na web.
 - Entre outros recursos.
Para mais informações, recomendo o site:
https://firebase.google.com/docs/android/setup
API de Localização & Google Maps
Localização
O API de localização fornece longitude e latitude uma vez que o apli-
cativo detecta conexão com o GPS.
Google Maps
Esse API do Google oferece vários recursos interessantes para o 
desenvolvimento de aplicativos como:
 - Google Places: onde é possível adicionar informações de mil-
hões de locais ao seu aplicativo.
 - Google Maps Directions: onde é possível o cálculo de rotas.
 - Google Maps Geocoding: onde é possível a conversão de en-
dereço em coordenadas geográficas.
Para mais informações, recomendo os sites:
Android Location
Google Maps Api
Conectividade do Dispositivo
Android permite o controle de conexão via bluetooh e via Internet.
Bluetooth
As funcionalidades do bluetooth que podem ser controladas são:
 
 - Configuração com o bluetooth.
 - Procura por dispositivos pareados ou disponíveis na área local.
 - Conexão com dispositivos.
 - Transferência de dados.
Internet 
As funcionalidades de Internet que podem ser contradas são:
 - Verificação do tipo de conexão
 - Monitoramento na força de conexão 
Para mais informações, 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 número baixo de configu-
rações e num dispositivo com um número alto de configurações para 
verificar resolução de tela e desempenho.
Para teste de código, existem dois tipos de teste unitário, local e in-
strumental.
 
Teste de Unidade Local
Testes locais rodam com o JVM e você pode usar algumas bibliotecas 
como o Mockito para simulação. Esses testes estão 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 então uma 
aplicativo de teste é instalado que irá controlar seu aplicativo, lança-
lo e executar os testes neccessários. Esses testes estão localizados em 
module-name/src/androidTest/java/.
Para mais informações, 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 distribuição do seu aplicativo depois 
de pronto, como coloca-los no seu website ou enviar o apk para os 
usuários. O mais comum é a publicação no Google Play. Recomendo 
que você de uma olhada no checklist de lançamento antes da publi-
cação.
O primeiro passo se você não tem uma conta de desenvolvedor no 
Google Play é fazer uma. Para manter a conta em funcionamento, há 
uma taxa de 25 dólares.
O segundo passo é fazer alguns materiais promocionais com o 
propósito de atrair a atenção de usuários, como capturas de tela, 
vídeos, gráficos e textos promocionais.
O terceiro passo é configurar quais países que seu aplicativo deve al-
cançar, quais idiomas que o aplicativo será anunciado e o preço que 
quer cobrar em cada país.
O quarto passo é verificar se todas as configurações foram feitas e de-
pois clicar no botão Publish no console de desenvolvedor. 
Para mais informações, 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, 
programação e empreendedorismo, ele acredita que trabalho duro 
e foco são as chaves para o sucesso.

Continue navegando