O Guia Definitivo de Android para Programadores

Page 1

O Guia Definitivo de

ANDROID para

Programadores

JELSAFĂ RODRIGUES


Introdução Olá desenvolvedor, Quando decidi que queria tentar desenvolver para Android, a primeira 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 universidade. Mas alguma coisa estava faltando, só não sabia exatamente o que. Depois de um mês procurando por materiais de estudo, encontrei um curso gratuito de Material Design para Android no Udemy (plataforma de ensino online). Um dos melhores cursos de desenvolvimento 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 desenvolver para Android, então esse e-book é o meu presente para você. Esse e-book é o que eu precisava quando estava começando a aprender. 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 linguagem. 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, usabilidade e compatibilidade - Compatibilidade com C++ e NDK - Compatibilidade com Google Cloud Platform O Android Studio cria projetos com um ou mais módulos com arquivos 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ódigo 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ódigo 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-development-part-1 https://www.tutorialspoint.com/android/


Orientação a Objetos Java, assim como C# e C++, é uma liguagem com programação orientada 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-orientada-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 arquivo 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 seguintes 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, comandos 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ó direçã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


O Guia Definitivo de Android para Programadores

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 dimensõ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


Componentes Componentes são os diferentes tipos de elementos e views de interação com o usuários como botões e imagens. Veremos alguns exemplos 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 verticalmente 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 verticalmente 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#playing-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 complexos 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 configuraçã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 atualização do progresso do processamento. 3. onProgressUpdate(Progress...) - Esse passo é executado quando 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/article.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 funcione mesmo se o aplicativo for fechado. Cada service pode ser público ou privado, ou seja, caso ele seja privado 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 broadcast 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 JobScheduler. Esse agendamento é necessário quando processos precisam 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 funcionalidades de Material Design foram disponibilizados para desenvolvimento. 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 hetereogeneas 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 internet 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-webservice-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 objetivo 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 aplicativo 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 milhõ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 endereç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 dispositivos, teste-o num dispositivo com o número baixo de configuraçõ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 instrumental. 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çalo 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 publicaçã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 alcanç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 depois 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.



Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.