Desenvolvimento para dispositivos moveis com wind (12)

Page 1


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


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.