UNIVERSIDADE DE TAUBATÉ Proposta de aplicativo cardápio eletrônico para dispositivos móveis...

78
0 UNIVERSIDADE DE TAUBATÉ Fernando Jorge Hial Reis Luiz Felipe Medeiros Jardim Proposta de aplicativo cardápio eletrônico para dispositivos móveis Android

Transcript of UNIVERSIDADE DE TAUBATÉ Proposta de aplicativo cardápio eletrônico para dispositivos móveis...

0

UNIVERSIDADE DE TAUBATÉ

Fernando Jorge Hial Reis

Luiz Felipe Medeiros Jardim

Proposta de aplicativo cardápio

eletrônico para dispositivos

móveis Android

1

Taubaté

2013

Fernando Jorge Hial Reis

Luiz Felipe Medeiros Jardim

Proposta de aplicativo cardápio

eletrônico para dispositivos

móveis Android

Trabalho de Graduação

Interdisciplinar apresentado como

requisito parcial para a obtenção do

título de Engenheiro do curso de

Engenharia de Computação do

Departamento de Informática da

Universidade de Taubaté.

2

Orientador: Prof. Msc. Antonio Ésio

Marcondes Salgado

Taubaté

2013 

Fernando Jorge Hial Reis

Luiz Felipe Medeiros Jardim

Trabalho de Graduação

Interdisciplinar apresentado como

requisito parcial para a obtenção do

título de Engenheiro do curso de

3

Engenharia de Computação do

Departamento de Informática da

Universidade de Taubaté.

Data:

Banca Examinadora

Prof. Msc. Antonio Ésio Marcondes SalgadoUniversidade de Taubaté

Assinatura: __________________________

Prof. Msc. Dawilmar Guimarães de AraújoUniversidade de Taubaté

Assinatura: __________________________

Prof. Dr. José Carlos Lombardi Universidade deTaubaté

Assinatura: __________________________

Dedico este trabalho primeiramente a minha família que

estão sempre do meu lado e me dão o suporte devido, aos meus

amigos da turma de engenharia da computação em especial

4

Fernando, Flávio e Gabriel e também a todos os professores e

mestres que fizeram minha vida acadêmica mais proveitosa em

especial ao professor Toné. Aos meus amigos de infância que

tenho muito apreço e considero-os como uma segunda família, e

a todos que de alguma forma passaram na minha vida e deixaram

um pouco do que sou hoje.

Luiz Felipe Medeiros Jardim

Gostaria de agradecer primeiramente ao meu pai, por

acreditar que seria possível e esta junto comigo em todos os

momentos, juntos nos conseguimos, ao meu filho por ser minha

inspiração para a vitória, a minha noiva que me ajudou nos

momentos que nem eu mesmo acreditava que daria certo, aos

amigos Luiz Felipe, Gabriel e Flavio, no fim formamos uma

verdadeira equipe. A vocês meu muito obrigado.

Fernando Jorge Hial Reis

5

6

“A mente que se abre a uma nova idéia jamais voltará ao seu tamanho

original.”

Albert Einstein

RESUMO

Devido ao crescimento significativo na compra de

smartphones em escalas locais e globais, outra área veio

com imensa força e pra fazer uma nova frente aos avanços

na tecnologia, o mercado de aplicações moveis. Com a

criação de sistemas operacionais que conquistaram os

usuários em sua grande maioria, caso do Android e do iOS

da Apple, os aplicativos têm sido uma extensão de

utilidades, diversão e um facilitador da comunicação e

compartilhamento de informações entre seus usuários.

Através de interesses diversos na criação e divulgação

das aplicações, muitos programadores e desenvolvedores de

grande renome e muitos iniciantes se aventuraram nesse

mercado que se mostrou muito rentável pelo sucesso

gerado. Com o avanço também das redes moveis é possível

hoje em dia ter acesso direto a utilitários como mapas,

internet e serviços de email. A procura por serviços e o

acesso fácil a recursos da rede, fez com que a demanda

7

por aplicações que atendiam a esse requisito fosse muito

maior do que a oferta no mercado. Pensando nisso esse

projeto utilizara as ferramentas necessárias, como o

Android, a computação em nuvem, web services e web site para a

implementação de um aplicativo que facilitará o pedido de

alimentos e a entrega do mesmo. Também propor uma técnica

para que outros trabalhos possam dar continuidade,

ampliando sua área de atuação e tornando o mercado

atingido mais promissor.

Palavras-chave: Android. Web service. Web site. Aplicativos.

ABSTRACT

In reason of increase in the smart phones shopping in local and global scales,

another area came with great strength in order to do a new view of advances

of technology, the market for mobile applications. The creation of operating

systems which dominate the users mostly, such as Android and Apple iOS, the

applications have been one extension of utilities, fun and easy communication

of sharing information between your users. Through the several interests of

8

the creations in show applications, plenty of programmers and developers of

great renown and plenty of beginners go to this Market adventure that

showed great income owing to the success. Nowadays the advancement of

mobile networks became possible to have a direct access to the settings such

as maps, internet and email services. The search for services and the easy

access of network resources made the demand of applications that attended

that requirement bigger than an offer in the Market. Mainly this project will

utilize the necessary tools, such as Android, the cloud computing, web services

and websites for implementation of one application which will make easy the

request of feeding and delivery. Also propose a technique to the others works

in order to continue, expanding your area of performance and becoming the

Market reached more promising.

Key words: Android. Web service. Web site. Applications

Lista de figuras

9

Figura 1 - HTC Dream........................................13

Figura 2 - Gráfico de Smartphones vendidos no mundo.........15

Figura 3 - Camada básica do Android OS......................16

Figura 4 - Arquitetura Android completa.....................17

Figura 5 - Exemplo tela home do Android.....................19

Figura 6 - Ciclo de vida de uma activity.......................20

Figura 7 - Android emulator.................................26

Figura 8 - DDMS em funcionamento............................28

Figura 9 - Janela do Eclipse em execução....................31

Figura 10 - Sala onde se abriga um Data Center.................32

Figura 11 - Esquema de funcionamento do cloud computing........34

Figura 12 - Funcionamento do Windows Azure..................39

Figura 13 - Ciclo de vida do ASP.NET........................41

Figura 14 - Gerenciamento Banco de Dados....................46

Figura 15 - Instalando SDK Android..........................47

Figura 16 - Tela mostra umas das activity sendo criada no

Eclipse.....................................................48

10

Figura 17 - Arquivo XML gerado que mostra as caracteríticas de

uma activity................................................48

Figura 18 - Funcionamento do Google cloud messaging.........50

Figura 19 - Instalação do SDK do Windows Azure..............52

Figura 20 - Criação das Roles dentro do Azure...............52

Figura 21 - Método start e stop.............................53

Figura 22 - Diagrama de funcionamento do protótipo..........54

Figura 23 - Telas da aplicação..............................55

11

Sumário

1 Introdução..............................................102 Conceitos envolvidos......................................122.1 Android.................................................122.1.2 Arquitetura...........................................162.1.3 Componentes e funcionamento de uma aplicação Android. .182.1.3.1 Activity...............................................192.1.3.2 Broadcast Receiver......................................222.1.3.3 Service...............................................222.1.3.4 Content Provider........................................222.1.3.5 Intent................................................232.1.4 Ambiente para desenvolvimento.........................232.1.4.1 Requisitos do Sistema...............................232.1.4.2 Ambientes de Desenvolvimento........................232.1.4.3 Requisitos de Hardware..............................242.1.5 SDK Android...........................................242.1.5.1 Ferramentas.........................................25

12

2.1.6 Eclipse...............................................302.2 Cloud computing...........................................312.2.1 Tipologia.............................................342.2.2 Modelos de implantação................................362.2.3 Windows Azure.........................................372.2.3.1 Modelo de Roles.......................................372.3 Website..................................................392.3.1 HTML..................................................392.3.2 ASP .Net..............................................402.4 Web Service...............................................413 Requisitos................................................424 Solução...................................................456 Conclusão.................................................56Referências.................................................57

1 Introdução

Ultimamente, o mercado no Brasil para desenvolvimento de

aplicações para dispositivos móveis cresceu

significativamente, por meio de diversos sistemas operacionais

disponíveis, como o Android, muitos dos desenvolvedores

encontraram uma boa oportunidade para ingressar de vez no

ramo.

A mobilidade é um quesito muito procurado em todos os

processos da vida moderna, assim a comodidade e também a

segurança que ela nos oferece pode ser um diferencial na

disputa incessante de novas propostas de desenvolvimento de

aplicações. Isso é um fator que as pesquisas apontam e basta

13

andar pouco tempo em qualquer lugar público para notar a

quantidade de pessoas que usam um smartphone.

Grandes empresas estão desenvolvendo celulares e

dispositivos móveis com grande quantidade de recursos e

vantagens para o seu usuário. Além também da tecnologia de

redes móveis que permitem a conectividade aonde quer que a

pessoa esteja. A tendência de compartilhar conhecimento,

fotos, lugares e outras coisas que julgue interessante ficaram

mais fortes com o avanço de redes sociais que acabam

facilitando o contato e a divulgação de tais informações.

Se tratando de sistemas operacionais para smartphones

existem dois grandes concorrentes que lideram o mercado,

Android do Google e o iOS da Apple, ambos detêm grande fatia

do mercado. Existem também outras empresas como a Blackberry e

a Microsoft que ainda caminham em passos curtos na conquista

de usuários. Quando se fala em sucesso financeiro e

repercussão na distribuição de aplicativos, tanto o Google

como a Apple as primeiras opções no início de qualquer

projeto.

Por serem os sistemas operacionais mais usados, qualquer

desenvolvedor que tem a idéia de lançar algum aplicativo,

tende a fazer a escolha de um dos dois. Essa escolha pode ser

influenciada por vantagens e desvantagens que cada um oferece.

O iOS pode ser considerado o primeiro sistema para

smartphone lançado em grande escala no mundo, isso por

diferença de meses, lançado em junho o primeiro iphone

revolucionou o mercado por apresentar um sistema sensível ao

toque e com várias tecnologias embarcadas que transformavam o

14

aparelho em uma espécie de computador pessoal. Todos os

produtos lançados pela marca alcançaram um grande status

comercial e o apelo de consumo imposto pela mídia fez com que

o aparelho se tornasse um sucesso, conquistando muitos

usuários ao redor do mundo.

Para o desenvolvimento de aplicações para IOS, ou para

qualquer coisa que leve a tecnologia da Apple, são necessários

hardwares e softwares que são impostos como padrão pela empresa.

Com muitos recursos e um visual deslumbrante para

desenvolvedores de primeira viagem, ficou muito simples a

criação de aplicativos, porém limitou muitos de adentrar ao

mercado pelo alto custo dos requisitos necessários.

Diferente da empresa de Steve Jobs, fundador da Apple, a

Google propôs uma plataforma de desenvolvimento inteiramente

gratuita e de fácil acesso para qualquer um que pretende se

aventurar no mercado de aplicativos. Através de qualquer PC e

sem a necessidade de pagamento de taxas para divulgação da

aplicação, o Android se tornou uma excelente escolha para

empresários iniciantes nesse ramo.

Por poder também trabalhar em uma linguagem de programação

muito difundida que é o JAVA, acabou sendo uma vantagem

imprescindível para o desenvolvimento do aplicativo proposto

neste trabalho.

Com a crescente procura por serviços na internet como

entrega de alimentos, pedido de táxi, procura de

estabelecimentos o smartphone acabou se tornando uma excelente

ferramenta para essas tarefas. A velha e antiga página amarela

está se tornando um artigo de museu, enquanto os dispositivos

15

conectados a rede conseguem localizar e efetuar as opções de

maneira muito simples e pratica.

A proposta desse trabalho é oferecer um aplicativo que

funcione como uma espécie de lista telefônica, da qual é

possível acessar e escolher estabelecimentos alimentícios e de

outros ramos como serviços de transporte. A intenção é de que

a resposta entre o serviço e o usuário seja quase instantânea

e de simples compreensão.

A crescente procura por comodidade faz com que essa idéia

seja muito bem avaliada entre usuários Android e de outros

sistemas. Alguns já se aventuraram no ramo e se consolidaram

no mercado conquistando clientes fieis que praticamente não

sabem o que fazer se não tiverem a mão o smartphone.

O trabalho foi dividido de uma forma compreensiva citando

e explicando cada passo que foi necessário para o seu

desenvolvimento. A principio as tecnologias abordadas serão o

foque para o bom entendimento dos conceitos utilizados no

projeto, em seguida os requisitos do aplicativo mostrará e

exemplificará como este empreendimento funcionará.

No capitulo solução, serão abordadas as tecnologias que

foram usadas e o porquê da escolha de tais. Finalmente na

conclusão, as observações e considerações que foram analisadas

durante todo este processo.

2 Conceitos envolvidos

Neste trabalho as seguintes ferramentas e conceitos foram

estudados para compor a solução proposta:

16

Sistema Operacional Android para dispositivos

móveis

Computação em nuvem

Web Services

Web Page

Os itens a seguir apresentam cada uma destas ferramentas e

conceitos em linhas gerais, com suas diversas características.

Importante observar que são abordadas tecnologias e conceitos

com especificidades para uso na proposta deste TGI.

2.1 Android

Essa tecnologia foi utilizada devido à sua facilidade de

acesso, suporte facilmente acessível e providenciado de graça.

Além de ter se mostrado em pesquisas o sistema operacional

mais utilizado no mercado e ter uma infinidade de dispositivos

a disposição.

Todos sabem a quantidade de aparelhos celulares que estão

sendo desenvolvidos anualmente. Com a crescente procura pela

modernidade, impulsionada muitas vezes pela mídia que nos

bombardeia com propaganda todos os dias, os aparelhos

celulares são, cada vez mais, a chave para se conectar ao

mundo.

A Tecnologia Android que se concretizou em diversas

grandes empresas do ramo de telefonia, foi desenvolvida a

partir de uma idéia que a Google teve de adentrar nesse

17

mercado, que na época, 2005, estava em evidência com o

lançamento mais recente da Apple. O iphone, como o chamavam,

reinventou o significado de um aparelho de telefonia móvel,

trazendo consigo várias tecnologias inovadoras quase

transformando o celular em uma espécie de computador pessoal.

O sistema iOS, era elegante, eficiente e assim conquistou todo

um mercado.

O Google observando sua rival se dando muito bem com a

venda de produtos, se interessou e buscou formas de criar o

seu próprio celular. Apesar de que já existiam rumores de que

a Google muito antes norteava a idéia de entrar nesse ramo bem

antes do lançamento do primeiro iphone. Então em 2005, muito

antes da tecnologia se concretizar, a Google comprou uma

pequena empresa de Palo Alto (Califórnia) chamada Android.inc,

onde se fazia um sistema que se baseava no núcleo do Linux e a

principio era desenvolvida para ser instalado em câmeras

fotográficas inteligentes. A mente por trás dessa tecnologia

era Andy Rubin, um jovem e promissor programador, que

trabalhava na época para a Carl Zeiss, famosa empresa de

lentes fotográficas.

Rubin aceitou o emprego de coordenador do projeto que a

Google acabara de criar depois de feita à compra de sua Start-

up. Trabalhando sobre o lema de que “A informação não é

somente pra quem paga por ela”, o sistema tinha uma grande

abertura no seu código que poderia fazer com que qualquer

usuário conseguisse modificar e deixar o aparelho de acordo

com suas preferências.

18

Diferente da Apple computers, a Google no final do ano de

2007, quando o aparelho da Apple já tinha sido lançado,

juntou-se a grandes nomes da indústria eletrônica e de

telefonia da época para formar uma aliança forte para oferecer

um Sistema operacional com padrões abertos e de fácil acesso.

Entre as empresas além da própria Google se destacam a HTC,

Samsung e Motorola. Essa união e parceria obteve um nome a OHA

(Open Handset Alliance). A partir disso no ano seguinte foi

revelado, após ser aprovado pela Comissão Federal de

Comunicações dos Estados Unidos, o primeiro aparelho que

rodava o sistema Android. O T-Mobile G1 (ou HTC Dream)

revolucionou o mercado, mostrado na figura 1.

19

Figura 1 - HTC DreamFonte: http://googlediscovery.com/2008/10/22/google-faz-

publicidade-do-t-mobile-g1-em-sua-pagina-inicial/

Apesar de algumas criticas sobre funcionalidade e outros

requisitos, o HTC Dream foi muito bem aceito pelos

consumidores e a população, devido a seu design robusto e

elegante. Porém os engenheiros e programadores já pensavam em

melhorias no sistema, que foi batizado em sua primeira versão

como Android 1.0, isso em 2008, no ano que lançaram a versão

1.1. A partir desta versão e as seguintes começou-se a adotar

o nome de sobremesas que acabou se tornando uma marca

registrada da marca, a versão 1.5 foi nomeada cupcake e as

20

seguintes também adotaram a moda. A mais recente versão a 4.3

se chama Jelly Beam e já confirmou o nome da próxima que será

chamada de Kit-Kat, alusão ao chocolate mundialmente conhecido

(figura 2).

Hoje em dia a Google é dono de grande fatia do mercado de

sistemas operacionais em smartphones. Segundo pesquisa publicada

no ano de 2013 e ilustrada na figura 3, analisando o segundo

trimestre de 2012 e o primeiro trimestre de 2013, 80% de

usuários usam o Android OS (GARTNER). Isso demonstra o grau de

importância do sistema em escala mundial, seus concorrentes

não demonstram qualquer sinal de reviravolta nesse estado.

Muito disso devido ao fato de que vários dispositivos

conseguem rodar seu sistema, possibilitando as empresas um

custo de produção mais barato dependendo da classe da qual

queiram atingir.

Além de todas as vantagens no que visa à questão econômica

do negócio, o Android se destaca pela sua grande quantidade de

apps gratuitos além de incentivar a novos usuários a programar

e inventar outros. Sua conectividade e facilidade de uso

também vêm sendo melhoradas gradativamente. Sua concorrente

mais firme, a Apple, ainda possui um sistema mais fácil e

prático, segundo alguns usuários e testadores, assim sua

grande possibilidade de customização e alterações o faz

superar qualquer design gráfico ou usabilidade de outros

sistemas ficarem bem abaixo das expectativas.

21

Figura 2 - Gráfico de Smartphones vendidos no mundoFonte : http://www.tech-thoughts.net/2013/08/smartphone-market-share-trends-by-country-q2-2013.html#.Ukx3MyRwrlk

2.1.2 Arquitetura

O Android como qualquer sistema operacional, é dividido e

interligado em três estados ou grupos, como pode ser

verificado na figura 4:

22

Figura 3 - Camada básica do Android OSFonte: http://criseoperacional.wordpress.com/tag/arquitetura-

de-um-sistema-operacional/

O Hardware é responsável por fazer o processamento e

análise de todas as tarefas proposta pelo usuário. A interface

seria o produto final do sistema operacional, que por sua vez

é ligado a um Kernel juntamente ao hardware do equipamento, esse

meio é a base onde esse software está sendo executado.

A figura 5 traduz de uma forma bem simplificada o que

seria o funcionamento de um SO Android.

23

Figura 4 - Arquitetura Android completaFonte: MEIER, Professional Android 4 Application Development,

2012

Kernel: O Kernel do Android OS é o Linux, todas as funções

que são exercidas, no que diz respeito a hardware, são

administradas através dele. Obviamente o Kernel foi aprimorado

para se adaptar melhor as condições e peculiaridades que um

aparelho móvel apresenta. Devido a essa melhoria, o desempenho

e consumo de energia para estes aparelhos ficam em um nível

considerado ideal para uso e distribuição do software no mercado

e nas empresas.

Libraries: A camada de bibliotecas possui todos os

requisitos mínimos para abrigar as linguagens de programação C

24

e C++, reprodutores de áudio, banco de dados SQLite, OpenGL

ES, gráficos 2D e 3D, além de possuir uma subcamada chamada de

RunTime.

Android Runtime: Nesta se encontra a máquina virtual Dalvik,

criada e gerada toda vez que uma aplicação é executada pelo o

usuário. Diferente das tradicionais “máquinas virtuais”, JVM,

esta foi criada por engenheiros da Google para aperfeiçoar e

garantir maior desempenho dos aplicativos, que estão sendo

usados. Abriga a Core Libraries, da qual disponibiliza uma API

Java utilizada para a programação de aplicativos, que pode ser

instalado na versão do sistema em que esteja sendo utilizado.

Application framework: A camada fornece aos desenvolvedores

as API’s para criação de aplicações autenticas do sistema.

Permite o acesso ao sistema pelo desenvolvedor, tirando

vantagem das capacidades de processamento do Android e que

suportem recursos quando estiver criando seus App’s. A camada

pode ser denominada como um conjunto de ferramentas

necessárias para o desenvolvimento de aplicativos.

Applications and Widgets: aqui se encontram todas as funções

consideradas básicas para o uso do sistema Android, como fazer

ligações, acesso ao browser ou a agenda de contatos. Roda em

cima da camada Runtime, utilizando todas as bibliotecas,

classes e componentes localizadas e disponibilizadas pelo

framework de aplicações.

25

2.1.3 Componentes e funcionamento de uma aplicação Android

O Android é um sistema operacional que gerencia seus

recursos, mas apenas parte do ciclo de duração de uma

aplicação está sendo controlada pelo próprio sistema. Todas as

rotinas como abertura, fechamento ou reações realizadas pelo

aplicativo, são necessariamente administradas pelo

desenvolvedor. A tela home é o primeiro aplicativo quando o

aparelho é ligado, nele se apresetam outras aplicações que

podem ser rodadas em segundo plano no sistema. Na figura 6

pode-se ver como se aparenta a tela home.

26

Figura 5 - Exemplo tela home do Android

Existem alguns componentes que são necessários para o

Android executar seus aplicativos, que nos sub-capítulos

seguintes serão abordados.

2.1.3.1 Activity

Uma atividade (Activity ) pode ser relacionada com a tarefa

que determinado aplicativo pode executar como uma lista de

nomes, uma tela de login e qualquer coisa que envolva o

27

funcionamento da aplicação. Para desenvolvedores de C# por

exemplo, a Activity, pode ser entendida como um Form.

É o componente mais ordinário de uma aplicação Android,

toda vez que é requisitada uma activity ela consegue retornar até

mesmo outra activity dependendo do que está sendo chamado, por

exemplo, uma foto. A interface gráfica pela qual usuário e o

sistema se comunicam é propriamente uma activity. A figura 7

ilustra um exemplo de uma figura que diagrama o ciclo de vida

de uma atividade.

28

Figura 6 - Ciclo de vida de uma activity

Cada fase possui um evento que será executado, e abaixo

será compreendido cada um desses eventos.

onCreate( ): Evento executado quando a activity é criada. Aqui

se inicializam os objetos e todas as variáveis que o

29

aplicativo necessita. Sempre vem acompanhada dos métodos

onStart().

onStart( ): Chamada quando a aplicação se torna visível para

o usuário. Acompanhada pelo método onResume() se a activity aparece

em primeiro plano ou pelo métodos onStop() se ela se torna

oculta.

onResume( ): Chamada quando começa a interação com o

usuário. Neste momento a activity está no topo da fila de

processos e o usuário estará manipulando o aplicativo. Sempre

vem seguida do método onPause().

onPause( ): Chamada quando é preciso retomar uma atividade

anterior. Muito usada para salvar dados, parar animações e

qualquer outra coisa que possa ocupar a CPU do aparelho

salvando e economizando bateria com isso. Sempre vem seguida

do método onResume() quando esta atividade vem em primeiro plano

e visível para o usuário, porém se ela continuar em estado

invisível o método onStop() é chamado.

onStop( ): Chamada quando a atividade já não é visível para

o usuário, porque outra atividade foi retomada e está

ocultando o mesmo. Isto pode acontecer ou porque uma nova

atividade está sendo iniciada, e uma nova atividade foi

sobreposta na pilha, ou a atividade está sendo destruída.

Normalmente vem acompanhada do método onRestart(), se esta

30

atividade voltará ao usuário ou o onDestroy() se ela for

descartada.

onRestart( ): Chamada depois que sua atividade foi

interrompida, antes de ser iniciada novamente. Sempre seguido

por onStart ().

onDestroy( ): Sempre chamada antes que a activity seja

destruída. Isso acontece se essa atividade está terminando ou

porque o sistema está destruindo essa instância para poder

economizar espaço na memória. Chamando o método isFinishing() o

desenvolvedor consegue distinguir por qual motivo essa

atividade foi destruída.

2.1.3.2 Broadcast Receiver

Broadcat Receiver (Recebedor de eventos), é um objeto que

responde a algum aviso enviado, que pode se originar do

próprio sistema. Alguns avisos podem se originar do próprio

sistema Android e outros de aplicativos que estão sendo

executados. A quantidade de Broadcast Receiver de uma aplicação

fica a critério do desenvolvedor.

As ações que este objeto utiliza para alertar o usuário

pode ser em forma sonora, vibrar, luz indicadora, push e até

mesmo chamar uma activity se o aplicativo concernir dessa forma

(Google, 2013).

31

2.1.3.3 Service

O serviço sempre roda em background por não possuir uma UI

(User Interface – Interface do usuário). Todos os processos que

precisam continuar ativos no sistema como downloads da rede,

escutar música, entrada e saída de arquivos e muitos outros.

Em segundo plano o sistema roda esses serviços enquanto o

usuário pode fazer uso de outro aplicativo.

2.1.3.4 Content Provider

Os provedores de conteúdo (Content Provider) gerenciam o

acesso a um conjunto estruturado de dados. Eles encapsulam os

dados e fornecem mecanismos para a definição e segurança dos

dados. Os provedores de conteúdo são a interface padrão que

conecta dados em um processo com o código em execução em outro

processo.

Componente muito necessário quando a aplicação deseja

compartilhar os dados com outras aplicações, sem programar sua

própria provider o aplicativo não realizará a transmissão de

dados que foi proposta. O Android já disponibiliza em sua

classe android.provider, diversos contentes providers para gerenciar

dados como áudio, vídeo e informações de contatos.

2.1.3.5 Intent

Consiste em uma ação, sendo ela um evento ou uma

requisição. A intenção de enviar um e-mail é um bom exemplo de

como a Intent é usada, sempre demonstrando a necessidade e o que

tal aplicação quer fazer. No sistema Android a grande maioria

32

de ações é feita por meio das Intents, sendo absolutamente comum

sua reutilização em várias fases do processo. A partir delas o

desenvolvedor consegue chamar outras aplicações através de

Actions, se comunicar com outras aplicações e enviar e receber

dados.

2.1.4 Ambiente para desenvolvimento

Com a arquitetura e todo o processo de entendimento do

sistema Android, agora será explanado todo o processo para que

o desenvolvedor consiga gerar suas próprias aplicações.

Abordando requisitos de hardware, ambiente de desenvolvimento,

SDK Android, Ferramentas do SDK e por final a IDE Eclipse.

2.1.4.1 Requisitos do Sistema

Os seguintes sistemas operacionais, citados abaixo,

suportam o desenvolvimento para Android segundo o Google:

Windows XP (32-bits) ou Vista (32 ou 64-bits);

Mac OS X 10.4.8 ou superior (somente arquitetura

x86);

Linux

2.1.4.2 Ambientes de Desenvolvimento

Segundo a documentação existente no Google e no kit

oferecido para download nele já é incluso e indicado o uso da

IDE Eclipse.

33

Abaixo segue os itens que acompanham a pasta do download:

Eclipse IDE5- Eclipse 3.4 (Ganymede) ou 3.5

(Galileo);

Eclipse JDT plugin;

JDK 5 ou JDK 6 - Java Development Kit;

Android Development Tools plugin (ADT).

Para outros ambientes de desenvolvimento:

JDK 5 ou JDK 6 - Java Development Kit;

Apache 1.6.5 ou superior para Linux e Mac, 1.7 ou

superior para Windows.

2.1.4.3 Requisitos de Hardware

De acordo com a Google, para o pacote básico do kit de

desenvolvimento, são necessários 600MB de espaço em disco. Com

cada versão anexada do Android será acrescentado mais 100MB.

2.1.5 SDK Android

O “software development kit” é distribuído pelas empresas para

que seus desenvolvedores se igualem na hora de criar suas

aplicações e programas a determinado sistema o qual estão se

ambientando. A Microsoft tem como exemplo de SDK, a Platform,

34

onde ela embutiu suas documentações, códigos e utilitários,

ajudando o desenvolvimento para o seu software.

A Google disponibiliza, assim como a Microsoft, o seu

próprio kit de desenvolvimento para os seus programadores e para

todos que queiram aprender a fazer seus aplicativos. O SDK

Android possui diversos componentes imprescindíveis e

importantes em todas as etapas na construção de aplicações,

nestas se incluem:

Bibliotecas necessárias;

Debugger;

Um emulador;

APIs;

Código fonte exemplo;

Tutoriais para Android OS.

Todas as vezes que a Google está prestes a lançar uma

versão nova de seu sistema operacional, juntamente é lançado o

SDK próprio para plataforma. Desenvolvedores podem optar e

programar seus aplicativos para todas as versões existentes do

Android. Após a versão 1.6, diversos tamanhos e densidades de

tela são facilmente manipulados, fazendo toda a diferença no

que diz respeito ao sucesso no mercado do App proposto.

O emulador é de grande valia para testes e adaptabilidade

a diferentes aparelhos. O SDK mais recente possui as

bibliotecas de todas as versões anteriores, além de conseguir

emular diversos aparelhos que possui no mercado.

35

2.1.5.1 Ferramentas

Dentro do kit de desenvolvimento da Google, o desenvolvedor

encontra todas as ferramentas necessárias para elaborar seu

aplicativo. A seguir são descritas todas as ferramentas que o

SDK possui:

Android Development Tools

Plugin necessário para a IDE do Eclipse reconhecer e se

adaptar ao ambiente de desenvolvimento Android.

Android Emulator

Emula um dispositivo Android dentro do ambiente de

programação. Muito útil aos desenvolvedores para testes e

adaptabilidade em diversas plataformas. Baseado em QEMU,

utilizado para emular máquinas virtuais Linux. A figura 8

mostra a aparência do Android Emulator.

36

Figura 7 - Android emulatorFonte: http://www.herongyang.com/Android/Android-SDK-17-

Android-Emulator-Built-in-Application.html

Android Virtual Devices

O AVD configura e gerencia os dispositivos virtuais. Aqui

o desenvolvedor consegue colocar padrões em seu protótipo,

como a capacidade de memória, o uso de cartão de memória, a

versão do Android entre outros.

Hierarchy View

37

Altamente útil quando o desenvolvedor necessita ampliar e

melhorar a interface com seu usuário. Através de grades

sobrepostas é possível fazer ajustes em determinados

componentes, para que se torne a disposição de fatores mais

fiel ao que o programador propõe.

Layoutopt

Funciona como um recurso automático quando se elabora

layouts, otimizando-os e tornando-os mais eficientes.

Draw 9-patch

Ajusta automaticamente uma imagem do tipo bitmap e acomoda

o conteúdo que o desenvolvedor colocou na tela. Um exemplo

seria um botão ou até mesmo um fundo de tela, lembrando sempre

que a extensão desse arquivo deverá ser “.PNG”.

Android Debug Bridge

Ferramenta utilizada para fazer a conexão entre o terminal

de desenvolvimento para o dispositivo ou simplesmente ao

emulador. Serve também como um instalador de aplicações com

extensão “.apk”.

Android Asset Packaging Tool

38

Gera os arquivos necessários para a instalação da

aplicação em qualquer dispositivo que rode o sistema

operacional Android.

Dalvik Debug Monitor Service

Ferramenta de depuração já inclusa no SDK que fornece

utilidades, tais como a captura da tela no emulador e a

transforma em arquivo de imagem, gerando spoofing de SMS,

ligações, informações do estado de rádio e muito mais. A

figura 9 mostra um DDMS em funcionamento:

Figura 8 - DDMS em funcionamentoFonte: http://www.devx.com/wireless/Article/39972/0/page/3

Android Interface Definiton Language

39

Responsável pela comunicação entre cliente e um service, No

Android não é possível ter acesso à memória de outro processo,

por isso é necessário criar um AIDL para que essa chamada seja

atendida. Isso é muito difícil de ser escrito, por tal motivo

o programador apenas cria uma interface AIDL com extensão “.aidl”

e também uma classe que implementa os métodos declarados na

interface.

SQLite3

Possibilita o acesso ao banco de dados da aplicação

criada, manipulando-o, criando tabelas ou removendo-as,

fazendo inserções e alterações entre outras modificações na

base de dados.

Traceview

Traceview é um visualizador gráfico para os logs de execução

salvos pela aplicação. Traceview pode ajudar a depurar o

aplicativo e o perfil de desempenho.

MkSdcard

40

A ferramenta mksdcard permite que rapidamente se crie uma

imagem de disco FAT32, que o desenvolvedor pode carregar no

emulador, para simular a presença de um cartão SD no

dispositivo. Esta ferramenta cria um cartão SD que não vem com

um AVD, assim torna-se útil por isso é útil para situações das

quais é preciso compartilhar um cartão SD virtual entre vários

emuladores.

DX

Responsável por transformar o bytecode Java em um bytecode

Android, sendo assim reconhecido pelo sistema.

UI/Application Exerciser Monkey

É um programa que é executado no emulador ou dispositivo e

gera fluxos de “pseudo-aleatórios” eventos do usuário, como

cliques, toques ou gestos, bem como uma série de eventos em

nível de sistema. Pode-se usar o Monkey para aplicações de

testes de esforço de forma aleatória, mas repetitiva.

Zipalign

Zipalign é uma ferramenta de alinhamento de arquivo, que

oferece uma otimização importante para a aplicação Android.

Especificamente, ele faz com que todos os dados não

comprimidos dentro do Apk, como imagens ou arquivos, sejam

alinhados em limites de quatro bytes. Isso permite que todas

41

as partes possam ser acessadas diretamente com mmap (), mesmo

que contenham dados binários com restrições de alinhamento. O

benefício é a redução na quantidade de RAM consumida durante a

execução do aplicativo.

2.1.6 Eclipse

Criado pela IBM e doado como software livre. A IDE mais

usada para desenvolvimento em linguagem Java hoje em todo

mundo, foi adotado pela Google, por dois motivos:

- Possui as melhores características para se desenvolver

aplicações Java, isto por ser aberto, respeitando a máxima

criada pela a aliança firmada entre os fabricantes e a própria

Google;

- O plugin já feito especialmente para se desenvolver

aplicações para Android na IDE do Eclipse, colaborou muito

para que o aprendizado de iniciantes fosse mais simples e que

cada vez mais programadores tivessem incentivos para investir

em tal mercado.

Além de ser multiplataforma possibilitando usuários de

Windows, Linux ou Mac terem as ferramentas com maior

disponibilidade e facilidade quando usada. Abaixo a figura 10

ilustra a janela da IDE do Eclipse.

42

Figura 9 - Janela do Eclipse em execuçãoFonte:

http://pt.wikipedia.org/wiki/Ficheiro:Eclipse33_Ubuntu.png

2.2 Cloud computing

Neste trabalho foi utilizada a tecnologia de cloud computing.

O conceito de cloud computing é relacionado ao conceito de grid

computing, que representa vários computadores ligados por

acoplamento. Neste conceito a recursão é escalonada dependendo

da necessidade do usuário, não necessitando a aquisição

antecipada de novos recursos e assim reduzindo custos

desnecessários.

43

Este ambiente é criado utilizando uma imensa rede de

computadores, tanto físicos quanto virtuais, isso seria igual

a ter recursos “infinitos” como capacidade de processamento,

memória, armazenamento, aplicações e serviços.

Esse conceito é a virtualização do data center, por isso

algumas empresas conseguem minimizar consideravelmente seus

investimentos em uma possível compra de um data center, a figura

11 abaixo mostra a complexidade de um data center.

Figura 10 - Sala onde se abriga um Data Center

Empresas como Microsoft, Google e Amazon criaram grandes

centros computacionais, entrando no ramo de venda de serviços

de computação em nuvem, como máquinas virtuais, base de dados,

44

servidores de websites, armazenamentos de arquivos entre outros

serviços.

A computação em nuvens deve crescer gradativamente nos

próximos anos. A necessidade de infraestruturas cada vez mais

poderosas faz com que esses serviços possam ser escalonados a

qualquer momento, tendo seu custo muito menor do que a

aquisição de novos hardwares, e até mesmo softwares.

Empresas podem reduzir sua demanda em infraestrutura, pois

podem obter uma elasticidade para aumentar ou diminuir seu

“poder computacional”, conforme as necessidades existentes no

momento. Em muitas destas empresas que fornecem esses

serviços, isso é feito em realtime, às vezes podendo ser

colocadas no próprio algoritmo da aplicação, para se expandir

caso seja necessário, isso representa ter a capacidade pelo

que é usado, desta forma pagando pelo que realmente é

necessário e assim diminuindo o espaço físico para data center e

o custo com energia elétrica e refrigeração, além da mão de

obra para manutenção, reduzindo assim significativamente o

custo com a operação de TI.

Essa mudança não vai ocorrer de maneira simples, ou seja,

do dia para noite, mas é possível ter a computação em nuvens

associada à infraestrutura que a empresa já possui. Grandes

empresas ainda têm receio de usar recursos fora do seu

ambiente, muitas vezes por medo do roubo de informações

confidenciais, por isso empresas do ramo da computação em

nuvens estão investindo em segurança da informação para

fornecer um ambiente seguro e garantir um serviço de qualidade

e confiabilidade que possa ser adotado por grandes empresas.

45

Com a evolução da tecnologia, precisa-se cada vez mais

aumentar a capacidade do Data Center, para que suporte aplicações

e serviços. Também com a globalização as empresas estão muitas

vezes em espaços físicos espalhados pelo mundo, necessitando

que a informação seja em realtime.

Assim um novo modelo de gerenciamento de informação

precisa ser implementado, é onde entra a computação em nuvens,

que pode facilitar a conexão entre essas informações, dados,

aplicações e serviços. Migrar totalmente para o ambiente em

nuvem ainda não é fácil, mesmo que a empresa tenha um processo

rodando em um ambiente físico, para migrar para o ambiente em

nuvem essas programações devem ser escritas de maneira

diferente, ou seja, pensando no ambiente em nuvem e não mais

feitos pensando no ambiente físico e estático.

A nuvem liga computadores diferentes, com sistemas

operacionais distintos, trabalhando em conjunto como se fossem

um único data center. Essa integração é algo difícil e complexo,

que com a ajuda de grandes empresas se torna possível e

acessível a qualquer usuário. Abaixo a figura 12 exemplifica o

conceito cloud computing.

46

Figura 11 - Esquema de funcionamento do cloud computing

2.2.1 Tipologia

A computação em nuvem pode ser dividida em sete tipos ou

grupos, que são:

IaaS

47

Infrastructure as a Service, utiliza uma pequena parte do total de

um servidor, geralmente se adequando às necessidades do

usuário.

PaaS

Plataform as a Service, utiliza apenas uma plataforma como banco

de dados ou web service, um exemplo o Windows Azure.

DevaaS

Development as a Service as ferramentas de desenvolvimento

aparecem no cloud computing como ferramentas compartilhadas,

ferramentas de desenvolvimento web-based e serviços baseados em

mashup.

SaaS

Software as a Service, usa um software em regime de utilização

web, exemplo Google Docs, Microsoft SharePoint Online.

CaaS

48

Communication as a Service é o uso de uma solução de

Comunicação Unificada hospedada em Data Center do provedor ou

fabricante um exemplo o Microsoft Lync.

EaaS

Everything as a Service se utiliza tudo, infraestrutura,

plataformas, software, suporte, enfim, o que envolve T.I.C.

(Tecnologia da Informação e Comunicação) como um Serviço.

DBaas

Data Base as a Service funciona utilizando a parte de servidores

de banco de dados como serviço.

2.2.2 Modelos de implantação

Os modelos de implantação de cloud computing são

determinados, a partir da necessidade de um usuário na sua

infraestrutura de TI. A limitação de usuários que conseguem

acessar certos dados pode ser um fator determinante na escolha

de um modelo.

Privado

Esse modelo é elaborado para atender apenas um usuário ou

empresa, assim se consegue ter controle total sobre o que está

sendo executado dentro da nuvem. Em geral o modelo privado

necessita de um data center privado também.

49

Público

A nuvem pública permite que qualquer usuário consiga

executar suas aplicações dentro dela. Se encontrando em um

espaço muito bem doutrinado em quesitos como segurança, este

tipo de modelo pode ser muito útil para empresas que

disponibilizam este tipo de serviço.

Comunidade

A infra-estrutura de nuvem é compartilhada por diversas

organizações e suporta uma comunidade específica, que partilha

as preocupações por exemplo, a missão, os requisitos de

segurança, política e considerações sobre o cumprimento. Pode

ser administrado por organizações ou por um terceiro e pode

existir localmente ou remotamente.

Híbrido

Nas nuvens híbridas tem-se uma combinação dos modelos de

nuvens públicas e privadas, permitindo que uma nuvem privada

possa ter seus recursos ampliados a partir de uma reserva de

recursos em uma nuvem pública. Essa característica possui a

vantagem de manter os níveis de serviço, mesmo que haja

flutuações rápidas na necessidade dos recursos. A conexão

entre as nuvens pública e privada pode ser usada até mesmo em

50

tarefas periódicas, que são mais facilmente implementadas nas

nuvens públicas, por exemplo.

2.2.3 Windows Azure

A Microsoft criou a plataforma Windows Azure, que possui

recurso para computação, hospedagem de aplicação,

gerenciamento e armazenamento de dados de alta escalabilidade.

Esses recursos podem ser utilizados por aplicações

hospedadas no próprio Windows Azure, que permite também acesso

a aplicações hospedadas em ambiente local, criando soluções

hibridas. O Windows Azure possui recursos para diferente

ambientes de desenvolvimento, como Visual Studio e .NET,

Eclipse, PHP, PYTHON e JAVA.

Para o desenvolvimento com Windows Azure a Microsoft

dispõe de um SDK (Software Development Kit) de ferramentas para o

desenvolvimento, será preciso baixar esse pacote de

ferramentas e instalá-lo antes de começar o desenvolvimento

das aplicações necessárias para a solução.

2.2.3.1 Modelo de Roles

O Windows Azure Service trabalha com isolamento entre

processos, usando componentes chamados de Roles. Uma solução

pode ser composta de diversas Roles e essas podem ter diversos

endpoints para comunicação interna ou externa, utilizando

protocolos de comunicação como HTTP, HTTPS. E cada Role pode

ter múltiplas instâncias, para que isso aconteça o projeto

deve ter configurações especificas que indicam a descrição do

51

serviço, tipo de roles e número de instâncias. Existem três

tipos de Role, as quais serão detalhadas a seguir:

Web Role

Web Role é responsável pela hospedagem da aplicação web e

de serviços como WebService que a Microsoft fornece como

WCF(Windows Communication Foundation).

Worker Role

Worker Role é executável e funciona como um serviço, que

consome mensagens de uma fila para executar um determinado

processo, com isso ganhando desempenho, pois os processos

rodam em paralelo que cada instância pode executar ao mesmo

tempo, tendo seu próprio recurso de programação e sua própria

memória para execução.

VM Role

VM Role cria uma máquina virtual customizada, contendo a

configuração necessária que o usuário precisa. A mesma é

responsável pela sua criação e configuração podendo escolher a

quantidade de core e memória necessários, além do próprio

sistema operacional e software que serão usados pagando somente

o que é usado.

52

Arquitetura de aplicação típica para o Windows Azure,

ilustrando a comunicação através de endpoints e tipos do Azure

Storage (blobs, tables, queues) é mostrada na figura 13.

Figura 12 - Funcionamento do Windows Azure

2.3 Website

O conceito de website ou site é um conjunto de várias

páginas web interligadas que são acessadas pelo protocolo HTTP

da internet. Existem diversos tipos de linguagens que são

usadas para criar um site, como o HTML, e no ramo do mercado

53

mobile cresce o número de aplicações que rodam no browser do

sistema operacional do aparelho.

Normalmente os sites são escritos ou apenas convertidos

para HTML, que depois um software chamado browser interpreta e

gera a visualização ao usuário. Além do HTML, linguagens como

o PHP, ASP, JSP também conseguem programar e criar um site. Além

da ferramenta de criação, existem os servidores e banco de

dados dependendo do objetivo do seu funcionamento.

2.3.1 HTML

Abreviação da expressão inglesa Hiper Text Markup Language, o

HTML foi criado por Tim Berners-Lee para que ele conseguisse

resolver um problema particular. Trabalhando ele percebeu que

precisava fazer a comunicação de suas pesquisas para seu grupo

de colaboradores.

Obtido a partir da fusão de duas tecnologias a HyTime e

SGML, o HTML é interpretado por um browser podendo ser escrito e

programado em um editor de texto comum, como o bloco de notas

da Microsoft e o TextEdit do Macintosh, porém no mercado

existem algumas opções próprias de IDE para desenvolvimento da

linguagem. Um desenvolvimento fundamental aconteceu em Julho

de 1992 com a liberação da biblioteca de desenvolvimento para

WWW (World Wide Web). Foi assim que deu origem à construção de

vários browsers e servidores que tornaram a WEB viável. Um

desses foi o Mosaic, o primeiro browser multiplataforma, que

explorava completamente a capacidade de hipermídia da WEB.

54

O HTML tem sido desenvolvido com a visão de que todos os

equipamentos fossem capazes de usar a informação da Web, para

que não aconteça nem uma incompatibilidade com monitor de

diferentes resoluções ou sistemas de áudio diferentes.

2.3.2 ASP .Net

ASP.NET é uma plataforma da Microsoft para o

desenvolvimento de aplicações Web e é o sucessor da tecnologia

ASP. Capaz de criar páginas dinâmicas baseando-se no

Framework .NET, por isso aplicações para essa plataforma podem

ser escritas em várias linguagens, como C# e Visual

Basic .NET.

Em todas as linguagens para Web o ASP.NET possui o

beneficio de ser seguro e ter um ótimo desempenho. Existem

três tipos de modelos de desenvolvimento, são eles:

Web Pages

MVC ( Model View Controller)

Web Forms

Abaixo a figura 15 exemplifica um ciclo de vida de uma

aplicação feita com o ASP .NET.

55

Figura 13 - Ciclo de vida do ASP.NETFonte: http://sourcecode-world.blogspot.com.br/2011/08/aspnet-

page-event-life-cycle.html

2.4 Web Service

Web service é utilizada na integração de sistemas e na

comunicação entre aplicações diferentes. Com isto é possível

que novas aplicações possam se comunicar com aquelas que já

existem e que sistemas desenvolvidos em plataformas diferentes

sejam compatíveis. Também permite às aplicações enviar e

receber dados em formato XML. Cada aplicação pode rodar com

sua própria linguagem de programação, que é traduzida para o

formato XML.

A Web service pode trazer agilidade para os processos e

eficiência na comunicação. Toda e qualquer comunicação entre

56

sistemas é dinâmica e segura. Essencialmente, a Web Service faz

com que os recursos da aplicação do software estejam disponíveis

sobre a rede de uma forma normalizada. Existe uma grande

motivação sobre a tecnologia Web Service, pois possibilita que

diferentes aplicações comuniquem entre si e utilizem recursos

diferentes.

Ao usar a Web Service, uma aplicação pode invocar outra para

efetuar tarefas simples ou complexas mesmo que as duas

aplicações estejam em diferentes sistemas e escritas em

linguagens diferentes. Assim os recursos estarão disponíveis

para qualquer aplicação cliente consiga operar e extrair os

recursos desse serviço.

3 Requisitos

Após todas as tecnologias terem sido abordadas, pode-se

então fazer uma analise sobre a proposta desse trabalho. O

trabalho pode ser dividido em vários tópicos que foi nomeado

como requisitos e cada um atenderá alguma função.

O aplicativo no começo do plano de ação foi pensado para

atender diversos tipos de pedidos de serviços. Entre eles

estão o serviço de entrega de comida, serviço de táxi e até

mesmo a simples procura por algum estabelecimento que poderia

fornecer algo o qual os usuários buscassem.

A partir de análise de aplicativos disponíveis no

mercado,como o Ifood, o projeto foi desenvolvido e pensado para

atender um mercado não tão abrangente, mas local. Ao observar

essas aplicações foi notável o atendimento mais veloz e

57

completo apenas em grandes capitais. A idéia de mobilizar

serviços dentro do seu próprio bairro seria uma idéia não só

boa na visão de usuário, mas também na visão do empreendedor

que poderia abranger amplamente seus negócios.

Nesse requisito proposto, a intenção é rodar essa

aplicação de forma simples e prática para que o serviço de

pedido consiga funcionar. A idéia é conseguir a interação do

usuário que baixou esse aplicativo com o fornecedor do

serviço.

Esse serviço primeiramente será pensado para atender

lanchonetes e pizzarias da região, mas pode se estender de

acordo com o que o mercado pedir. Dentro de cada

estabelecimento cadastrado será incluído o seu cardápio o qual

o cliente conseguirá acessá-lo com seu smartphone, abaixo será

exemplificada a funcionalidade de cada requisito.

Requisito 1

O requisito 1, o qual será apresentado como protótipo,

conterá:

Opções de lanches e pizzas

Cadastro de lanchonetes e pizzarias

Visualização do cardápio de cada estabelecimento

58

Efetuar o pedido

Interface web para o estabelecimento

Confirmação do pedido

Basicamente esse será o processo, o usuário conseguirá ter

acesso aos produtos do estabelecimento e fazer seu pedido,

informando endereço de entrega, troco e observações sobre

bebidas ou acréscimo e decréscimo de ingredientes.

Neste módulo não será efetuada a compra de forma online e

também a localização via GPS (Global Position System).

Requisito 2

Neste requisito podem ser acrescentadas várias tecnologias

que muitos smartphones já possuem no mercado, além de ser uma

idéia que no futuro possa se destacar como um projeto de

graduação ou até mesmo um negócio com grandes possibilidades

de sucesso. Abaixo serão destacados alguns aspectos que podem

ser melhorados a partir da base do módulo 1:

Localização via GPS

Compra online (Através de cartões de créditos,

descontos em conta e outros).

Opções de compartilhamento em redes sociais

Cardápio interativo

Ranking de acordo com opiniões de compradores

Avaliação do serviço de entrega

59

Contador de tempo de aceitação do pedido e entrega ao

cliente

Além dessas facilidades, a imaginação pode fluir para

atender ainda mais o usuário expandindo os horizontes com mais

tecnologias.

Requisito 3

No requisito 3 parte da expansão da área que esse

aplicativo poderá atuar, a principio atenderá serviço de

estabelecimentos alimentícios, mas poderá atender outras áreas

de negócio também. Abaixo algumas melhorias que podem ser

feitas neste módulo:

Serviço de táxi

Serviço de oficinas mecânicas

Bares e casas noturnas

Pontos turísticos

Compra de convites

Esses são alguns dos serviços que através do módulo 1

podem ser adicionados pois o principio de atendimento é o

mesmo. Tudo isso para trazer comodidade e acessibilidade ao

usuário do aplicativo,

Requisito 4

60

Aqui a aplicação já está funcionando com todas as

tecnologias que um aparelho que tenha Android possa oferecer.

Porém aqui se pode abrir um leque de opções para atender

outros sistemas operacionais, a oportunidade que o mercado

abre é imensa.

Expandir essa aplicação a dispositivos com iOS, Symbian,

Windows Phone, Blackberry e outros pode ser uma boa

oportunidade para ascensão no mercado de aplicações. Além de

sistemas operacionais de smartphones, essa idéia também pode ser

implementada em browser para acesso em casa em um PC. As

possibilidades tendem a aumentar com a infinidade de

benefícios que o aplicativo pode fornecer a população, podendo

lançar uma nova forma de relacionamento entre serviços e

cliente.

4 Solução

Neste capitulo será exemplificado como foi feito e quais

tecnologias foram utilizadas para o desenvolvimento do

aplicativo atendendo os requisitos 1. Para que sejam atendidas

as recomendações, serão criadas duas aplicações a mobile e a do

cliente ou estabelecimento.

 O módulo do usuário mobile consiste em ele ter a opção de

escolher qual tipo de comércio deseja. Nessa versão somente

pizzarias e lanchonetes são atendidas, o usuário poderá

61

escolher qual o estabelecimento desejar e os produtos que são

fornecidos, informando seu endereço e tendo a confirmação do

pedido o produto será entregue. Na interface do local onde

será feito o lanche ou a pizza, o usuário tem a opção de

incluir pedidos, excluir pedidos e fazer cadastro de produtos.

Esta aplicação será feita com cloud computing, usando o

Windows Azure, por ter uma interface fácil de uso e todas as

funcionalidades necessárias na elaboração do projeto. A

interface do usuário será feita para sistema operacional

Android, mas existe a possibilidade de que seja desenvolvido

para iOS ou até mesmo Windows Phone, pois todo processamento

dos pedidos ou outras funcionalidades serão efetuadas dentro

da cloud.

A comunicação entre o cloud e o Android será feita através

de um web service. O modo cliente será desenvolvido em ASP.

NET, ou seja, uma aplicação web sem a necessidade de ter nada

instalado no computador do cliente. Foi usado a base de dados

da Microsoft, o SQLServer que permite ter uma base de dados

única para todos os clientes.

Este banco foi criado usando 3 tabelas, Empresas, Produtos

e Pedidos. Na tabela empresa esta todo o cadastro do cliente

estabelecimento, ao qual contem o id da empresa, o nome do

estabelecimento, endereço, telefone, login, senha, tipo de

estabelecimento (lanchonete ou pizzaria) e nome do responsável

pelo estabelecimento. Na tabela de produtos esta o id do

produto, o nome do produto, descrição do produto, preço e uma

coluna com a chave estrangeira do estabelecimento.

62

Na tabela pedidos tem o id do pedido, nome do cliente que

efetuou o pedido, o pedido feito, endereço de entrega, troco,

observações, identificação se o pedido foi aceito, uma coluna

com a chave estrangeira do estabelecimento e uma coluna onde

fica registrado o id para executar o push ou seja informações

para o cliente.

Figura 14 - Gerenciamento Banco de Dados

Para desenvolver o modo do usuário será desenvolvida uma

aplicação nativa para Android, essa aplicação será basicamente

só interface, pois como já mencionado todo o processamento

será feito no cloud. Abaixo a figura ilustra a instalação do

SDK para Android, utilizando o Eclipse:

63

Figura 15 - Instalando SDK Android

Foi criada uma aplicação onde rodará a interface da

aplicação, esta interface será divida em 5 activity. A primeira,

conterá somente a  tela de inicialização da aplicação, a

segunda os botões para a escolha entre lanchonete e pizzaria,

a terceira para escolha dos estabelecimentos relacionado á

opção escolhida, a quarta para escolha dos produtos, e a

quinta para finalizar a venda onde será colocado o endereço. A

figura 17 mostra uma das activities criada no Eclipse.

64

Figura 16 - Tela mostra umas das activity sendo criada no Eclipse

O designer das activities é feito por um arquivo XML, uma

linguagem de marcação assim como o HTML. A figura 18 mostra um

exemplo desse arquivo XML.

65

Figura 17 - Arquivo XML gerado que mostra as caracteríticas de uma activityToda a conexão android com o cloud foi feito por webservice,

este usa o protocolo SOAP para comunicação, esse protocolo é na

verdade um XML e sua estrutura é dividida em duas parte o XML

de envio que contém uma tag inicial para identificar que é um

arquivo do mesmo formato, a tag soap que contem o nome do método

solicitado e dentro dessa existe outras para cada parâmetro

que contenha esse método.

O XML de resposta, a segunda parte, contem uma tag para

identificar que esse arquivo é do tipo XML também a tag soap

onde se encontra a resposta do webservice para o pedido

solicitado.

Podemos ver um exemplo deste XML na figura 18.

66

Figura 18 - Exemplo de arquivo SOAP

Os pedidos são enviados ao cloud por este WebService, foi

usado um WCF (Windows Communication Foundation) que registra uma

mensagem, em uma fila chamada queue, essa queue do Windows

Azure serve para armazenar um grande número de mensagens que

podem ser acessadas de qualquer lugar do mundo através de

chamadas autenticadas usando HTTP ou HTTPS. Essas mensagens

serão lidas através de Worker Role.

A mensagem de confirmação chegará ao Android via push, que

é aquela informação que o celular recebe mesmo quando a

aplicação não está sendo executada, com isso diminui o consumo

de bateria e não necessita que o usuário fique entrando no

aplicativo para saber o status do seu pedido.

67

A confirmação do pedido é importante, pois garante ao

usuário que seu pedido será entregue. Para implementar o push

será utilizado o Google cloud messaging ou GCM. Abaixo a figura

19 exemplifica o funcionamento dessa tecnologia.

Figura 18 - Funcionamento do Google cloud messagingFonte:http://www.mobiltec.com.br/blog/index.php/

notificacoes-push-em-android/

Funcionamento do GCM

68

A aplicação quando iniciada faz seu registro no GCM

para vincular o dispositivo para aquela aplicação;

O registro gera um ID que é enviado de volta ao

dispositivo;

O dispositivo registra o ID no servidor da aplicação.

Outra aplicação pode criar um evento para seu user

account vinculado a sua aplicação;

O servidor de aplicação então envia a mensagem ao GCM

para que ele o processe e envie ao seu destinatário;

Uma mensagem push é enviada ao dispositivo ao qual

pertence.

Para desenvolver o modo cliente será criada uma aplicação

web, que permitirá ao cliente administrar os pedidos feitos ao

seu estabelecimento, poderá também gerenciar seus produtos,

criando, editando ou excluindo.

Neste trabalho a IDE Visual Studio 2010 da Microsoft será

utilizada para desenvolver a aplicação em ASP.NET. Em um mesmo

projeto para o ambiente Windows Azure, estarão contidas as

três aplicações necessárias para o funcionamento do

aplicativo, um WCF, uma Web Role e um Worker Role. Para começar a

desenvolver o projeto é necessária a instalação do SDK do

Windows Azure. A figura 20 abaixo mostra a tela que se inicia

para a instalação do SDK no Visual Studio.

69

Figura 19 - Instalação do SDK do Windows Azure

Após instalação do SDK, será criado um novo projeto no

Visual Studio, este projeto deve incluir os WCFService, Web Role e

os Worker Role, conforme mostra a figura 21.

70

Figura 20 - Criação das Roles dentro do Azure

Para desenvolver a aplicação web foram criadas duas

paginas uma para o cliente fazer o login, com isso identificando

qual a empresa esta acessando a aplicação, e a segunda terá

uma área dividida por abas, uma onde existirá um grid onde são

exibidos os pedidos realizados para aquela empresa, e na outra

aba a área que o cliente cria, edita e exclui os produtos a

venda.

A worker role é iniciada e permanece ativa por todo o tempo,

portanto tão importante quanto lógica do processamento é a

lógica de espera quando não há o que processar para não

sobrecarregar o servidor e desperdiçar recursos. Esta worker role

será um processo assíncrono que irá processar as mensagens que

estiverem na queue, criando um pedido que o cliente visualizará

no front end na aplicação cliente.

71

O worker role tem dois métodos básicos, o start e o stop. O

método start será executado quando a instância for criada, ela

possui um loop infinito que ficará processando em background

onde o cliente não conseguirá visualizar, é dentro desse loop

que ficará o método de ler a queue e processar, este método é

obrigatório, o método stop não é obrigatório mas é usado para

quando for encerrada a instancia e pode conter qualquer ação

necessária para quando for finalizada. A figura 22 mostra o

código do método start/stop.

Figura 21 - Método start e stopPodem ser criadas mais instâncias do mesmo worker role

conforme necessidade, essa ação pode ser feita manual ou mesmo

dentro do código, fazendo isso caso o tamanho da fila de

espera atinja um tamanho predeterminado, neste worker role foi

usado o processo manual, pois como ele é pago por tempo de

processamento, aumentar automático pode causar um custo

desnecessário ao projeto.

72

Analisando todo o processo para o desenvolvimento do

protótipo o diagrama exemplifica como funciona o processo de

recebimento e envio dos pedidos, utilizando as tecnologias que

foram abordadas. A figura 22 deixa claro e visível a

arquitetura do aplicativo.

Figura 22 - Diagrama de funcionamento do protótipo

Na figura 23 as telas e sua sequência para a escolha do

lanche e o envio do pedido para o cliente.

73

Figura 23 - Telas da aplicação

74

6 Conclusão

Após o término deste trabalho, seu objetivo proposto foi

atingido, ou seja, a criação do módulo 1. O que foi

considerado um protótipo saiu como esperado e trouxe ao

projeto uma base sólida para intervenções futuras.

Através dos conhecimentos adquiridos durante todo o

processo, pode-se verificar que através de muito esforço ele

pode ser aprimorado e utilizado até mesmo para abertura de um

negócio.

As dificuldades existirão para que consigam atender todos

os aspectos propostos, diante dos módulos estipulados neste

texto. Informação para se incluir na área são abundantes,

porém alguns obstáculos podem aparecer diante de algum hardware

necessário ou técnicas a serem aplicadas.

A aplicação foi feita atendendo uma proposta do trabalho,

para possíveis melhorias em projetos futuros, a sequência e

ideias que estão contidas no capitulo três podem ser adaptadas

e garantir o sucesso em outras empreitadas.

75

Referências

AMARAL, Bruno do. Conheça os 6 principais sistemas

operacionais de smartphones. PC Magazine, 12 jan. 2009.

Disponível em: <http://pcmag.uol.com.br/conteudo.php?id=810>.

Acessado em 20 de setembro de 2013

Android Architecture. http://code.google.com/android/what-is-

android.html.

Acessado em 29 de setembro de 2007.

BARBIERI, A. (24 de outubro 2013). Construindo aplicações leves para

servidores na nuvem. Acesso em 26 de outubro de 2013, disponível

em http://imasters.com.br/linguagens/java/construindo-

aplicacoes-leves-para-servidores-na-nuvem/

76

Brooks, C. A (2002). An introduction to Web Services. 2002

Ed Burnette (2008). Hello, Android: Introducing Google’s Mobile Development

Plataform. Estados Unidos da América

GOOGLE. Google Developers Channel. Disponível em:

<http://www.youtube.com/user/GoogleDevelopers>. Acesso em: 6

agosto 2009.

Introduction to XML Schema. Disponível em: http://

www.w3schools.com/schema/schema_intro.asp. Acessado

em 02 de outubro de 2013.

MEDNIEKS, Z., DORNIN, L., MEIKE, G., & NAKAMURA, M (2012).

Programando o Android. São Paulo, Brasil: Novatec Editora

MEIER, R (2012). Professional Android 4 Application Development. USA:

Wrox.

Open Handset Alliance. http://www.openhandsetalliance.com/.

Acessado em 26 de setembro de 2013.

Vogels, W.(2003) Web Services Are Not Distributed Objetcts. In: Web Service Tra

ck of IEEE Internet Computing. 2003.

WSDL and UDDI. Disponível em: http://www.w3schools.com/wsdl/

wsdl_uddi.asp. Acessada em 02 de outubro de 2007.

77

.