Apostila Desenvolvimento para dispositivos móveis
Tabela de conteúdos Introdução Cronograma Módulo 1 - Fundamentos da Computação Móvel Capítulo 1 - A evolução dos dispositivos Exercícios de Fixação
0 0.1 1 1.1 1.1.1
Capítulo 2 - Características dos dispositivos móveis
1.2
Capítulo 3 - Arquiteturas de aplicações móveis
1.3
Capítulo 4 - Infraestrutura móvel
1.4
Capítulo 5 - Introdução ao Android
1.5
Ambiente de Desenvolvimento
1.5.1
Activity
1.5.2
Exercício - Primeiro Aplicativo
1.5.3
Ferramentas
1.5.4
Estrutura do projeto
1.5.5
Capítulo 6 - A linguagem Java
1.6
Classes
1.6.1
Interfaces
1.6.2
Módulo 2 - Interface Gráfica
2
Capítulo 7 - Padrões de design
2.1
Capítulo 8 - Arquivos XML de resources
2.2
Capítulo 9 - Componentes
2.3
Capítulo 10 - Layout
2.4
Exercício - Layout
2.4.1
Estilo
2.5
Usabilidade
2.6
Projeto do módulo 2
2.7
Módulo 3 - Armazenamento
3
Armazenamento Local
3.1
Armazenamento Remoto
3.2
Preferências compartilhadas
3.3
2
Apostila Desenvolvimento para dispositivos móveis
Armazenamento em banco de dados Módulo 4 - Desenvolvimento de um aplicativo
3.4 4
Prototipação
4.1
Planejamento
4.2
Projeto Final
4.3
Apendice
5
Instalação do Android Studio no Linux
5.1
Criação de um dispositivo virtual com o Android
5.2
Exercícios de Fixação
6
Glossário
7
Referência Bibliográfica
8
3
Apostila Desenvolvimento para dispositivos móveis
Desenvolvimento para dispositivos móveis Nessa apostila você aprenderá como criar aplicações que serão utilizadas tanto no celular ou tablet utilizando a linguagem Java para o sistema operacional Android.
Metodologia de estudos Para que você tenha um bom aproveitamento do conteúdo aqui apresentado é imprescindível que assista pratique através da resolução dos exercícios dessa apostila. Qualquer dúvida que surgir, não hesite em pesquisar nos livros referenciados aqui e no site oficial do Android para buscar mais conhecimento.
Introdução
4
Apostila Desenvolvimento para dispositivos móveis
Cronograma 1. Aulas Semana (4 ha)
Conteúdo
1
Fundamentos da computação móvel
2
Fundamentos da computação móvel
3
Fundamentos da computação móvel
4
Interface Gráfica
5
Interface Gráfica
6
Interface Gráfica
7
Interface Gráfica
8
Armazenamento
9
Armazenamento
10
Armazenamento
11
Armazenamento
12
Desenvolvimento de aplicações para dispositivos móveis
13
Desenvolvimento de aplicações para dispositivos móveis
14
Desenvolvimento de aplicações para dispositivos móveis
15
Desenvolvimento de aplicações para dispositivos móveis
16
Desenvolvimento de aplicações para dispositivos móveis
17
Desenvolvimento de aplicações para dispositivos móveis
18
Desenvolvimento de aplicações para dispositivos móveis
19
Desenvolvimento de aplicações para dispositivos móveis
20
Desenvolvimento de aplicações para dispositivos móveis
Total
80 horas aula
2. Atividades avaliativas [Incompleto]
Cronograma
5
Apostila Desenvolvimento para dispositivos m贸veis
Data 01/02/16
Cronograma
Atividade Exerc铆cio
6
Apostila Desenvolvimento para dispositivos móveis
Módulo 1 - Fundamentos da Computação Móvel Objetivos da aprendizagem Analisar a evolução dos dispositivos móveis e reconhecer o impacto da evolução no cotidiano. Identificar características dos dispositivos móveis. Descrever arquiteturas de aplicação móvel. Descrever a infraestrutura móvel.
Leituras sugeridas LEE, VALENTINO;Aplicações móveis: arquitetura projeto e desenvolvimento. tradução: Amaury Bentes & Deborah Rüdiger; revisão técnica: Renato Haddad. São Paulo, Pearson Education do Brasil, 2005. ISBN sbn 85-346-1540-3 1. BERNAL, Paulo Sérgio M.Comunicações móveis: tecnologias e aplicações. São Paulo: Érica, c2002. 204 p. ISBN 8571948984 (Precisa comprar)
Introdução A Mobilidade pode ser definida como a capacidade de poder se deslocar ou ser deslocado facilmente. Para a Computação Móvel, refere-se ao uso pelas pessoas de dispositivos móveis portáveis com grande poder operacional e funcional. Sendo estes capazes de: se conectar a outros dispositivos; obter dados; fornecê-los a outros usuários; Para fazer isso, um dispositivo móvel deve possuir determinadas características: Portabilidade Usabilidade Funcionalidade Conectividade Cada uma destas características é importante em si mesma, no entanto é a combinação delas que nos interessa. O usuário também pode ser flexível com relação a alguma característica, por algum benefício. Nesse capítulo estudaremos cada uma delas.
Módulo 1 - Fundamentos da Computação Móvel
7
Apostila Desenvolvimento para dispositivos móveis
Capítulo 1. A evolução dos dispositivos móveis
Capítulo 1 - A evolução dos dispositivos
8
Apostila Desenvolvimento para dispositivos móveis
Exercícios de Fixação Questão 1) Analisando a evolução dos dispositivos móveis, pesquise sobre aparelhos de telefone móvel que contenham memória RAM inferior a 1GB e aponte as restrições. Questão 2) Qual o impacto da evolução dos dispositivos móveis no cotidiano? Questão 3) Um Activity representa uma tela do aplicativo. Escolha qual dos métodos abaixo não são métodos: a)Opção 1 b)Opção 2 c)Opção 3 d)Opção 4 e)Opção 5 Questão 8) Exemplo de questão de cruzadinha:
Exercícios de Fixação
9
Apostila Desenvolvimento para dispositivos móveis
Atividade complementar Assista ao vídeo onde explico detalhadamente os fundamentos da mobilidade https://www.youtube.com/watch?v=8OyXYLcr2GQ
Exercícios de Fixação
10
Apostila Desenvolvimento para dispositivos móveis
Capítulo 2. Características dos dispositivos móveis 2.1. Portabilidade A Portabilidade é definida como a capacidade d e ser facilmente transportável. “Hoje em dia”, para ser considerado portátil, o dispositivo móvel deve ser transportável facilmente na mão. Por que usamos o “Hoje em dia” ? Em trinta anos, peso de computador portátil vai de 13 kg a 1 kg;
2.2. Usabilidade Um dispositivo móvel deve ser utilizável por tipos de pessoas diferentes em diversos ambientes. A Usabilidade de um dispositivo depende de vários fatores: Características do Usuário Características do Ambiente Características do Dispositivo Características do Usuário Uma interação do usuário com um dispositivo móvel depende, até certo ponto, de suas características pessoais. Algumas características mais comuns do usuário são: Tamanho e força. O tamanho e a força do usuário tem um efeito em sua interação com o dispositivo móvel. Por exemplo, um notebook que é facilmente transportado por um adulto pode não ser utilizável por seu filho. Flexibilidade e destreza. A flexibilidade e a destreza do usuário tem um efeito na usabilidade do dispositivo móvel. Um usuário adulto pode ter dedos maiores e precisar usar um teclado maior. Por exemplo, um bombeiro que use um grosso par de luvas e que tente acessar informações sobre a planta do andar térreo a partir de um tablet talvez ache o dispositivo inútil. Conhecimento e capacidade. É difícil precaver-se contra a falta de conhecimento ou de capacidade do usuário. Geralmente os dispositivos mais úteis são os simpĺes e mais intuitivos de usar. Se o dispositivo for muito dificil de dominar, o usuario não o achará útil. Características do ambiente
Capítulo 2 - Características dos dispositivos móveis
11
Apostila Desenvolvimento para dispositivos móveis
O ambiente do usuário afeta a escolha do dispositivo. Algumas considerações a serem levadas em conta em função do ambiente do usuário são: Condições normais de funcionamento. Um dispositivo móvel deve trabalhar sob as condições normais de trabalho do usuário. Por exemplo, se um usuário tem de trabalhar em pé durante períodos prolongados de tempo, um tablet pode ser mais adequado do que um notebook, já que não precisam ficar na posição horizontal. Condições extremas. Um dispositivo móvel pode ter de trabalhar sob condições extremas (por exemplo, calor, frio, umidade, seca). Por exemplo, um trabalhador de serviços de emergência, como um bombeiro trabalhando em um ambiente arriscado, pode precisar de um dispositivo móvel à prova d'água ou outro mais resistente que possa suportar o ambiente. Características de dispositivo Os dispositivos móveis têm características próprias diferentes, que podem afetar a usabilidade total. Algumas dessas características próprias são: Tempo de inicialização. Se um usuário precisa utilizar um dispositivo móvel em tempo crítico (por exemplo, trabalhadors de serviços de emergências), um dispositivo móvel que inicia imediatamente talvez seja muito melhor. Integridade de dados. Se um usuário não puder tolerar perda de dados e necessita de armazenamento permanente, no próprio dispositivo é preferível optar por um tablet ou celular que ofereça suporte á cartão de memória ou que possua uma memória interna ampla. Interface com o usuário(teclado, mouse, tela sensível ou toque). As características instrinsecas do dispositivo podem incapacitá-lo a desempenhar certas funções, devido à natureza da interface com o usuário. Por exemplo, é muito difícil criar desenhos à mão livre usando um mouse em um notebook, mas é bem mais confortável e natural utilizar uma caneta em um tablet ou usar os próprios dedos na tela sensível ao toque. Robustez/resistência. Os dispositivos móveis geralmente não são muito robustos e podem se quebrar se forem derrubados. Dispositivos móveis podem ser fabricados para srem mais resistentes para ajudá-los aguentar as tensões do ambiente do usuário, colocando-os em uma bolsa de plástico resistente. Tirnar um dispositivo mais robusto, no entanto, pode, por outro lado, afetar sua portabilidade e usabilidade.
Capítulo 2 - Características dos dispositivos móveis
12
Apostila Desenvolvimento para dispositivos móveis
Arquiteturas de aplicações móveis Arquitetura web
Capítulo 3 - Arquiteturas de aplicações móveis
13
Apostila Desenvolvimento para dispositivos m贸veis
Infraestrutura m贸vel
Cap铆tulo 4 - Infraestrutura m贸vel
14
Apostila Desenvolvimento para dispositivos móveis
Visão Geral de uma aplicação Android 1.Introdução ao Android O Android é uma plataforma de software que permite criar aplicativos para dispositivos móveis, como smartphones e tablets. O Android foi desenvolvido pela GoogleTM, e posteriormente pela OHA (Open Handset Alliance), uma organização que une várias empresas com o objetivo de criar padrões abertos para dispositivos móveis. Para desenvolver aplicativos nativos para a plataforma é utilizada a linguagem Java, que veremos mais a frente. O sistema operacional do Android é baseado no kernel do Linux, que é responsável por gerenciar a memória, os processos, threads, segurança dos arquivos e pastas, além de redes e drivers. Cada aplicativo no Android dispara um novo processo no sistema operacional. Alguns deles podem exibir uma tela para o usuário, e outros podem ficar em execução em segundo plano por tempo indeterminado. Diversos processos e aplicativos podem ser executados simultaneamente, e o kernel do sistema operacional é o responsável por realizar todo o controle de memória. Caso necessário, o próprio sistema operacional pode decidir encerrar algum processo para liberar memória e recursos, e talvez até reiniciar o mesmo processo posteriormente quando a situação estiver controlada. Toda a segurança do Android é baseada na segurança do Linux. No Android, cada aplicação é executada em um único processo e cada processo por sua vez contém uma thread dedicada. Para cada aplicação instalada no celular é criado um usuário no sistema operacional para ter acesso a sua estrutura de diretórios. Dessa forma, nenhum outro usuário pode ter acesso a essa aplicação Tratando-se de arquivo, um aplicativo Android é um arquivo com extensão .apk , que basicamente é um pacote que contém o código compilado e os demais recursos, como XMLs e imagens.
2. Principais componentes O framework do Android possui vários componentes. Os principais são: Activity - é o componente que representa a tela, na qual o usuário interage com a aplicação.
Capítulo 5 - Introdução ao Android
15
Apostila Desenvolvimento para dispositivos móveis
Service - é o componente responsável por executar tarefas em background. Em geral são tarefas mais longas, rodadas em background para não prejudicar a responsividade da aplicação. Intent - é o componente que inicia os demais (activities, services e receivers). Para criar uma nova activity ou service, você faz através dos intents. Broadcast receivers - é um componente responsável por responder a eventos do sistema. Os eventos podem ser de variados tipos, por exemplo, uma localização foi encontrada pelo GPS, ou que a bateria está acabando, etc. Content provider - componente responsável por gerenciar dados da aplicação. Caso você queira compartilhar os dados da sua aplicação com outras, você só consegue fazê-lo através de um content provider. Porém, mesmo quando a informação é usada somente na sua aplicação e não é compartilhada com as demais, é possível usar um content provider para organizar a forma como os dados são consultados.
3.Máquina virtual Dalvik Você já sabe que a linguagem Java é utilizada para construir as aplicações para o Android. O fato é que em seu sistema operacional não existe uma máquina virtual Java (JVM). Na verdade, o que temos é uma máquina virtual chamada Dalvik que é otimizada para execução em dispositivos móveis. Ao desenvolver as aplicações para o Android você vai utilizar a linguagem Java e todos os seus recursos normalmente, mas depois que o bytecode (.class) é compilado ele é convertido para o formato .dex (Dalvik Executable), que representa a aplicação do Android compilada. Depois disso, os arquivos .dex e outros recursos como imagens são compactados em um único arquivo com a extensão .apk (Android Package File), que representa a aplicação final, pronta para ser distribuída e instalada. Ao utilizar o ambiente de desenvolvimento do Eclipse, toda essa compilação e geração do arquivo .apk ocorre automaticamente, portanto, não é preciso se preocupar com isso.
4.Máquina virtual ART (Android Runtime) A partir do Android 4.4 (KitKat) foi criada a máquina virtual ART (Android Runtime) com o objetivo de substituir a Dalvik, e naquela época o ART podia ser ativado opcionalmente nas configurações. Quando foi lançado o Android 5.0 (Lollipop), o ART se tornou a máquina virtual padrão, substituindo a Dalvik. Uma das melhorias do ART é a compilação Ahead-of-time (AOT), que tem o objetivo de otimizar o código ao máximo para melhorar o desempenho do aplicativo. O ART também tem um melhor funcionamento do Garbage Collector (GC) e apresenta melhorias no suporte ao debug de aplicativos.
Capítulo 5 - Introdução ao Android
16
Apostila Desenvolvimento para dispositivos móveis
Na prática os desenvolvedores ou usuários não são afetados se o sistema está utilizando a Dalvik ou ART, mas o Google afirma que o ART apresenta um desempenho muito melhor.
5. Google Play Para auxiliar a distribuição das aplicações do Android, além da divulgação de sua nova plataforma, foi criado o site Google Play (https://play.google.com), que inicialmente se chamava Android Market. O objetivo do site é fornecer aos desenvolvedores de aplicativos um lugar comum para disponibilizar suas aplicações. Para publicar uma aplicação, o desenvolvedor precisa pagar a taxa de US$ 25 (o pagamento é feito uma única vez por meio de um cartão de crédito internacional) e concordar com os termos de uso. Depois disso, o aplicativo já pode ser publicado e instalado pelos usuários. Existem aplicativos que são gratuitos, enquanto outros são pagos. Uma boa notícia para os desenvolvedores é que 70% dos lucros com os aplicativos vendidos serão repassados para quem os construiu. Para mais informações, visite o site do console do desenvolvedor no seguinte endereço https://play.google.com/apps/publish.
6. História e versões do Android
A versão 1.0 do Android chegou no mercado em 2008, com o famoso T-Mobile 1, e depois o Android não parou mais de evoluir. Algo interessante e engraçado sobre o Android é que cada nova versão é apelidada carinhosamente com o nome de um doce. Isso gera sempre
Capítulo 5 - Introdução ao Android
17
Apostila Desenvolvimento para dispositivos móveis
uma grande expectativa e especulação no mercado, pois todos ficam tentando adivinhar qual será o novo sabor do Android. Android 1.5 (Cupcake)
Lançado em abril de 2009, o Cupcake trouxe na época diversas melhorias para o sistema operacional, como na parte de câmera, GPS, upload de fotos e vídeos para o YouTube e Picasa etc. A principal novidade, porém, foi o lançamento do primeiro Android (HTC Magic) com apenas o touch screen e o teclado virtual. Foi no Cupcake que nasceram os widgets, que são miniaplicativos que podem executar na tela inicial. Android 1.6 (Donut) Lançado em setembro de 2009, o Donut inovou e fez o Android falar e escutar. Converter texto em voz é o que chamamos de Text-To-Speech (TTS), e o contrário, converter voz em texto, chamamos de Speech-To-Text (STT). Com o auxílio das pesquisas de voz, a home do Android ganhou mais funcionalidades e o usuário poderia pesquisar na agenda de contatos, na galeria de músicas e na web com a voz. Android 2.0 e 2.1 (Eclair) Lançado em outubro de 2009 e depois atualizado em janeiro de 2010, o Eclair trouxe uma interface de usuário diferenciada e adicionou os Live Wallpapers (plano de fundos animados na tela inicial). No Eclair foi lançado o suporte a múltiplas contas do Google e sincronização (junto com a API), assim como diversas melhorias em todo o sistema operacional, como nas câmeras, mapas e o suporte ao HTML5.
Capítulo 5 - Introdução ao Android
18
Apostila Desenvolvimento para dispositivos móveis
Android 2.2 (Froyo) Lançado em maio de 2010, o Froyo trouxe diversas melhorias de desempenho para o sistema operacional, como o compilador JIT (Just In Time) e uma engine de JavaScript mais rápida.Nessa versão foram adicionados recursos clássicos como o USB Tethering e Wi-Fi Hotspot, assim como o suporte ao Flash. Android 2.3 (Gingerbread) Lançado em dezembro de 2010, o Gingerbread trouxe novidades na câmera, pois era possível alternar entre a câmera frontal e traseira. Tivemos melhorias na funcionalidade de copy-paste, pois era possível tocar o texto e depois arrastar para controlar a seleção. Segundo o Google, foi nessa versão que tivemos um grande ganho com relação ao erenciamento da bateria e surgiu o suporte ao NFC (Near Field Commugnications). Android 3.0 (Honeycomb) Lançado em fevereiro de 2011, o Honeycomb trouxe um sistema operacional totalmente focado nos tablets, com uma experiência de usuário totalmente diferenciada para telas grandes. Com o Honeycomb, o Android deixou de ter botões físicos, e os botões de voltar e início (home) passaram a fazer parte da barra de navegação dentro da tela com touch screen. Foi nesta versão que também foi criada a action bar, que é o padrão de navegação mais utilizado nos aplicativos para Android atualmente, e também a API de fragments, que permite criar componentes reutilizáveis de código. Ambas as APIs são fundamentais no desenvolvimento de aplicativos. Android 4.0 (Ice Cream Sandwich) Lançado em outubro de 2011, o Ice Cream Sandwich unificou a plataforma de desenvolvimento entre smartphones e tablets, permitindo com que aplicativos para smartphones fossem criados com a action bar e fragments. Com o ICS, o mesmo sistema operacional agora executava em tablets e smartphones. A API de fragments é utilizada para criar componentes reutilizáveis de código, por isso ela tem muita importância ao reaproveitar o código de um aplicativo entre as versões para tablet e smartphone. Android 4.1 (Jelly Bean) Lançado em junho de 2012, o Jelly Bean voltou a trazer ganhos significativos com relação ao desempenho do sistema, e todo o sistema operacional ganhou melhorias no suporte às animações, deixando a interface mais sensível ao toque e fluida. As notificações que são famosas no Android passaram a ser mais ricas e conter muitos detalhes. Android 4.4 (KitKat)
Capítulo 5 - Introdução ao Android
19
Apostila Desenvolvimento para dispositivos móveis
Lançado em outubro de 2013, o KitKat trouxe o Android para todos, pois conseguiu executar o sistema operacional mesmo em dispositivos com menos de 512MB de RAM, devido às diversas melhorias de desempenho e otimizações feitas no sistema operacional. O KitKat trouxe aperfeiçoamentos no Bluetooth, NFC, Print Framework, sensores, e foi criada a API de Transitions, que possibilitou aos desenvolvedores, não só criarem interfaces visuais em cenas, como também animar a transição entre uma cena e outra. Android 5.0 (Lollipop) Lançado em novembro de 2014, o Lollipop foi o maior release focado na interface de usuário, usabilidade, animações e experiência do usuário. Nasceu então o Material Design, que é um guia completo sobre como implementar o visual, animações e a interação entre os componentes de um layout, levando em consideração que o Android se tornou uma plataforma comum para vários dispositivos, como smartphones, tablets (Android), wearables (Android Wear), óculos (Google Glass), TVs (Android TV) e carros (Android Auto). Isso é o mais importante, uma vez que as técnicas do Material Design não precisam ser implementadas somente nos smartphones e tablets, pois o Google criou um padrão de design consistente entre várias plataformas, como mobile, web, wear etc. Dentre outras melhorias, tivemos as notificações, que agora também aparecem na tela de bloqueio (Lock Screen), e as head-up notifications, que aparecem no topo da tela com alta prioridade. Um exemplo de head-up notifications é a ligação que permite atender ou rejeitar uma ligação telefônica diretamente na notificação. Antigamente, esse recurso não existia e a aplicação da ligação mostrava uma tela cheia para o usuário decidir se atende ou não a ligação. Outra novidade interessante foi o projeto Volta, que trouxe ferramentas para auxiliar a análise do uso da bateria nos aplicativos. Também foi modificada a tela de aplicativos recentes (Overview Screen), que mostra as últimas tarefas que estão sendo executadas, sendo que um aplicativo pode conter uma ou mais tarefas. Foi criada uma API para os desenvolvedores controlarem esse comportamento. O Lollipop também suporta a OpenGL ES 3.1, trazendo um desempenho superior nos jogos 2D e 3D. A plataforma do Android está chegando a outro patamar, e o Google TV também recebeu um grande release. Foi criada a API Leanback para criar interfaces ricas para TV e o TIF (Android TV Input Framework).
Capítulo 5 - Introdução ao Android
20
Apostila Desenvolvimento para dispositivos móveis
Ambiente de Desenvolvimento Uma das vantagens de desenvolver para o Android é que as ferramentas e programas necessários são todos gratuitos e disponíveis para todos os sistemas operacionais (OS X, WindowsTM e Linux). Para começar a programar para o Android é necessário conhecer (ou aprender) a linguagem Java, pois foi a linguagem escolhida pela GoogleTM. Nas peóximas aulas veremos detalhes dessa linguagem e suas principais funções úteis para desenvolver aplicativos. Entre as ferramentas que você precisa instalar estão: JDK - como o Android faz uso da tecnologia Java, é necessário ter o Java Development Kit instalado. Android SDK - que inclui as bibliotecas e várias ferramentas, como o emulador, por exemplo. Android Studio - a IDE que será utilizada para facilitar o desenvolvimento para o Android. Pode ser utilizado também a IDE Eclipse e o plugin ADT. Você não é obrigado a ter um aparelho com Android. O SDK inclui um emulador que permite executar as aplicações desenvolvidas. Porém, é altamente recomendado que execute a aplicação em um aparelho de verdade, antes de liberar o aplicativo no Google Play, a loja de aplicativos do Android. As instruções de configuração do ambiente de desenvolvimento se encontram no Apendice dessa apostila. Nota Importante! Você precisa estar com permissões administrativas para realizar as instalações e configurações das ferramentas.
Ambiente de Desenvolvimento
21
Apostila Desenvolvimento para dispositivos móveis
Activity Uma activity é o componente responsável por mostrar uma tela ao usuário. Sempre que você quiser criar uma nova tela na aplicação, deverá criar uma classe que herda de Activity. Entre os principais métodos da activity estão os que são responsáveis pelo seu ciclo de vida.
Ciclo de vida de uma Activity O ciclo de vida de uma activity se refere a ordem em que os métodos são chamados desde a sua criação, até o seu final, quando a activity é destruída. Estes métodos são: OnCreate - é chamado quando a activity é criada. onStart - é chamado após o onCreate, e antes da activity se tornar visível para o usuário. onResume - é chamado após o onStart, quando a activity se torna visível para o usuário. onPause - é chamado após o onResume, quando a activity está para perder a visibilidade para outra activity. onStop - a activity não está mais visível para o usuário. onDestroy - a activity está prestes a ser destruída. O diagrama a seguir demonstra o fluxo desses métodos e relaciona suas chamadas ao estado atual da aplicação.
Exemplos de código
Activity
22
Apostila Desenvolvimento para dispositivos m贸veis
MainActivity.java package com.eteit.ti.exemplociclodevidaactivity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Essa linha de c贸digo configura a interface da sua Activity // O arquivo de layout 茅 definido no projeto no caminho res/layout/main_activity.xml setContentView(R.layout.activity_main); } @Override protected void onRestart() { super.onRestart(); } @Override protected void onStart() { super.onStart(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy();
Activity
23
Apostila Desenvolvimento para dispositivos m贸veis
}
}
Activity
24
Apostila Desenvolvimento para dispositivos móveis
Exercício - Primeiro Aplicativo Faremos um aplicativo simples de "Ola mundo" para aprender m //TODO
Criação de um novo projeto Abra o Android Studio, acesse o menu superior e siga os passos File > New > New Project.
Exercício - Primeiro Aplicativo
25
Apostila Desenvolvimento para dispositivos móveis
Em Application name escolha um nome para o seu projeto, esse nome será usado para criar toda a estrutura de arquivos do seu projeto e inicialmente ele representa o nome do arquivo final do seu aplicativo. No campo Company Domain escolha um nome que corresponda á organização(empresa) dona desse aplicativo ou coloque o seu nome mesmo. No nosso caso deixaremos apenas como ti.eteit.com referente ao curso Técnico em Informática da ETEIT. Essas informações juntas irão gerar o Package name, que é o nome do pacote do projeto. Para publicar na loja de aplicativos Google Play esse nome deve ser único, portanto se voce pretende pubicá-lo você deve estar atento a essa etapa. O project location
Escolha da versão do SDK Essa etapa é muito importante opis definirá em qual a versão do sistema operacional Android seu aplicativo poderá ser instalado.
Exercício - Primeiro Aplicativo
26
Apostila Desenvolvimento para dispositivos móveis
Como iremos desenvolver para celulares e tablets, iremos marcar a primeira opção e escolher a versão mínima que o aplicativo irá executar, isso limita as bibliotecas que serão utilizadas e os recursos como por exemplo padrões de layout. Para iniciar vamos escolher a versão 8 da API que drá surpote ao Android 2.2 chamado Froyo.
Escolha do modelo da janela inicial Para facilitar o desenvolvimento uma série de modelos prontos de layout e código já são oferecidas pelo SDK então ao iniciar um projeto você já pode escolher uma janela pronta de exibição de mapa do Google Maps, ou janela de Configurações, ou ainda janela de Login e etc.
Exercício - Primeiro Aplicativo
27
Apostila Desenvolvimento para dispositivos móveis
Escolha a opção Blank Activity para criar um activity pura, sem componentes adicionais além de uma barra de aplicativos.
Escolha o titulo da janela inicial Activity Name: Layout Name: Title: Menu Resource Name:
Exercício - Primeiro Aplicativo
28
Apostila Desenvolvimento para dispositivos m贸veis
Visualizando o resultado
Exerc铆cio - Primeiro Aplicativo
29
Apostila Desenvolvimento para dispositivos móveis
Altere o texto Hello Wolrd por "Olá mundo!"
Execução do aplicativo Para executar o aplicativo acesse o menu Run > Run App. Você verá a tela Device Chooser, onde irá escolher qual AVD (dispositivo que emula o Android) você irá iniciar, instalar e executar o app.
Exercício - Primeiro Aplicativo
30
Apostila Desenvolvimento para dispositivos móveis
Ferramentas
Imagine-se como um inventor e que sua IDE é a mesa sob a qual você coloca várias ferramentas de trabalho. No momento da criação de um aplicativo, quando você tem um projeto aberto, o Android Studio te disponibiliza de forma fácil as ferramentas que vão dar total apoio ás suas atividades. Vamos listar as principais a seguir.
1. Arquivos do projeto A aba Project aparece no canto esquerdo da tela e contém uma forma fácil de navegação pela estrutura de arquivos do projeto.
Ferramentas
31
Apostila Desenvolvimento para dispositivos móveis
Você pode alternar a visualização desses arquivos clicando no seletor Android logo acima dessa caixa e verá as opções de organizar a visualização dos arquivos por outros aspectos.
2. Árvore de Componentes
Ferramentas
32
Apostila Desenvolvimento para dispositivos móveis
A caixa Component Tree aparece quando estamos visualizando o arquivo de layout com extensão xml e apresenta uma lista contendo todos os componentes que estão sendo incorporados no layout, de forma hierárquica.
3. Propriedades dos componentes A caixa Properties exibe as características que podem ser personalizadas em um componente. Ela é atualizada a cada vez em que um novo componente é escolhido na Árvore de Componentes.
Ferramentas
33
Apostila Desenvolvimento para dispositivos mรณveis
4. Paleta de Componentes A caixa Pallete apresenta todos os componentes que podem ser acrescentados ao layout da tela e para adicionรก-los ao layout basta arrastรก-los para a รกrea de desenho.
Ferramentas
34
Apostila Desenvolvimento para dispositivos móveis
5. Design No painel Design é mostrada uma prévia de como a tela será apresentada, portanto é um modo mais fácil de adicionar componentes e previsualizar o resultado.
Nesse painel é possível selecionar o
Ferramentas
35
Apostila Desenvolvimento para dispositivos móveis
Estrutura do projeto Para acessar a estrutura de arquivos do projeto, procure na lateral esquerda por uma aba chamada Project. Por padrão ela já vem aberta, então basta procurar um painel como o que é mostrado a seguir.
manifests - Uma pasta que contém o arquivo AndroidManifest.xml, é o arquivo que guarda a configuração de um aplicativo Android. Iremos ver mais a fundo quais são as opções de configuração no decorrer do curso. java - é pasta onde fica o código fonte java da nossa aplicação. No projeto recémcriado, existe apenas um arquivo, que se chama Principal(é o nome que demos á nossa Activity inicial no momento da criação do projeto). res - abreviação de resources, esta pasta é subdividida em várias pastas, com propósitos diferentes. drawable - são destinadas a armazenar imagens que são usadas na aplicação, como ícones, por exemplo. layout - se destina a armazenar os arquivos XML que representam o layout das telas
Estrutura do projeto
36
Apostila Desenvolvimento para dispositivos móveis
da aplicação. Por enquanto, temos apenas um arquivo, o main.xml. menu values - também se destina a armazenar valores XMLs que serão usados na aplicação em qualquer lugar como por exemplo cores, dimensões, textos e estilos.
Estrutura do projeto
37
Apostila Desenvolvimento para dispositivos móveis
A linguagem Java Java é uma linguagem de programação interpretada orientada a objetos desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não sua única linguagem.
Características A linguagem Java foi projetada tendo em vista os seguintes objetivos: Orientação a objetos - Baseado no modelo de Simular Portabilidade - Independência de plataforma - "escreva uma vez, execute em qualquer lugar" ("write once, run anywhere") Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP Segurança - Pode executar programas via rede com restrições de execução Além disso, podem-se destacar outras vantagens apresentadas pela linguagem: Sintaxe similar a C/C++ Facilidades de Internacionalização - Suporta nativamente caracteres Unicode Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM) É distribuída com um vasto conjunto de bibliotecas (ou APIs) Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa) Desalocação de memória automática por processo de coletor de lixo Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização
Exemplos de código Método Main O método main é onde o programa inicia. Pode estar presente em qualquer classe. Os parâmetros de linha de comando são enviados para o array de Strings chamado args.
Capítulo 6 - A linguagem Java
38
Apostila Desenvolvimento para dispositivos móveis
public class OlaMundo { /** * Método que executa o programa * public = É visto em qualquer lugar da aplicação. É o modificador de acesso * static = é iniciado automaticamente pela JVM, sem precisar de uma instância * void = Método sem retorno (retorno vazio) * main = Nome do método, que é obrigatorio ser este. Recebe como parâmetro um array de String. * String[] args = Array de argumentos que podem ser repassados na chamada do programa. */ public static void main(String[] args) { System.out.println("Olá, Mundo!"); //Imprime na tela a frase } }
Objetos anônimos Podemos ter também objetos anônimos, onde não é necessário instanciar o objeto em uma variável para utilizá-lo. Exemplo: public class MostraBarulho { public static void main(String args[]) { new Cavalo().fazerBarulho(); // Objeto anônimo. // Abaixo um objeto e classe anônimos! new Animal() { public void fazerBarulho() { System.out.println("QUAC!"); } }.fazerBarulho(); } }
Capítulo 6 - A linguagem Java
39
Apostila Desenvolvimento para dispositivos móveis
Classes public abstract class Animal { public abstract void fazerBarulho(); } public class Cachorro extends Animal { public void fazerBarulho() { System.out.println("AuAu!"); } } public class Gato extends Animal { public void fazerBarulho() { System.out.println("Miau!"); } }
O exemplo acima cria a classe Animal e duas classes derivadas de Animal. É importante observar que nas classes derivadas temos a redefinição do método fazerBarulho(). Esta redefinição é classificada como uma sobreposição (override) de métodos. O conceito de sobreposição somente pode ser identificado e utilizado quando temos classes dispostas em um relacionamento de herança. Java não suporta herança múltipla, devido a possibilidade de uma classe pai ter um método com o mesmo nome de outra classe pai, e gerar possíveis falhas ao chamar o método, e todas as classes em Java derivam da classe Object. A única possibilidade de se ver herança múltipla em Java é no uso de interfaces, pois uma classe pode implementar várias interfaces. Classes internas Java pode ter classes internas. Exemplos:
Classes
40
Apostila Desenvolvimento para dispositivos m贸veis
public class Cavalo extends Animal { public void fazerBarulho() { System.out.println("RIINCH!"); } // Classe interna e privada. Existe s贸 no contexto da classe "Cavalo". private class Parasita extends Animal { public void fazerBarulho() { System.out.println("SQRRT"); } } }
Classes
41
Apostila Desenvolvimento para dispositivos móveis
Interfaces Uma interface modela um comportamento esperado. Pode-se entendê-la como uma classe que contenha apenas métodos abstratos. Embora uma classe não possa conter mais de uma super classe, a classe pode implementar mais de uma interface. Exemplo: public interface Pesado { double obterPeso(); } public interface Colorido { Color obterCor(); } public class Porco extends Animal implements Pesado, Colorido { public void fazerBarulho() { System.out.println("Óinc!"); } // Implementação da interface Pesado public double obterPeso() { return 50.00; } // Implementação da interface Colorido public Color obterCor() { return Color.BLACK; } // Uma propriedade só do porco public boolean enlameado() { return true; } }
Interfaces
42
Apostila Desenvolvimento para dispositivos móveis
Capítulo 2 - Interface Gráfica Objetivos da aprendizagem Reconhecer padrões de comunicação da interface gráfica móvel. Identificar componentes de interface gráfica do sistema operacional Android.
Leituras sugeridas MORAES, Anamaria de (Org.).Design e avaliação de interface: ergodesign e interação humano-computador.Rio de Janeiro: iUsEr, 2002. Michael Burton , Donn Felker.Desenvolvimento de Aplicativos Android para Leigos. 2ªedição. Rio de Janeiro, Altabooks 2014. 388 p. ISBN 978-85-7608-848-6 (Precisa comprar) Programando o Android- 2ª Edição. São Paulo, Novatec 2014. 576 p. ISBN: 978-857522-336-9 (Precisa comprar)
Introdução Em informática, interface gráfica do usuário (abreviadamente, o acrônimo GUI, do inglês Graphical User Interface) é um tipo de interface que permite a interação com dispositivos digitais através de elementos gráficos como ícones e outros indicadores visuais, em contraste a interface de linha de comando. Foi criada pela Xerox mas somente se tornou um produto com a Apple. A interação é feita geralmente através de um mouse ou um teclado, com os quais o usuário é capaz de selecionar símbolos e manipulá-los de forma a obter algum resultado prático. Ambiente gráfico é um software feito para facilitar e tornar prática a utilização do computador através de representações visuais do sistema operacional. Para Windows temos apenas o ambiente gráfico padrão, nas versões Windows Vista e Windows 7 temos a chamada Windows Aero. Para GNU/Linux temos vários ambientes gráficos, entre eles, o KDE, Gnome, BlackBox, Xfce, etc..
Módulo 2 - Interface Gráfica
43
Apostila Desenvolvimento para dispositivos móveis
Padrões de design Cada plataforma dita o modelo de design a ser seguido para elaborar a aparência e comportamento de sua interface. A Google, detentora do sistema operacional Android definiu o Material Design, um padrão próprio que serve tanto para sites quanto para aplicativos móveis. Esse design possui os seguintes princípios: 1. Material é metáfora 2. Corajoso, gráfico, intencional 3. Movimento fornece significado
Material é metáfora
Capítulo 7 - Padrões de design
44
Apostila Desenvolvimento para dispositivos móveis
Essa é a teoria unificadora de um espaço racionalizado e um sistema de movimento. O material é fundamentada na realidade tátil, inspirado no estudo de papel e tinta, mas tecnologicamente avançado e aberto à imaginação e magia. Superfícies e bordas do material fornecer dicas visuais que são fundamentadas na realidade. O uso de atributos táteis familiares ajuda os usuários a compreender rapidamente affordances. No entanto, a flexibilidade do material cria novas affordances que substituem aqueles que no mundo físico, sem quebrar as regras da física. Os fundamentos da luz, a superfície, e movimento são essenciais para transportar objectos como circular, interagir, e existem no espaço e em relação uns aos outros. Iluminação realista mostra costuras, divide espaço, e indica partes móveis.
Corajoso, gráfico, intencional
Capítulo 7 - Padrões de design
45
Apostila Desenvolvimento para dispositivos móveis
Os elementos fundamentais de design baseado em impressão - tipografia, grids, espaço, escala, cor e uso de imagens - orientar tratamentos visuais. Estes elementos fazem muito mais do que agradar aos olhos. Eles criam hierarquia, significado e foco. Opções de cores deliberadas, aparência edge-to-edge, tipografia em grande escala, e espaço em branco intencional criar uma interface corajoso e gráfico que mergulhar o utilizador na experiência. Uma ênfase em ações do usuário faz funcionalidade central imediatamente aparente e fornece pontos de interesse para o usuário.
Movimento fornece significado
Capítulo 7 - Padrões de design
46
Apostila Desenvolvimento para dispositivos móveis
Movimento respeita e reforça o usuário como o motor primário. Ações do usuário primárias são pontos de inflexão que iniciam movimento, transformando todo o projeto. Toda a ação ocorre em um único ambiente. Os objetos são apresentados ao usuário sem quebrar a continuidade da experiência, mesmo quando eles se transformam e se reorganizar. O movimento é significativo e apropriado, que serve para concentrar a atenção e manter a continuidade. O feedback é sutil, mas clara. As transições são ef fi ciente ainda coerente. Saiba mais Assista esses vídeos para saber mais sobre como implementar os padrões Tabs and ViewPager (Android Development Patterns Ep 9)
Capítulo 7 - Padrões de design
47
Apostila Desenvolvimento para dispositivos móveis
Arquivos XML de resources Como visto, a classe R é quem gerencia todos os recursos do sistema Android. Outros tipos de arquivos (além de layout) também podem ser caracterizados como de resources. Um exemplo: strings.xml. Arquivo presente em /res/values/strings.xml, pode conter diversas mensagens de texto a serem utilizadas no sistema Exemplo de código: <resources> <string name="msg_verde_e_branco">Texto verde e branco</string> <string name="msg_vermelho_e_branco">Texto vermelho e branco</string> <string name="texto1">Texto campo 1 azul</string> </resources>
Outra utilidade dos arquivos de resources do Android pode ser armazenar diversos atributos de cores.
Capítulo 8 - Arquivos XML de resources
48
Apostila Desenvolvimento para dispositivos m贸veis
Componentes Layout Framelayout LinearLayout TableLayout TableRow GridLayout RelativeLayout
Widgets
Campos de Texto Containers Data e Hora Expert Custom
Cap铆tulo 9 - Componentes
49
Apostila Desenvolvimento para dispositivos móveis
Layout As interfaces da aplicação são definidas em arquivos XML que ficam na pasta res/layout. Todos os arquivos de layout devem ficar nesta pasta, você não pode agrupá-los em outra pasta. A ligação entre a interface em XML e seus elementos com o código Java da activity é feita através de um arquivo especial, com o nome apenas de R.java que fica na pasta gen. Esse arquivo é gerado automaticamente, e você não deve fazer nunca alterações manuais nele. O nome R é como uma abreviação para resources. Exemplo de código: @Override public void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; setContentView ( R . layout . main ) ; }
No exemplo acima, o método setContentView serve para definir qual será o conteúdo da activity. Ao passar como parâmetro R.layout.main estamos dizendo que o conteúdo da activity está definido no arquivo main.xml da pasta res/layout. Existem dois tipos de elementos no XML de um layout, os containers e os widgets. Um container é um elemento que agrega vários outros elementos, sejam eles outros containers ou widgets.
Widgets Widgets são os elementos isolados como textos, botões, caixas de texto, etc. Uma coisa em comum entre todos os elementos XML é que eles precisam obrigatoriamente dos atributos layout_width e layout_height para indicar a largura e altura do elemento, respectivamente. Em vez de valores absolutos (em pixels) é comum ver os valores match_parent para indicar que deve ter a mesma largura do elemento que o contém, ou wrap_content para indicar que deve ter a mesma largura do conteúdo do elemento. Entre os containers temos os seguintes tipos: LinearLayout - possui um atributo orientation que pode receber o valor vertical ou horizontal que indica que os elementos filhos devem ser agrupados na vertical ou horizontal. RelativeLayout - é um layout que permite posicionar os elementos filhos de maneira relativa, um em relação ao outro.
Capítulo 10 - Layout
50
Apostila Desenvolvimento para dispositivos móveis
FrameLayout - é um tipo de layout bem simples, que permite adicionar apenas um elemento. Se adicionar mais elementos, eles irão ser desenhados sobre os outros, parcialmente ou totalmente. TableLayout - como o nome sugere, serve para criar tabelas. Você deve adicionar elementos do tipo TableRow, e nestes elementos adicionar as células que deseja mostrar. Exemplos de código: Linear Layout < LinearLayout xmlns:android = " http: // schemas . android . com / apk / res / android " android:layout_width = " match_parent " android:layout_height = " match_parent " android:orientation = " vertical " > ... </LinearLayout>
Relative Layout
Capítulo 10 - Layout
51
Apostila Desenvolvimento para dispositivos móveis
Exercício - Layout Crie um projeto em branco acessando File > New > New Project em seu Android Studio. Acessando a Paleta de Componentes arraste o componente LinearLayout para a área de design.
Escolha uma cor diferente, aqui usamos a cor
Exercício - Layout
52
Apostila Desenvolvimento para dispositivos móveis
Projeto do módulo 2 Criar uma Aplicação que permita lançar as informações de entrada de uma empresa que presta serviços de manutenção de computadores. Informações tais como o nome do cliente, o equipamento a ser deixado para reparo (spinner), a descrição do problema que o equipamento apresenta, se o produto é novo ou usado (radio), se o equipamento deve ser entregue na casa do cliente, se ele deve ser limpo antes da entrega e se o equipamento deve ser embalado (checkbox). Esta Aplicação deve enviar os dados para outra activity e nesta activity os dados devem ser listados usando o layout de tabela (TableLayout). Os campos para registrar as informações devem ser obrigatórios e devem ser checados quanto ao seu preenchimento. Lembrando que os equipamentos têm um valor básico de reparo, e que cada opção tal como ser entregue em casa, ser limpo ou embalado também tem um valor. Ao ser escolhido uma destas opções os preços da manutenção mais o adicional destes serviços devem ser somados. No momento de apresentar as informações na outra activity este somatório também é necessário ser apresentado.
Projeto do módulo 2
53
Apostila Desenvolvimento para dispositivos móveis
Armazenamento Objetivos da aprendizagem Estruturar e desenvolver a persistência de dados em dispositivos móveis Estruturar e desenvolver a persistência de arquivos em dispositivos móveis
Leituras sugeridas Michael Burton , Donn Felker.Desenvolvimento de Aplicativos Android para Leigos. 2ªedição. Rio de Janeiro, Altabooks 2014. 388 p. ISBN 978-85-7608-848-6
Introdução A API do Android oferece diferentes opções quando se trata de salvar dados para serem usados posteriormente. Qual a opção é mais apropriada depende do tipo de informação que será salva e da disponibilidade que queremos que ela tenha. Existem 4 tipos de armazenamento possíveis: Shared Preferences - É um tipo de armazenamento que utiliza chave/valor indicado principalmente para configurações e dados isolados. SQLite - Banco de dados privado que pode ser utilizado pelo seu aplicativo. É o mais indicado quando temos várias informações com a mesma estrutura, que podem ser organizadas em tabelas e serem consultadas. Internal Storage - armazena na memória interna do aparelho, os dados aqui armazenados são privados da sua aplicação e não podem ser acessados por outros aplicativos ou pelo usuário. External Storage - armazena em um SD, que pode ser externo ou interno do aparelho. Os arquivos armazenados no SD são visíveis para todos, e o usuário pode alterá-los quando conecta o USB a um computador.
Módulo 3 - Armazenamento
54
Apostila Desenvolvimento para dispositivos m贸veis
Armazenamento Local
Armazenamento Local
55
Apostila Desenvolvimento para dispositivos m贸veis
Armazenamento Remoto
Armazenamento Remoto
56
Apostila Desenvolvimento para dispositivos mĂłveis
PreferĂŞncias compartilhadas
PreferĂŞncias compartilhadas
57
Apostila Desenvolvimento para dispositivos m贸veis
Armazenamento em banco de dados Define a Schema and Contract One of the main principles of SQL databases is the schema: a formal declaration of how the database is organized. The schema is reflected in the SQL statements that you use to create your database. You may find it helpful to create a companion class, known as a contract class, which explicitly specifies the layout of your schema in a systematic and self-documenting way. A contract class is a container for constants that define names for URIs, tables, and columns. The contract class allows you to use the same constants across all the other classes in the same package. This lets you change a column name in one place and have it propagate throughout your code. A good way to organize a contract class is to put definitions that are global to your whole database in the root level of the class. Then create an inner class for each table that enumerates its columns. Note: By implementing the BaseColumns interface, your inner class can inherit a primary key field called _ID that some Android classes such as cursor adaptors will expect it to have. It's not required, but this can help your database work harmoniously with the Android framework. For example, this snippet defines the table name and column names for a single table: public final class FeedReaderContract { // To prevent someone from accidentally instantiating the contract class, // give it an empty constructor. public FeedReaderContract() {} /* Inner class that defines the table contents */ public static abstract class FeedEntry implements BaseColumns { public static final String TABLE_NAME = "entry"; public static final String COLUMN_NAME_ENTRY_ID = "entryid"; public static final String COLUMN_NAME_TITLE = "title"; public static final String COLUMN_NAME_SUBTITLE = "subtitle"; ... } }
Create a Database Using a SQL Helper
Armazenamento em banco de dados
58
Apostila Desenvolvimento para dispositivos m贸veis
Once you have defined how your database looks, you should implement methods that create and maintain the database and tables. Here are some typical statements that create and delete a table: private static final String TEXT_TYPE = " TEXT"; private static final String COMMA_SEP = ","; private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + FeedEntry.TABLE_NAME + " (" + FeedEntry._ID + " INTEGER PRIMARY KEY," + FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP + FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP + ... // Any other options for the CREATE command " )"; private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + FeedEntry.TABLE_NAME;
Just like files that you save on the device's internal storage, Android stores your database in private disk space that's associated application. Your data is secure, because by default this area is not accessible to other applications. A useful set of APIs is available in the SQLiteOpenHelper class. When you use this class to obtain references to your database, the system performs the potentially long-running operations of creating and updating the database only when needed and not during app startup. All you need to do is call getWritableDatabase() or getReadableDatabase(). Note: Because they can be long-running, be sure that you call getWritableDatabase() or getReadableDatabase() in a background thread, such as with AsyncTask or IntentService. To use SQLiteOpenHelper, create a subclass that overrides the onCreate(), onUpgrade() and onOpen() callback methods. You may also want to implement onDowngrade(), but it's not required. For example, here's an implementation of SQLiteOpenHelper that uses some of the commands shown above:
Armazenamento em banco de dados
59
Apostila Desenvolvimento para dispositivos m贸veis
public class FeedReaderDbHelper extends SQLiteOpenHelper { // If you change the database schema, you must increment the database version. public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "FeedReader.db"; public FeedReaderDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_ENTRIES); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // This database is only a cache for online data, so its upgrade policy is // to simply to discard the data and start over db.execSQL(SQL_DELETE_ENTRIES); onCreate(db); } public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { onUpgrade(db, oldVersion, newVersion); } }
To access your database, instantiate your subclass of SQLiteOpenHelper: FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext());
Put Information into a Database Insert data into the database by passing a ContentValues object to the insert() method: // Gets the data repository in write mode SQLiteDatabase db = mDbHelper.getWritableDatabase(); // Create a new map of values, where column names are the keys ContentValues values = new ContentValues(); values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id); values.put(FeedEntry.COLUMN_NAME_TITLE, title); values.put(FeedEntry.COLUMN_NAME_CONTENT, content); // Insert the new row, returning the primary key value of the new row long newRowId; newRowId = db.insert( FeedEntry.TABLE_NAME, FeedEntry.COLUMN_NAME_NULLABLE, values);
Armazenamento em banco de dados
60
Apostila Desenvolvimento para dispositivos m贸veis
The first argument for insert() is simply the table name. The second argument provides the name of a column in which the framework can insert NULL in the event that the ContentValues is empty (if you instead set this to "null", then the framework will not insert a row when there are no values).
Read Information from a Database To read from a database, use the query() method, passing it your selection criteria and desired columns. The method combines elements of insert() and update(), except the column list defines the data you want to fetch, rather than the data to insert. The results of the query are returned to you in a Cursor object. SQLiteDatabase db = mDbHelper.getReadableDatabase(); // Define a projection that specifies which columns from the database // you will actually use after this query. String[] projection = { FeedEntry._ID, FeedEntry.COLUMN_NAME_TITLE, FeedEntry.COLUMN_NAME_UPDATED, ... }; // How you want the results sorted in the resulting Cursor String sortOrder = FeedEntry.COLUMN_NAME_UPDATED + " DESC"; Cursor c = db.query( FeedEntry.TABLE_NAME, // The table to query projection, // The columns to return selection, // The columns for the WHERE clause selectionArgs, // The values for the WHERE clause null, // don't group the rows null, // don't filter by row groups sortOrder // The sort order );
To look at a row in the cursor, use one of the Cursor move methods, which you must always call before you begin reading values. Generally, you should start by calling moveToFirst(), which places the "read position" on the first entry in the results. For each row, you can read a column's value by calling one of the Cursor get methods, such as getString() or getLong(). For each of the get methods, you must pass the index position of the column you desire, which you can get by calling getColumnIndex() or getColumnIndexOrThrow(). For example:
Armazenamento em banco de dados
61
Apostila Desenvolvimento para dispositivos m贸veis
cursor.moveToFirst(); long itemId = cursor.getLong( cursor.getColumnIndexOrThrow(FeedEntry._ID) );
Delete Information from a Database To delete rows from a table, you need to provide selection criteria that identify the rows. The database API provides a mechanism for creating selection criteria that protects against SQL injection. The mechanism divides the selection specification into a selection clause and selection arguments. The clause defines the columns to look at, and also allows you to combine column tests. The arguments are values to test against that are bound into the clause. Because the result isn't handled the same as a regular SQL statement, it is immune to SQL injection. // Define 'where' part of query. String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?"; // Specify arguments in placeholder order. String[] selectionArgs = { String.valueOf(rowId) }; // Issue SQL statement. db.delete(table_name, selection, selectionArgs);
Update a Database When you need to modify a subset of your database values, use the update() method. Updating the table combines the content values syntax of insert() with the where syntax of delete(). SQLiteDatabase db = mDbHelper.getReadableDatabase(); // New value for one column ContentValues values = new ContentValues(); values.put(FeedEntry.COLUMN_NAME_TITLE, title); // Which row to update, based on the ID String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?"; String[] selectionArgs = { String.valueOf(rowId) }; int count = db.update( FeedReaderDbHelper.FeedEntry.TABLE_NAME, values, selection, selectionArgs);
Armazenamento em banco de dados
62
Apostila Desenvolvimento para dispositivos m贸veis
Fonte: http://developer.android.com/training/basics/data-storage/databases.html
Armazenamento em banco de dados
63
Apostila Desenvolvimento para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveis com Android Objetivos da aprendizagem Planejar um aplicativo móvel para a plataforma Android. Projetar a interface gráfica do aplicativo móvel. Estruturar o armazenamento de dados do aplicativo móvel. Desenvolver a programação do aplicativo móvel.
Leituras sugeridas ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de.Fundamentos da programação de computadores: algoritmos, Pascal, C/C++ e Java. 2.ed. São Paulo: Pearson Prentice Hall, c2008. 434 p. ISBN 9788576051480 . DEITEL, P.; DEITEL, H.; DEITEL, A.Android: como programar.2. ed. Porto Alegre: Bookman, 2015. Michael Burton , Donn Felker.Desenvolvimento de Aplicativos Android para Leigos. 2ªedição. Rio de Janeiro, Altabooks 2014. 388 p. ISBN 978-85-7608-848-6 Programando o Android- 2ª Edição. São Paulo, Novatec 2014. 576 p. ISBN: 978-857522-336-9
Referências Web Java (linguagem de programação)
Introdução //TODO
Módulo 4 - Desenvolvimento de um aplicativo
64
Apostila Desenvolvimento para dispositivos móveis
Prototipação Prototipação é uma abordagem baseada em uma visão evolutiva do desenvolvimento de software, afetando o processo como um todo. Envolve a produção de versões iniciais protótipos (análogo a maquetes para a arquitetura) - de um sistema futuro com o qual é possível realizar verificações e experimentos, com o intuito de avaliar algumas de suas características antes que o sistema venha realmente a ser construído, de forma definitiva. Um protótipo simula a aparência e funcionalidade do software permitindo que os clientes, analistas, desenvolvedores e gerentes percebam os requisitos do sistema podendo interagir, avaliar, alterar e aprovar as características mais marcantes na interface e funções. Os protótipos podem ser evolutivos ou descartáveis. Na prototipagem evolutiva o sistema surge de evoluções refinadas dos protótipos enquanto um protótipo descartável é usado para descobrir problemas nos requisitos e depois é abandonado. Dentre algumas vantagens da prototipação está a redução de custos no desenvolvimento; participação do usuário no processo de desenvolvimento; facilidade de operação do sistema, uma vez que, os usuários sabem o que esperar através do protótipo; resultados na satisfação mais elevada do usuário; diminuição de equívocos entre usuários e desenvolvedores; esclarecimento de alguns requisitos confusos. Algumas desvantagens no uso de protótipos são: a condução a uma análise insuficiente do software; os usuários esperam um desempenho do software final igual ao do protótipo; os clientes podem tornar-se unidos demais a seus protótipos.
Quando usar? Em muitos casos o cliente define somente um conjunto de objetivos gerais para o Sistema (Software), mas não foi capaz de gerar requisitos definidos, de entrada , processamento e saída, para o sistema (software). Desenvolvedor não tem certeza da eficiência de um algoritmo, ou como ele pode se comportar em um determinado Sistema Operacional,ou durante comunicação com alguma interface, periféricos/componentes; Interação homemmáquina pode não ser aceita pelo cliente, ou seja a interface de comunicação com o aplicação (Software) pode ser confusa ou não usual.
Ferramentas
Prototipação
65
Apostila Desenvolvimento para dispositivos móveis
As ferramentas de prototipagem são utilizadas por muitas empresas durante o processo de prototipação. Algumas utilizam esquemas em papel na análise inicial, para facilitar um feedback concreto dos usuários, e depois desenvolvem um protótipo operacional utilizando sistemas específicos, como ferramentas de construção de ícones, e as técnicas e linguagens de 4ª Geração (4GL). Técnicas de reuso também podem ser empregadas em fases oportunas. O IDE — Integrated Development Environment ou Ambiente de Desenvolvimento Integrado — também pode ser utilizado para a geração de protótipos. O IDE é um programa com características e ferramentas que apoiam o desenvolvimento de software. As linguagens de programação interagem com um ambiente de suporte , os IDE´s, permitindo a geração de protótipos. Os IDE´s permitem que as telas sejam montadas facilmente clicando e arrastando os componentes ao formulário, assim é possível compilar o projeto na linguagem suportada pela IDE e gerar um protótipo desejado. Essas características de programação visual são heranças da maioria das ferramentas de desenvolvimento de protótipos.
Prototipação
66
Apostila Desenvolvimento para dispositivos m贸veis
Planejamento Aqui iremos falar sobre as etapas
Planejamento
67
Apostila Desenvolvimento para dispositivos móveis
Projeto Final Aplicativo para OS (Ordem de Serviço) 1 Grupo 2 Criar uma Aplicação para registrar as informações de um estoque de um pequeno mercado. O pequeno mercado terá um conjunto de informações sobre os produtos que ele comercializa. Dados como o nome do produto, a descrição do produto, sua unidade (caixa, lata, litro, etc) (spinner), se o produto é perecível ou não perecível (radio), se o produto pode participar de promoção, pode ter limite de estoque e/ou o produto deverá ser guardado em local refrigerado (checkbox). Esta Aplicação deve enviar os dados para outra activity e nesta activity os dados devem ser listados usando o layout de tabela (TableLayout). Os campos para registrar as informações devem ser obrigatórios e devem ser checados quanto ao seu preenchimento. Grupo 3 Criar uma Aplicação que permite registrar um pedido de um restaurante. Esta aplicação deve ser pensada como algo que venha a ajudar um garçom a registrar os pedidos de um cliente. A aplicação deve permitir informar o nome do cliente, escolher um prato (spinner), uma bebida (spinner), informar pelo menos duas opções de sobremesa (checkbox), e indicar se irá pagar a vista ou a prazo (radio). Esta Aplicação deve enviar os dados para outra activity e nesta activity os dados devem ser listados usando o layout de tabela (TableLayout). Os campos para registrar as informações devem ser obrigatórios e devem ser checados quanto ao seu preenchimento. Lembrando que os pratos e as bebidas devem ter valores associados a eles (por exemplo, Peixe Frito – R$ 35,00) e que no momento de apresentar as informações na outra activity este somatório também é necessário ser apresentado.
Projeto Final
68
Apostila Desenvolvimento para dispositivos móveis
Apendice Nessa sessão você encontrará assuntos extra.
Apendice
69
Apostila Desenvolvimento para dispositivos móveis
Instalação do Android Studio no Linux
Instalação do Android Studio no Linux
70
Apostila Desenvolvimento para dispositivos móveis
Criação de um dispositivo virtual com o Android Os dispositivos virtuais são emulações de dispositivos reais. Para criar um novo, abra seu Android Studio e acesse através da sequência Tools > Android > AVD Manager o programa que permite o gerenciamento de AVDs. Clique no botão que aparece no canto inferior esquerdo Create Virtual Device para criar um novo dispositivo.
Escolha do modelo físico do dispositivo A lista de dispositivos se agrupa em categorias que diferem quanto á utilização de cada dispositivo: TV, Vestíveis, Telefone e Tablet.
Escolha a opção Phone para visualizar uma lista de todos os telefones possíveis de emular. Note as informações importantes no lado direito da tela contendo o tamanho e resolução da tela, bem como a orientação da mesma.
Escolha da versão da API do Android Criação de um dispositivo virtual com o Android
71
Apostila Desenvolvimento para dispositivos móveis
Escolher a versão da API do Android significa escolher qual versão do sistema operacional seu dispositivo irá executar. Nessa lista só aparecerão as versões que você já baixou pelo seu Gerenciador do SDK (um outro software que baixa bibliotecas e permite que você utilize recursos das versões específicas do Android em seu aplicativo).
Selecione a versão desejada e obtenha informações detalhadas sobre ela como versão do Android.
Configuração do dispositivo
Criação de um dispositivo virtual com o Android
72
Apostila Desenvolvimento para dispositivos móveis
Nessa etapa informações importantes
Criação de um dispositivo virtual com o Android
73
Apostila Desenvolvimento para dispositivos móveis
Exercícios de Fixação Questão 1) Analisando a evolução dos dispositivos móveis, pesquise sobre aparelhos de telefone móvel que contenham memória RAM inferior a 1GB e aponte as restrições. Questão 2) Qual o impacto da evolução dos dispositivos móveis no cotidiano? Questão 3) Quais são as características dos dispositivos móveis? Questão 4) Descreva as diferenças entre as arquiteturas de aplicação móvel em camadas . Questão 5) Descreva a infraestrutura móvel. Questão 6) Um Activity representa uma tela do aplicativo. Escolha qual dos métodos abaixo não são métodos: a)Opção 1 b)Opção 2 c)Opção 3 d)Opção 4 e)Opção 5 Questão 7) Exemplo de questão de associação: Nome
Definição
Camada
Descricão da definição
Camada
Descricão da definição
Camada
Descricão da definição
Camada
Descricão da definição
Camada
Descricão da definição
Camada
Descricão da definição
Exercícios de Fixação
74
Apostila Desenvolvimento para dispositivos móveis
Questão 8) Exemplo de questão de cruzadinha:
Atividade complementar Assista ao vídeo onde explico detalhadamente os fundamentos da mobilidade https://www.youtube.com/watch?v=8OyXYLcr2GQ
Exercícios de Fixação
75
Apostila Desenvolvimento para dispositivos móveis
Glossário A B C CSV – Control Source Version: Sistema de controle de versões de código fonte.
I IDE – Integrated Development Environment: Ferramentas integradas para desenvolvimento de aplicações.
M MVC – Model View Controller: Padrão de projeto que visa a separação das camadas (modelo, visualização e controle) da aplicação.
S SOA – Service-Oriented Architecture: Estilo de arquitetura que visa implementar e disponibilizar as funcionalidades das aplicações em forma de serviços. SDK – Software Development Kit: Kit para desenvolvimento de softwares.
Glossário
76
Apostila Desenvolvimento para dispositivos móveis
Referência Bibliográfica Sites http://developer.android.com - Portal oficial sobre o desenvolvimento para Android, mantido pelo Google e seus colaboradores. https://www.google.com/design/spec/material-design/introduction.html - Artigo oficial falando sobre Material Design https://pt.wikipedia.org/wiki/Prototipa%C3%A7%C3%A3o - Definição de prototipação
Livros LECHETA, Ricardo R. Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK. Ed. Novatec. 2ª ed. São Paulo, 2010. Sommerville, Ian. Engenharia de Software. 6ª ed. São Paulo: Pearson Addison Wesley, 1995. ISBN 85-88639-07-6
Referência Bibliográfica
77