COLETA SELETIVA Utilizando App Inventor -...

94
©Cláudio Medeiros dos Santos 1 COLETA SELETIVA Utilizando App Inventor Não autorizado qualquer alteração de formato ou conteúdo. MATERIAL PROTEGIDO PELA LEI DE DIREITOS AUTORAIS - lei 9610 AUTOR: Cláudio Medeiros dos Santos

Transcript of COLETA SELETIVA Utilizando App Inventor -...

©Cláudio Medeiros dos Santos

1

COLETA SELETIVA

Utilizando App Inventor

Não autorizado qualquer alteração de formato ou conteúdo.

MATERIAL PROTEGIDO PELA LEI DE

DIREITOS AUTORAIS - lei 9610

AUTOR: Cláudio Medeiros dos Santos

©Cláudio Medeiros dos Santos

2

Trabalhando com o APP INVENTOR

Por Cláudio Medeiros dos Santos

Parte do Mini Curso de desenvolvimento Faça Você Mesmo!

© 2017 por Élkia Desenvolvimentos

Proibida a Distribuição

Proibido a distribuição do conteúdo desse

tutorial, seja parcial ou total, fazer copias

parcial ou na totalidade do conteúdo, distribuir

cópias ou qualquer outra forma de divulgação

sem o prévio consentimento do autor.

Este e-book é indicado para quem quer conhecer uma nova

ferramenta de desenvolvimento. Com uma nova Visual e muito

mais dinâmica.

Mais Conteúdo em sua Web Site

Disponibilize este e-book para download em seu web site e ofereça

mais conteúdo aos seus visitantes.

©Cláudio Medeiros dos Santos

3

APRESENTAÇÃO

Google App Inventor é uma ferramenta desenvolvida pela Google que permite a criação de aplicativos para smartphones que rodam o sistema operacional Android,

sem que seja necessário conhecimento em programação.

Segundo Harold Abelson, um investigador do MIT que trabalhou nesse projeto, o objetivo de Google App Inventor é permitir que utilizadores fossem também

criadores e não apenas consumidores.

Com uma interface simples e fácil de usar, o programa foge das linhas de

programação normal e possibilita até mesmo usuários comuns de lançarem seus

aplicativos. Graças ao recurso drag and drop, a programação das aplicações acontece de forma simples e intuitiva.

Interface simplificada

A interface de Google App Inventor é organizada de modo bastante semelhante às IDEs mais comuns, com algumas diferenças que visam uma otimização do

trabalho e melhor entendimento pelo usuário. No lugar de uma árvore de arquivos

do lado esquerdo da tela, por exemplo, a aplicação apresenta elementos que

podem ser utilizados na criação das aplicações, bastando um simples comando de “clique e arraste” para inserir o item desejado no projeto.

Praticidade sem igual

Para fazer uso das ferramentas de Google App Inventor não é preciso instalar

nada no computador. A aplicação funciona de modo inteiramente online,

diretamente de seu navegador. Para utilizá-la, basta ter uma conta de usuário da

Google.

Outros recursos

Google App Inventor disponibiliza também um poderoso editor de código em Java que pode rodar ou ser baixado no computador. Para isso, basta clicar no

©Cláudio Medeiros dos Santos

4

botão “Open the blocks editor” e confirmar a operação. O editor, assim como a

aplicação principal, oferece uma interface simples e agradável de usar Fonte: http://www.techtudo.com.br/tudo-sobre/google-app-inventor.html

©Cláudio Medeiros dos Santos

5

SUMÁRIO

Página

I. Apresentação 3

II. SUMÁRIO 5-6

1- Analisando as plataformas

1.1- A escolha da Plataforma 7

1.2- O projeto 7-9

1.3- Dando um nome ao Aplicativo 9-10

1.4- A tela de desenvolvimento 10

1.5- O Espaço Menu 10-11

1.6- A Aba Pallete 11

1.7- A Aba propriedades e Componentes 11

1.8- O Palco 12

1.9- Estudo de casos 12

2.0 – Registrando dados do projeto 13

2- Projetando o Aplicativo

2.2- Criando a página Principal 14-17

2.3- Criando um logo 17-22

2.4- Incluindo os botões 22-24

2.5- Footer/ Rodapé 25-26

2.6- testando o Aplicativo 26-30

2.7 – A tela Sphash Screen 30-32

2.8 – Blocks 32- 37

3 – O formulário Cadastro de Coleta

3.1- A tela Cadastro de Coleta 39-45

3.2- Linkando a tela principal 45-46

3.3- Eventos do Botão cadastrar 46-48

4- Armazenamentos de dados

4.1 Armazenando os dados

4.2 – Trabalhando com Fusion

Connection

49-50

©Cláudio Medeiros dos Santos

6

4.3 – Google Drive 50-52

4.4- Criando as tabelas 52- 56

4.5 Google Apis 57-64

4.6 Dando Acesso ao Google 64-67

4.7 Gravando os dados 67-74

4.8- testando o Aplicativo 75-76

5- LocalHost

5.1 76

5.2 organizando o espaço dos Blocks 77

5.3 Criando as variáveis e eventos 77-80

5.4 Criando as Consultas 80-82

5.5 Eventos da pesquisa 82-83

5.6 Analisando 83

5.7 Ao inicializar e testando 83-85

6- O Formulário Institucional

6.1 A Tela Institucional 85-86

6.2 A Tela Contato 86-91

6.3 A tela Desenvolvedor 91-92

6.4 A tela Sobre 93

6.5 Finalizando e testando 93

7- Análises do Tutorial 94

©Cláudio Medeiros dos Santos

7

Analisando as plataformas

Podemos ter várias maneiras de desenvolver um aplicativo , sendo elas através

da própria Net, (Fabrica de Aplicativos, google, AppMachine e muitas outras) só

que as mesmas apenas nos dão o mínimo necessário, não atingindo nem

metade do que esperamos desenvolver. Sendo a grande maioria para uso de

redes sociais e no momento que necessitamos de algo mais complexo a mesma

não dão suporte as nossas necessidades (Banco de dados).

www.appmachine.com/pt-pt/

www.fabricadeaplicativos.com.br/

http://appinventor.mit.edu/explore/#

Em contra partida temos muitas plataformas fora da Net, que estão

completamente dentro do que esperamos (Visual Studio, Android Studio,

Apache, Intel XDK e muitos outros). Todos com uma grande gama de apoio aos

desenvolvedores, basta para isso ter tempo e dedicação para estudar as várias

plataformas que estão a nossa disposição.

https://msdn.microsoft.com/pt-br/dn308572.aspx

https://software.intel.com/pt-br/intel-xdk

https://developer.android.com/studio/index.html?hl=pt-br

https://cordova.apache.org

1.1 A escolha da Plataforma

Para esse projeto decidi, trabalhar com o App Inventor do Google,

abrangendo assim uma gama de linguagens (html, CSS, XHTM com Tablelless e

banco de dados Fusion ) Material muito presente no dia a dia dos nossos

alunos, já que os mesmos tem muita afinidade com o material lego e seus

blocos de encaixar.

1.2 O projeto

Abra o Google e conecte-se a sua conta de e-mail para podermos vincular nosso

projeto a sua conta.

©Cláudio Medeiros dos Santos

8

Após esse processo, digite na barra de busca “app Inventor”.

Clique na opção MIT App Inventor e na tela que se abre, selecione Create APP!

ou se preferir, você pode navegar nas telas e descobrir as novidades da

plataforma, e até mesmo tutoriais bem bacana desenvolvidos por vários

desenvolvedores do mundo.

©Cláudio Medeiros dos Santos

9

Caso escolha partir para o desenvolvimento, selecione criar App e na tela que

se abre.

©Cláudio Medeiros dos Santos

10

Selecione Start new Project, essa tela, é onde ficarão armazenado todos os

seus projetos, no momento você apenas verá uma tela em branco, mas não se

preocupe, acredito que você irá preencher essa tela bem rapidinha.

1.3 Dando um nome ao seu Aplicativo

Aproveite para dar um nome bem sugestivo ao seu aplicativo, Apenas utilize

as normas de convenções que são:

Sempre comece com uma letra Maiúscula

Não deixe espaço entre as palavras

Inicie a segunda ou mais palavras com maiúscula, sem deixar espaço

entre elas.

Não utilize acentos nas palavras tais como “(Ç, til, pontos, caracteres

Alphanuméricos)”. Veja o exemplo abaixo

POSITIVO: CacaAsBaleias; LixaoOnLine.

NEGATIVO: Caça AsBaleias, Lixão OnLine

©Cláudio Medeiros dos Santos

11

Não se preocupe se o nome parece esquisito, você poderá fazer as alterações

necessárias logo após criar o projeto.

1.4 A tela de desenvolvimento

Nesse momento você está de posse do espaço do desenvolvedor, vamos antes

de iniciar o desenvolvimento, conhecer um pouco sobre essa plataforma.

1.5 O espaço Menu

Nesse espaço ficam os dados do nosso projeto, e mais 04 opções de navegação,

sendo o mais utilizado o Project e o connect, já que o primeiro, nos leva de

©Cláudio Medeiros dos Santos

12

volta a tela anterior para a escolha de outros aplicativos desenvolvidos, e o

segundo são as opções para teste do nosso aplicativo.

1.6 A Aba Palette

Essa é o espaço que você mais irá utilizar, ele contem todas as

ferramentas que necessitaremos

para o desenvolvimento do nosso

App.

Durante o desenvolvimento,

iremos utilizar as várias abas

disponíveis.

1.7 - A Aba Properties e Components

Esses espaços é aonde iremos renomear e formatar as ferramentas incluídas ao

palco, serão bastante utilizadas.

©Cláudio Medeiros dos Santos

13

1.8 O Palco

Por padrão o AppInventor define a primeira tela como Screen1, as outras você

pode dar o nome que desejar

É nele que faremos a mágica acontecer.

1.9 ESTUDOS DE CASO E ANÁLISE DO PROJETO A SER DESENVOLVIDO

Antes de iniciarmos qualquer projeto, devemos desenvolver o hábito de

escrever e desenhar o que queremos desenvolver, ou seja, o passo a passo,

para que não tenhamos um problema sério ao final. Um dos grandes erros de

muitos desenvolvedores é não documentar seu projeto, e quando o mesmo

precisa retornar para algumas alterações após algum tempo, não se lembra de

todo o processo, perdendo assim horas preciosas para poder entender

novamente a lógica do projeto.

©Cláudio Medeiros dos Santos

14

2.0 Registrando os dados para o Projeto

Devemos ter o bom senso de localizar o problema e achar a solução, só assim

estaremos no caminho correto para um bom aplicativo.

No decorrer do desenvolvimento poderemos acrescentar outros problemas e

novas soluções, mas tenha em mente seu objetivo, e não fuja de sua meta.

Uma boa solução é fazer um cronograma do passo a passo e ir tickando os

passos a passos feitos.

©Cláudio Medeiros dos Santos

15

2.1 Projetando o Aplicativo

2.2 CRIANDO A PÁGINA PRINCIPAL – SCREEN1

Seguindo o nosso passo a passo, devemos desenvolver nossa tela inicial com 4

botões um Cabeçalho, para isso, selecione da aba Layout e arraste para o

palco principal 4 HorizontalArragement e renomeie cada um como segue.

©Cláudio Medeiros dos Santos

16

Renomeie os HorizontalArragement para:

EspacoHeader,

Espaco1

Espaco2

EspacoFooter

Formatando os HorizontalArragement

Para o primeiro espaço Header altere suas propriedades, não se esquecendo de

alterar sua propriedade color para branco ou uma cor que mais lhe agrade.

©Cláudio Medeiros dos Santos

17

A largura (Width) está com a opção Fill parente, ou seja, irá

sempre ficar com a largura do

aparelho. Juntamente com a

centralização horizontal e vertical.

Formatando o Espaço 02 e 03

Para o espaço 02 e 03 , a largura

(Width) deverá ser de 95%, ou

seja não deverá tomar todo o espaço do celular. E com o

AlignHorizontal Centralizado vai

dar uma ótima aparência.

O espaço Footer

O Espaço Footer deve ser igual ao espaço Header

©Cláudio Medeiros dos Santos

18

Problemas na Centralização

Você deve ter notado que ao digitar 95% no espaço 1 e 2 eles não ficaram centralizados

conforme pode ser visto na imagem ao lado.

Solução: Basta selecionar nossa Screen1 e no

AlignHorizontal da Screen selecione Center -

3

2.3 Incluindo um Logo ao nosso projeto

Vamos incluir um logo ao nosso projeto, se por acaso você ainda não tem

nenhuma imagem e gostaria de produzir a sua própria, temos vários sites que

disponibilizam gratuitamente. O meu preferido é o LogoFactory, uma excelente

plataforma para desenvolvimento de seu logo. E melhor ainda é grátis. Basta

escolher uma imagem, digitar o nome do seu aplicativo e fazer download do seu

novo logo.

Obs.: O Flash player deve estar liberado para a produção da sua imagem.

http://www.logofactoryweb.com/default_lg.asp?lg=pt

©Cláudio Medeiros dos Santos

19

Ao final basta fazermos download e será salvo uma imagem .jpg

Para ser utilizada ao nosso projeto.

Incluindo uma imagem ao projeto

Vamos incluir uma imagem ao nosso App, para isso, arraste da Aba

UserInterface

©Cláudio Medeiros dos Santos

20

Na Aba properties inclua a nossa imagem gerada ao projeto clicando em

Image/UploadFile

Obs: Atente para a Aba Components, e verifique se o nosso componente

selecionado é mesmo a nossa Image, aproveite para renomear esse

componente para ImgLogo.

©Cláudio Medeiros dos Santos

21

Logo após a inclusão do logo, altere as propriedades Width e Heigth para um

tamanho razoável, um bom tamanho a meu ver é 75px x75px, mas deixo a

vocês essa escolha.

Atende que nosso logo está ao centro, isso é necessário, pois iremos incluir um

Label com o nome do nosso aplicativo logo ao lado da imagem. Para isso,

arraste 03 Labels e renomeie para.

Esp1

lblTitulo

Esp2

No inicio pode parecer confuso, o uso de 03 label, mas como estamos

trabalhando com celulares e tablets, a centralização se faz necessária.

Alterando as propriedades dos Labels.

Para o Segundo label altere suas propriedades como segue

©Cláudio Medeiros dos Santos

22

Dados

FontSize = 26

Text = Élkoleta

textAlign= Center

TextColor = Cinza Escuro

Para os outros dois Labels apenas deixe em branco os Text e Width para

fillParent, isso irá centralizar nosso texto principal

©Cláudio Medeiros dos Santos

23

2.4 Incluindo os Botões

Arraste para dentro dos espaços 01 e 02 4 botões, lembrando-se de incluir

entre eles um label com seus Text em Branco em Width como FillParent,

Isso fará com que os Botões fiquem centralizados

Alterando as propriedades do Buttons

Antes de mais nada aproveite para renomear os buttons e os labels, conforme

Imagem abaixo.

©Cláudio Medeiros dos Santos

24

Vamos incluir uma imagem em cada button, de preferencia com o tema

escolhido. Um bom site para baixar esses ícones é o

http://br.freepik.com/icones-gratis, mas você pode achar muitos outros de

excelente qualidade.

Formatando os Buttons

Altere as propriedades dos Buttons conforme imagem. Que praticamente são

apenas 03 itens

Largura, altura, e seu Text que deverá estar em branco.

©Cláudio Medeiros dos Santos

25

Para os Labels, deverá ser formatado igual ao Header. Com HorizontalAlign

igual a Fillparent e seu Text em Branco.

Dica:

Você pode centralizar os botões apenas colocando um label antes do buttons

©Cláudio Medeiros dos Santos

26

2.5 Footer

Como queremos que o footer esteja sempre no fim da página, inclua um label

entre os HorizontalArragement e altere seu Height para Fillparent, não

esquecendo de apagar seu text, deixando-o em branco.

Para o espaço do Rodapé, inclua um Label e altere seu texto para algo que

descreva o seu aplicativo.

Aqui no rodapé abre-se uma gama de opções, que deixo a vocês acharem a

melhor forma de utilizar esse rodapé. Uma opção seria colocar os botões de

©Cláudio Medeiros dos Santos

27

redes sociais. Que podemos explorar até o fim do desenvolvimento desse

aplicativo.

Esses botões utilizei imagens tiradas do Google Imagens e alterei suas

propriedades para Width 40px e heigth 40px. Mas as opções são muitas que

podem ser trabalhadas. Esse foi apenas um exemplo das diversas

possibilidades.

2.6 - Testando o Aplicativo

Para o teste do nosso aplicativo, você deve antes de tudo saber que temos

várias maneiras de se fazer esse processo. Um deles, consiste em baixar um

app na PlayStore, apenas digitando na caixa de busca AppInventor. Baixe

esse app em todos os celulares/tablets que você gostaria de testar.

©Cláudio Medeiros dos Santos

28

Depois de feito a instalação dessas App, estamos prontos para o nosso

teste.

Na Aba Menu, selecione Connect e AllCompanion,

Essa escolha, irá criar um QRCode e pelo seu celular você deve escolher a

leitura do QRCode ou digitar o código gerado.

©Cláudio Medeiros dos Santos

29

Note que temos algumas coisas para arrumar, e nada como alguns labels para

o conserto dessa estética apenas alterando o height para Fillparent.

Obs: Note que a partir de agora qualquer alteração feita, são refletidas

automaticamente no celular.

Abuse dos labels para centralizar nosso aplicativo e melhorar sua

estética.

Ao final teste seu aplicativo e faça as alterações que forem necessárias até ficar

com um visual excelente.

©Cláudio Medeiros dos Santos

30

Configurando a tela Principal - Screen1

Vamos configurar a tela principal, para isso configure suas propriedades.

Altere:

AppName = O nome que irá

aparecer no Google Play

Icon = escolha nosso logo.

ScreenOrientation: Queremos que

nosso aplicativo apareça sempre

na vertical, por isso escolha Portrait

Title= O título do nosso aplicativo,

digite Élkoleta.

AlignVertical: Center

Com isso, já podemos salvar e testar nosso aplicativo, atente para o

AlignVertical = Center ele será

necessário para a próxima etapa

Resultado Final

©Cláudio Medeiros dos Santos

31

Resumo: Para inicio de desenvolvimento estamos no caminho da felicidade,

com os principais métodos de construção de um aplicativo visto apenas nessa

primeira tela.. Temos muito ainda a caminhar mas, com esse primeiro passo

já dá uma gama do que é possível fazer com o AppInventor

2.7 Splash Screen

Vamos criar nossa tela de Abertura, conhecida como Splash Screen, temos

muitas maneiras de cria-la, escolhi o que achei a mais fácil de entendimento e

praticidade.

O desenvolvimento

Selecione todos os itens da nossa tela Screen 1 e altere sua propriedade para

Visible false

Faça isso para todos os itens, até que a tela principal fique totalmente em

branco.

Após, inclua um HorizontaArragement, renomeie para EspacoSplash e

altere suas propriedades conforme segue. AlignHorizontal e AlignVertical =

center

©Cláudio Medeiros dos Santos

32

Após esse processo, seu logo deve estar ao centro da tela.

Incluindo um Timer

Para que a mágica possa acontecer, vamos incluir um timer da Aba Sensor,

arraste para o centro da tela e note que o mesmo se posiciona no Rodapé, esse

é um componente Não-Visível, mas será de grande ajuda.

Configurando o Timer

Para as configurações do Timer apenas altere seu TimeInterval para 4000 ou

seja 4 segundos.

©Cláudio Medeiros dos Santos

33

Escondendo a tela Splash

Selecione o Item EspacoSplah e deixe seu status de Visible para False.

Ficando nossa tela em branco novamente. E na sequencia habilite todos os

outros espaços voltando à forma anterior.

©Cláudio Medeiros dos Santos

34

2.8 - Blocks

Nesse momento, estamos entrando em um novo mundo, o de desenvolvimento

e da lógica de programação. Aqui é onde tudo acontece e merece um estudo

aprofundado sobre os eventos que queremos que nosso aplicativo faça.

Clique no botão Blocks no Menu a direita

E na tela que se abre temos um palco e a direita as opções de eventos de cada

item incluído na nossa Screen1.

©Cláudio Medeiros dos Santos

35

Como queremos um evento na nossa tela de inicialização, devemos escolher

nossa Screen1, e localizar o evento de inicialização.

Arraste para o centro do palco nosso evento

Aqui a ideia é que ao inicializar nossos HorizontalArragements da tela Scree1

que estão visíveis, fiquem ocultas e que apenas apareça nossa splash Screen

por 4 segundos, após esse tempo nossa Splah se oculte e apareça nossas

HorizontalArragements novamente.

Selecione nosso EspacoSplah e selecione sua propriedade Visible,

©Cláudio Medeiros dos Santos

36

Arrastando para dentro do nosso Screen de inicialização

Selecione da aba logic o item true

e arraste-o para o espaço após a palavra to.

Ou seja, ao inicializar nosso EspacoSplash estará visível, basta agora

deixarmos os outros espaços como false,

Lembrando que após 4 segundos o estado dos espaços deverão voltar ao

normal, então devemos configurar nosso Clock para fazer esse processo.

©Cláudio Medeiros dos Santos

37

Não há dificuldades já que temos apenas que fazer o mesmo processo só que

agora ao inverso, o que é false passa para true e vice e versa.

Arraste para o centro da tela nosso Clock.Timer. e faça o mesmo processo

invertendo as condições do item visible.

Salve o projeto

©Cláudio Medeiros dos Santos

38

E faça os testes, se precisar altere o tempo do clock para mais ou menos.

Dependendo da sua escolha pode agradar ou não o cliente final.

Erro na Estética da Splash Screen

Percebi que ao inicializar nossa Splah não centraliza, isso se dá as nossas

labels incluídas para a centralização,

Para resolver isso, renomeie as labels (image Acima) e fiz o mesmo processo

como se fosse um Espaço normal. Ficando nossos blocks da seguinte forma.

Com isso o resultado foi bem positivo. E você já está incluso no mundo dos

grandes desenvolvedores com o desenvolvimento de seu primeiro evento.

©Cláudio Medeiros dos Santos

39

3.1 - A tela de Cadastro de Coleta

Para a nossa próxima tela devemos analisar os dados que queremos cadastrar e

quais os dados que queremos pesquisar no momento de se fazer uma pergunta

ao Aplicativo

E nada como desenhar nosso modelo antecipadamente.

Fiz o esboço na Paint, mas pode ser feito até mesmo em uma folha de caderno.

A ideia e fazer o layout seguindo o modelo e na sequencia trabalharmos a parte

de desenvolvimento, utilizando banco de dados para armazenamento dos dados

gravados.

Criando a tela de Cadastro

Na tela inicial clique no botão Add Screen e na tela que se abre de o nome

para nosso formulário CadColeta

©Cláudio Medeiros dos Santos

40

Será aberto um novo formulário em branco que iremos seguir os mesmos

passos do formulário Principal.

Configure esse novo formulário como segue:

Inclua 03 HorizontalArragement e 01 Table arragement para a coleta dos

Dados, e configure conforme a tela Inicial Screen1. Apenas alterando os nomes

dos espaços para:

EspHeader

©Cláudio Medeiros dos Santos

41

EspDados

EspBotoes

EspConsultas

Monte o Cabeçalho utilizando a mesma técnica anterior, com logo, label, e

acrescente um Button para podermos retornar a tela anterior.

Atente para os itens que foram renomeados, dando uma atenção especial ao

Button e a Imagem inserida ao button.

O espaço Dados

Dentro do espaço dados será inserido nossos textBox para o Cadastro do

nosso aplicativo, atente que nossa tabela já vem com duas linhas e duas

colunas, para acrescentarmos mais linhas apenas altere as propriedades da

tabela.

©Cláudio Medeiros dos Santos

42

Inclua um Label para o darmos o nome ao Titulo e um textBox na segunda

coluna, aproveite para alterar os nomes dos componentes.

Poe padrão os Labels são iniciados por Lbl e os TextBox por Txt, assim:

Renomeie para :

LblRua e TxtRua

Aproveite para alterar os dados e de cada item, sendo a propriedade do textBox

com o text em Branco.

Faça o mesmo para o Item cidade:

©Cláudio Medeiros dos Santos

43

Para o Item Estado, vamos incluir outro componente o Spinner, ele irá nos criar

uma caixa com vários itens pré-cadastrados.

Altere o nome do Label e aproveite para renomear os componentes.

Para o item Spinner inclua os dados que queremos que o nosso usuário escolha,

como estamos trabalhando com os Estados, inclua as Siglas de todos os

©Cláudio Medeiros dos Santos

44

estados na propriedade ElementFromString, não esquecendo de incluir uma

vírgula entre as siglas.

Faça o mesmo processo para os dias da coleta. Apenas alterando os dados para

Seg, Ter, Qua. etc.

Ao final você terá sua tela praticamente pronta, basta agora incluirmos 02

buttons no espaço apropriado.

O espaço Botões

Inclua 02 button no espBotoes e entre eles vários Labels para a centralização

dos mesmos.

©Cláudio Medeiros dos Santos

45

Aproveite para renomear os buttons e o labels, desmarcando o text do label

para que o mesmo não apareça.

Inclua 02 imagens de acordo com o tema proposto, inclusão e pesquisa.

O footer

Esse espaço será reservado para o resultado da nossa pesquisa, que será o

tema de outro capítulo, já que existem várias formas de mostrarmos o

resultado de uma pesquisa. No momento deixe apenas como esta.

3.2 Linkando a tela Principal a nossa tela de cadastro

©Cláudio Medeiros dos Santos

46

Retorne a nossa tela principal

Screen1 e selecione nosso Blocks para criarmos um evento ao botão cadastro

de Coleta (BtnCadastrar)

3.3 Criando o Evento do Btncadastrar

Abra o Blocks e selecione o item Click do BtnCadastrar .

©Cláudio Medeiros dos Santos

47

Inclua no Evento do Click do botão o item da Aba Control “Open another

screen”

E arraste para dentro do evento clique do botão

Feito isso, precisamos indicar qual screenName desejamos abrir, que no nosso

caso é o formulário criado CadColeta.

Arraste para o novo item da Aba Text um TextString e digite dentro da caixa o

nome do Formulário criado.

E digite dentro da caixa o nome do Formulário criado.

Com isso já podemos testar nosso aplicativo e verificar se tudo está correto,

Aproveite para fazer o mesmo processo no botão voltar do Formulário

CadColeta.

©Cláudio Medeiros dos Santos

48

Apenas inclua um CloseScreen, pois não queremos deixar na memória a tela

que estamos fechando. Fazendo isso, estamos economizando espaço na

memória do usuário. E torna o aplicativo muito mais ágil.

Salve e faça os testes.

Verifique que o sistema esteja funcionando corretamente e que há necessidade

de se fazer alterações na estética do Formulário CadColeta. E a inclusão de

Labels, entre os espaços resolve todos os nossos problemas. Atente que, quase

não se tem espaço entre os botões e o espaço dados, e um label entre eles

resolveria esse problema.

4.1 O armazenamento dos dados.

Existem várias maneiras de se armazenar os dados, e para se trabalhar com

aplicativos temos algumas opções, algumas não tão boas em comparação aos

bancos desenvolvidos para Desktop.

©Cláudio Medeiros dos Santos

49

Acredito que essas opções podem melhorar em muito no decorrer dos tempos.

Tipos de Armazenamentos

Atualmente temos 05 tipos de armazenamentos

Shared Preferences

Armazena dados primitivos provados em pares chave-valor.

Internal Storage ou Local Storage

Armazena dado privado na memória do dispositivo.

Você pode salvar arquivos diretamente na memória interna do dispositivo.

Por padrão, arquivos salvos na memória interna são privados a sua

aplicação e outras aplicações não podem acessá-las (nem o usuário).

Quando o usuário desinstala a aplicação, esses arquivos são removidos.

External Storage

Armazena dados públicos no cartão de memória.

Os dispositivos compatíveis com o Android suportam o uso de memórias

externas onde você pode salvar arquivos. Essa memória pode ser uma mídia de armazenamento removível (como um cartão SD) ou uma memória interna (não

removível). Os arquivos salvos na memória externa podem ser lidos por

qualquer outro dispositivo ou aplicação e podem ser modificados pelo usuário

quando ele ativar a transferência USB ao conectar o dispositivo com um computador.

Cuidado: Arquivos armazenados na memória externa podem desaparecer se o

usuário montar a mídia em um computador ou remover o cartão, e não existe

nenhuma medida de segurança sobre os arquivos salvos nesse tipo de

memória. Todas as aplicações podem ler e escrever arquivos localizados em memórias externas e o usuário pode removê-los.

SQLite Databases

Armazena dados estruturados num banco de dados privado.

O Android fornece suporte completo a banco de dados SQLite. Qualquer

banco de dados que você criar será acessível pelo nome por qualquer

classe da aplicação, mas não fora da aplicação.

©Cláudio Medeiros dos Santos

50

Network Connection

Armazena dados na web no seu servidor de rede.

Você pode usar a rede (quando disponível) para armazenar e recuperar dados

de seus serviços baseados e web. Para executar operações de rede, use classes dos seguintes pacotes:

Escolhendo a plataforma de banco de Dados

Vimos que temos algumas opções para armazenamento, e para esse curso,

escolhi a Network Connection, e a localhost. Uma por se tratar em algo

bem conhecido das pessoas a “Nuvem”. A vantagem que seus dados sempre

estarão no mesmo local e acessível a qualquer momento, mesmo se você tiver problemas no seu celular os dados estarão sempre preservados. E a Localhost,

para poder dar mais uma opção de escolha a você desenvolvedor.

Escolha qual mais se adapta a sua necessidade. Ou se preferir, você

pode testar os dois ao mesmo tempo e ao final fazer sua escolha.

Network Connection

LocalHost

4.2 Trabalhando com Fusion Conection

Vamos conhecer essa plataforma que para muitos ainda é nova, mas que faz grande sucesso entre os desenvolvedores, por se tratar de algo bem prático e

parecida com o nosso Excell. O maior problema encontrado entre os

desenvolvedores é a conexão entre seu aplicativo e o fusion Conection.

4.3 - O Google Drive

Como estamos trabalhando com o App Inventor, e você já está conectado na

Internet, apenas selecione o nosso Drive.

©Cláudio Medeiros dos Santos

51

Na tela que se abre clique em Novo- Mais – Google Fusion Tables

©Cláudio Medeiros dos Santos

52

Na próxima tela que se abre, apenas clique em Create empty table

E será aberta uma plataforma para a digitação dos valores que queremos

armazenar

4.4 Alterando o nome da Tabela

Clique no nome New Table e renomeie para Elkoleta ou algo que melhor lhe

agrade. Após digitar o novo nome apenas clique em salvar

©Cláudio Medeiros dos Santos

53

Obs: atente que no seu Google Drive, já consta a nossa tabela com o

novo nome, faça a verificação clicando na Aba do Google Drive.

Sabemos que temos que armazenar os dados da (“Rua, Cidade, UF, Dias de Coleta”) nessa ordem, e que todos os resultados deverão ser em formato de

Texto.

Criando a Tabela

Clique em Edit e na sequencia Change columns, para podermos editar nossa

tabela.

©Cláudio Medeiros dos Santos

54

Na tela que se abre altere os dados já cadastrados.

Para o segundo item altere os dados number para Cidade tipo Text.

©Cláudio Medeiros dos Santos

55

Faça o mesmo processo para os itens faltantes e ao final salve nossa tabela.

Atente para as alterações feitas na tabela.

Preenchendo nossa tabela com dados

©Cláudio Medeiros dos Santos

56

De um clique Duplo no campo Rua, ou se desejar Edit rows para

preenchermos nossa tabela com alguns dados.

Ao retornarmos a tela anterior já temos nossos dados gravados com sucesso

Mas, isso é apenas o primeiro passo, temos que conectar nossa tabela ao nosso aplicativo e para isso vamos utilizar de uma plataforma do google pouco

©Cláudio Medeiros dos Santos

57

conhecida de muitos desenvolvedores o Console de Apis do Google ou para

muitos Google Apis

4.5 - Google Apis

Nessa plataforma o Google nos disponibiliza a conexão de até 7 Aplicativos mais do que isso, ou você exclui 01 ou compra mais espaço. Mas para o que

desejamos fazer 7 é mais do que necessário.

Na tela que se abre clique em novo Projeto, apenas clicando na seta ao lado

do logo Google Apis

Digite um nome sugestivo para o nosso projeto e clique em Criar.

©Cláudio Medeiros dos Santos

58

Ao clicar em Clicar em Criar será aberta a biblioteca de Apis

De o nome que será criado o seu projeto no App Inventor

Depois de criado o projeto, temos que pesquisar a Api criada, para isso clique

em Fusion Project

©Cláudio Medeiros dos Santos

59

Isso irá permitir a comunicação com nosso aplicativo, então na próxima tela

basta ativar o Api

Ativar as credenciais

Na tela que se abre, selecione a Credicial, Chave da Conta de serviço.

©Cláudio Medeiros dos Santos

60

Da Conta de serviço que se abre, selecione Nova Conta de Serviço e preencha

conforme Imagem abaixo.

Ao Clicar em criar, selecione na próxima tela Sem Papel.

©Cláudio Medeiros dos Santos

61

Será criada a nota e um download se iniciará com o numero da conta atente

para a senha, você irá utilizar ela em breve. “notasecret”

Instalando o Certificado baixado

Instale o certificado, mas antes guarde esse downloads em uma pasta você

poderá utilizar esse certificado várias vezes, se precisar utilizar outra máquina.

©Cláudio Medeiros dos Santos

62

Local que foi baixado o Certificado

©Cláudio Medeiros dos Santos

63

Ao final teremos nossa aplicação com Certificado

Retorne ao Google drive e você verá um aplicativo Fusion disponível.

Vamos passar permissão para poder gerenciar o banco de dados para isso

retorne ao console developer do apis e clique em gerenciar contas de serviço

©Cláudio Medeiros dos Santos

64

Na tela que se abre atente para o e-mail criado da sua conta, copie para

darmos permissão ao fusion de editar nossa tabela.

4.6 Dando acesso ao Fusion Tables

Retorne ao nosso Google drive e com o direito no arquivo criado, vamos

compartilhar e convidar as pessoas utilizando esse link para ser utilizado pelos

usuários.

Para isso clique com o direito na nossa tabela e em seguida compartilhar

Na tela que se abre, cole o link copiado das nossas credenciais.

©Cláudio Medeiros dos Santos

65

3.5 Não se esqueçam de desmarcar a caixa Notificar pessoas.

Ao final clique em concluído e o processo todo está pronto. Basta agora

informar o App Inventor que nossa Api foi criada utilizando o endereço da nossa

tabela.

Linkando o Fusion com o App Inventor

Abra o app inventor e inclua no formulário CadColeta, o item da Aba Storage

FusionTableControl, ele é um componente Não Visível, por isso ele ira se

posicionar no Rodapé.

©Cláudio Medeiros dos Santos

66

No item FusionTable, configure conforme imagem, trazendo para nossa Key

File , a Biblioteca baixado, ela é o link que fara a conexão a nossa tabela criado

no Google Drive.

No item e-mail, é o mesmo que utilizamos no compartilhamento.

Copie e cole no espaço devido

©Cláudio Medeiros dos Santos

67

Para o ApiKey , iremos pegar o link do nosso aplicativo do Google drive , copie

tudo que estiver após o = e antes da #

Cole na nossa API Key

4.6 Gravando os Dados

Agora que já está tudo configurado, vamos abrir nosso Blocks e fazer a coisa

acontecer. Iniciaremos com a inclusão de uma variável da Aba Variables o

inicialize global.

©Cláudio Medeiros dos Santos

68

Arraste ao Centro da tela e inclua um Text em branco, ele será nossa id de

contato com o FusionTables ,ela é a mesma que colamos na ApiKey.

Arraste para o palco o evento do botão BtnGravar-Click

E do nosso FusionTablesControl o evento de Inserir.

©Cláudio Medeiros dos Santos

69

Vamos indicar ao FusionTablesControl que grave os dados na nossa tabela,

para isso, encoste o mouse na nossa variável ID, e aguarde aparecer as

opções de Get e Set

Escolha o get Global Id e, encaixe no nosso tableId do FusionTableControl,

aproveite para incluir da Aba Text, um text em Branco e um Join. Conforme

imagem abaixo.

Devemos dizer ao FusionControl para incluir os dados na seguintes colunas

Cadastradas na tabela, para isso utilizando de Aspas Duplas “ “ Inclua os nomes

dos nossos campos, separados por uma virgula.

©Cláudio Medeiros dos Santos

70

Vamos agora informar ao FusionTabesControl que as colunas deverão receber

os dados do que for digitado no nossos TextBox, para isso vamos precisar de

mais algumas string no nosso Join, Apenas encoste o mouse na engrenagem e

inclua 08 Strings ao nosso Join.

Obs: O Join tem o poder de concatenar (juntar) valores na ordem que

você necessita.

Feito isso, devemos seguir o mesmo caminho digitado na nossa columns, que é

“Rua”, ”Cidade”, ”UF”, ”DiaColeta”.

Inclua um Text em branco e uma Aspa simples e na sequencia arraste para a

segunda string o textBox txtRua

©Cláudio Medeiros dos Santos

71

Finalizando no próximo TextBox em Branco com Aspa simples e uma virgula

no meio, estamos

Obs: Atente que estamos trabalhando com os TextBox. Cuidado para não

incluir os dados do Label que são muitos parecidos. Esse erro é muito comum

e difícil de encontrar devido à falta de atenção.

Faça o mesmo processo para todos os outros itens conforme imagem abaixo.

Lembrando que estamos trabalhando com Spinner no campo UF e Dias de

Coleta e queremos coletar o que foi selecionado nesses campos.

©Cláudio Medeiros dos Santos

72

E para finalizar vamos dar uma mensagem ao usuário que os dados foram

gravados com sucesso e limpar os textBox para ser liberado a outros cadastros.

Retorne ao design e inclua o componente Notifier ao palco, ele é mais um

componente Não visível. Mas responsável pelas mensagens que daremos aos

usuários.

©Cláudio Medeiros dos Santos

73

Retorne ao Blocks e inclua um ShowAlertNotice,

Juntamente com um Text em branco ao nosso evento click. Digitando dentro

dele uma mensagem de sucesso.

Obs: Aqui poderíamos utilizar um IF Then Else, caso os dados não sejam

gravados, mas isso é material para um próximo tutorial.

©Cláudio Medeiros dos Santos

74

Limpados os dados gravados

Assim como gravamos devemos incluir os dados dos textBox e uma caixa de

texto zerada, veja a imagem abaixo.

Com isso já podemos salvar e testar nosso aplicativo.

©Cláudio Medeiros dos Santos

75

Estou utilizando o próprio emulador do App Inventor. Há muitos tutoriais na

Web ensinando como instala-lo e usa-lo,

Verifique no drive se os dados cadastrados foram salvos.

©Cláudio Medeiros dos Santos

76

Como podemos verificar os dados estão na nossa tabela salva agora basta

partirmos para a coleta desses dados no nosso aplicativo.

5.1 Trabalhando com o banco de dados Localhost

Para o nosso banco local host, apenas abra nosso CadColeta e araste para o

centro um componente chamado TinyDb, ele é um componente não visível. Da

Aba Storage

Aba nosso Blocks e vamos organizar o espaço que nesse momento deve estar

bem poluído.

©Cláudio Medeiros dos Santos

77

5.2 Organizando o espaço do Blocks

Clique com o direito no centro da tela e escolha Collapse Block e na sequencia

Arrange Blocks Verticalmente, com isso já irá dar uma estética bem melhor

ao seu espaço de trabalho.

5.3 Criando a Variável Dados

Inicie criando uma variável e de o nome ColetaDados, e da Aba List inclua a

variável um Create empty list, ou seja vamos criar uma lista de dados em

branco

Eu inclui mais um botão de salvar, a fim de não excluir o que já fizemos, e dei o

nome de CadastrarII ao final do projeto você pode decidir qual banco de dados

mais lhe agrada.

©Cláudio Medeiros dos Santos

78

Retornando ao Blocks Inclua nosso componente ao Palco e dentro dele uma

item da Aba list

Add items to list, ele será responsável de criar nossa lista e enviar os dados

para a lista da nossa variável, então, para isso anexe um get global Coleta

Dados a nossa lista.

Juntamente com os dados dos nossos TextBox.

Vamos armazenar os dados no nosso Banco de dados, passando a rua como

parâmetro, aqui podemos passar qualquer parâmetro

©Cláudio Medeiros dos Santos

79

Agora basta dar uma mensagem de Cadastro Ok e fechar o processo

Simples assim, faça os testes e veja que está tudo funcionando corretamente.

©Cláudio Medeiros dos Santos

80

Agora já podemos criar a tela de pesquisa.

5.4 A tela Relatório

Crie mais uma Screen e de o nome de listaPorRua ou ListaCidade ou algo

que mais lhe agrade.

Aproveite para arrastar para dentro do palco um TinyDb1. Nosso banco de

dados

©Cláudio Medeiros dos Santos

81

Na nossa tela Inclua 02 HorizontalArragement um para o Cabeçalho (Faça o

mesmo processo anterior),e dentro do segundo inclua um ListView

Configure o listView conforme imagem abaixo

E após o listView, inclua um TableArragement para mostrar os dados com 8

labels dentro deles, sendo 04 como Titulo e 04 que serão os resultados,

©Cláudio Medeiros dos Santos

82

demarquei os espaços, mas você pode deixar o Text em branco para não

aparecer os “nnnnn” que coloquei como marcação.

Não se esqueça de renomear os labels.

5.5 O Evento da Pesquisa

Abra nosso Blocks e inclua duas variáveis sendo a primeira com o mesmo

nome do Formulário CadColeta, é dele que estão vindo nossos dados.

E o segundo é a variável irá criar nossa lista.

Montei o processo abaixo e acredito que você não terá dificuldades para

replicar,

©Cláudio Medeiros dos Santos

83

5.6 Analisando

Estamos recebendo os dados da variável Coleta de dados, e incluindo ao

banco de dados, e montando a nossa listView em branco.

Na sequencia pegamos os valores da variável e incluímos os dados aos nossos

labels, na mesma sequencia que foi gravado no CadColeta.

5.7 Ao Inicializar

Selecione nosso Formulário e arraste para o palco o evento de inicialização, e

dentro dele vamos pegar nosso set Global TagDadosII, e inclui-lo ao evento,

note abaixo que estamos pegando os dados do banco de dados e montando

nossa listView com os dados da TagdadosII

Terminando assim nosso relatório, para testar basta digitar o nome de alguma

rua cadastra, e você verá o resultado. Teste e refaça se algo de errado.

©Cláudio Medeiros dos Santos

84

O resultado Obtido com nossa

consulta.

Foi bem satisfatório

Com isso terminamos a parte do cadastro, para edição ou exclusão, você pode

ir direto ao Google drive e fazer as alterações por lá.

©Cláudio Medeiros dos Santos

85

6.1 A tela Institucional

Todo aplicativo, deve ter uma tela Institucional, é nela que o usuário procura

informações sobre suas dificuldades e até mesmo é um excelente local para

fazer sua propaganda.

O nosso layout terá a seguinte forma (Muito parecida com nossa tela Screen1)

não acha...

Para isso crie uma 05 Screen de nome

Institucional

Contato

Sobre

Dúvidas

Desenvolvedor

E monte conforme a imagem acima deixo, os detalhes com vocês, já que foram

visto esse processo de desenvolvimento nas páginas anteriores.

Apenas vou mostrar o espaço blocks que por sinal é bem simples,

©Cláudio Medeiros dos Santos

86

Praticamente ele apenas abre as telas que criamos e um evento do botão

fechar, que retorna a tela principal.

6.2 A tela Contato

Aqui trabalhei com vários horizotalArragement, e deixei invisível , vou detalhar

o passo a passo, acompanhe

©Cláudio Medeiros dos Santos

87

Na abertura da tela irá aparecer o header, e os dois espaços “telefone e E-

mail”.

Atente que iniciei com um label superior, a fim de dar um espaço no

cabeçalho, onde o espaço header já é de conhecimento de vocês, apenas criei

um espaço Dados com um Vertical Arragement e inclui dentro dele 02

HorizontalArragement.

Sendo o primeiro para o telefone de contato e o segundo para enviar um

e-mail para o desenvolvedor.

Ao clicar em uma das opções ira aparecerem o espaço correspondente a

escolha.

A escolha me Ligue

Ao escolher Ligue para mim, irá aparecer o espaço com 02 labels, visualize a

imagem abaixo

©Cláudio Medeiros dos Santos

88

A escolha envie-me um e-mail

Aqui foram trabalhados vários horizontalArragement, para uma melhor estética,

Lembrando que esses dois espaços deverão estar como invisíveis, e só

aparecerão ao clicar nos botões.

©Cláudio Medeiros dos Santos

89

Acrescentando componentes.

Acrescente dois componentes Não visíveis a nossa tela, o Clock já conhecido

nosso é o ActivityStarter1

Criando os Eventos da tela de Contato

Abra nosso Blocks e crie os procedimentos conforme imagem, acredito que

nesse momento vocês não terão dificuldades de reproduzir os eventos.

Inicializamos com as cores dos botões e deixando false os espaços de e-mail e

telefone. Quando selecionamos o botão e-mail, o espaço telefone fica invisível e

©Cláudio Medeiros dos Santos

90

aparece o que escolhemos e vice e versa. E o botão cancelar deixa invisíveis as

duas opções de espaço.

Para o Botão enviar atente ao textos em especial ao caminho

“android.intent.action.VIEW” ele diz que estaremos utilizando o servidor

android como ação do evento de enviar o e-mail.

Faça os testes e os acertos se forem necessários

©Cláudio Medeiros dos Santos

91

Essa mensagem de erro se dá, devido estar utilizando um

emulador, em um aparelho normal

ele irá abrir o e-mail do Google.

6.3 A tela desenvolvedor

Uma tela simples, mas que explana toda a equipe que desenvolveu, coloque

sua foto e suas qualificações nesse espaço.

©Cláudio Medeiros dos Santos

92

©Cláudio Medeiros dos Santos

93

Nota: Não se preocupe com o texto não caber na tela, ao rodar o aplicativo ele

irá se encaixar perfeitamente.

6.4 A tela Sobre o Aplicativo

Uma tela simples que deve conter tudo sobre o aplicativo, como funciona, sua

versão, e qual a finalidade. Uma boa explanação é tudo que o usuário precisa

para avaliar seu aplicativo positivamente.

Idêntico ao anterior, sem muitos detalhes apenas informe o máximo possível de

dados ao usuário.

6.5 Finalizando

Retorne a tela inicial e link todos os botões as telas criadas e faça os devidos

testes e correções se forem necessárias.

Boa sorte nesse novo caminho...

©Cláudio Medeiros dos Santos

94

7.0 Análises do tutorial

Chegamos ao fim desse tutorial, poderíamos produzir muitas coisas para

implementar esse aplicativo, como Mapas de onde estamos, animações, vídeos

explicativos, dar um ranking nas cidades que mais coletam o lixo urbano etc.

Mas, para fins didáticos, e para aqueles que não conheciam nada sobre

desenvolvimento de aplicativos, abre-se um novo mundo de grandes

expectativas e de trabalho. Atente que só estamos produzindo para 01

plataforma “Android” temos no mínimo mais de 12 opções de plataformas e

cabe a você, entrar nesse novo mundo com conhecimento e garra.

Cláudio Medeiros dos Santos Desenvolvedor.net