• Nenhum resultado encontrado

Um sistema de monitoramento de logística em tempo real utilizando dispositivos móveis

N/A
N/A
Protected

Academic year: 2021

Share "Um sistema de monitoramento de logística em tempo real utilizando dispositivos móveis"

Copied!
65
0
0

Texto

(1)

UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL - UNIJUÍ

DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS

ADRIELI HEINECK

UM SISTEMA DE MONITORAMENTO DE LOGÍSTICA EM TEMPO

REAL UTILIZANDO DISPOSITIVOS MÓVEIS

Santa Rosa 2012

(2)

ADRIELI HEINECK

UM SISTEMA DE MONITORAMENTO DE LOGÍSTICA EM TEMPO

REAL UTILIZANDO DISPOSITIVOS MÓVEIS

Trabalho de Conclusão de Curso apresentado ao curso de Ciência da Computação, do Departamento de Ciências Exatas e Engenharias, da Universidade Regional do Noroeste do Estado do Rio Grande do Sul, como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação.

Orientador: Professor Me. Vinicius Maran

Santa Rosa 2012

(3)

UM SISTEMA DE MONITORAMENTO DE LOGÍSTICA EM

TEMPO REAL UTILIZANDO DISPOSITIVOS MÓVEIS

ADRIELI HEINECK

Trabalho de Conclusão de Curso apresentado ao Curso de Ciência da Computação do Departamento de Ciências Exatas e Engenharias (DCEEng), da Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUÍ), como requisito para a obtenção do título Bacharel em Ciência da Computação.

______________________________ Orientador: Prof. Me. Vinicius Maran

BANCA EXAMINADORA

_______________________________ Prof. Me. Romário Lopes de Alcântara

Santa Rosa 2012

(4)
(5)

Dedico este trabalho a minha família que me apoiou e incentivou e a meu marido Marcos, pelos momentos de ajuda, atenção e apoio.

(6)

AGRADECIMENTOS

Agradeço a meus pais, Antônio e Marlise, pelo incentivo, suporte material, emocional e ajuda na escrita deste trabalho, a Marcos, meu marido, pelo companheirismo, apoio, compreensão e palavras de carinho e motivação. Ao meu orientador Vinícius Maran, pela paciência, pontuações pertinentes e total disposição para me auxiliar nas dúvidas em qualquer momento. Por fim, agradeço a todos os professores e amigos, que de alguma forma participaram e contribuíram para meu crescimento como ser humano e profissional.

(7)

RESUMO

A utilização da computação móvel para a integração de informações entre sistemas corporativos e aparelhos pessoais tem sido uma estratégia cada vez mais utilizada por empresas, inclusive no setor de logística. Porém, alguns problemas afetam esta prática. Este trabalho visa apontar os principais problemas que ocorrem nesta área e fornece uma solução para que dispositivos móveis possam fornecer informações relacionadas aos processos de logística em tempo real. Para alcançar tal objetivo, foi realizado um estudo aprofundado nas áreas de computação móvel e pervasiva sobre todo o contexto dos processos relacionados à logística. Após a realização deste estudo, foi desenvolvido um protótipo, que possui como principal objetivo atender áreas pouco trabalhadas no que tange o gerenciamento dos processos de logística. Em seguida foram realizados testes e definido um caso de uso, a fim de verificar a real funcionalidade do protótipo criado, e apresentar o diferencial e as potencialidades que um gerenciamento de logística em tempo real pode trazer.

(8)

SÍMBOLOS, ABREVIATURAS, SIGLAS E CONVENÇÕES

ADT Android Development Tools

API Application Programing Interface

CLDC Connected Limited Device Configuration

EDI Intercâmbio Eletrônico de Dados

ERP Sistemas Integrados de Gestão Empresarial

GIS Geographic Information System

GNU General Public License

GPS Global Positioning System

GSM Global System for Mobile Communications

HTC High Tech Computer Corporation

IDE Integrated Development Environment

IEEE Institute of Electrical and Electronics Engineers

iOS iPhone OS

JAR Java Archive

JDE Java Development Environment

MIDP Mobile Information Device Profile

MRP Planejamento das necessidades de materiais OHA Open Handset Alliance

OS Operational System

PC Personal Computer

PDA Personal Digital Assistant

RIM Reseach In Motion SDK Software Development Kit

(9)

TMS Sistema de Gerenciamento de Transportes WAR Web application Archive

WMS Sistema de Gerenciamento de Armazém XML eXtensible Markup Language

(10)

LISTA DE FIGURAS

Figura 1 - Arquitetura Android. Fonte (Android Developers, 2010) ... 21

Figura 2 - Ciclo de uma Activity. Fonte (Pereira, 2009) ... 22

Figura 3 - Ambiente de programação. Fonte (Android Developers, 2010) ... 24

Figura 4 – Ambiente Pervasivo (Cunha et al, 2011) ... 26

Figura 5 - Estruturas e fases da operação logística. Fonte (Fernandes, 2008) ... 29

Figura 6 - Modelo competitivo. Fonte (Fernandes, 2008)... 30

Figura 7 - Rede Globalizada de logística hoje (Machline, 2011) ... 33

Figura 8 - Exemplo de tecnologia ubíqua no sistema de logística. Fonte (Hwang, 2006) ... 35

Figura 9 - Infraestrutura logística baseada em ambiente ubíquo. Fonte (Kim et al, 2010) .... 36

Figura 10 - Modelagem dos dados da aplicação proposta ... 40

Figura 11 - Diagrama de Classes da aplicação Móvel ... 45

Figura 12 – Fluxo de informações entre as interfaces ... 49

Figura 13 - Diagrama de Sequência da Aplicação ... 51

Figura 14 – Interface do eXist ... 52

Figura 15 - Xml de relatório do protótipo ... 53

Figura 16 - Xml com dados da nova viagem... 54

Figura 17 - Tempos de execução ... 55

Figura 18 - Tela com os dados da Viagem ... 57

Figura 19 - Mapa da Viagem ... 57

Figura 20 - Dados da Viagem ... 57

Figura 21 - Aviso: A viagem Começou ... 58

Figura 22 - Tela de inserção de relatório ... 59

(11)

SUMÁRIO

1. INTRODUÇÃO ... 12

1.1-PROBLEMA E OBJETIVOS ... 13

1.2–ORGANIZAÇÃO DO TEXTO ... 14

2. COMPUTAÇÃO MÓVEL E PERVASIVA ... 15

2.1COMPUTAÇÃO MÓVEL ... 15

2.1.1 – Plataforma Android ... 19

2.1.2 – APIs ... 25

2.2COMPUTAÇÃO PERVASIVA... 25

3. LOGÍSTICA E COMPUTAÇÃO APLICADA NA ÁREA DE LOGÍSTICA ... 28

3.1-LOGÍSTICA ... 28

3.2–COMPUTAÇÃO APLICADA À LOGÍSTICA ... 31

3.3-TRABALHOS RELACIONADOS ... 34

4. UMA FERRAMENTA DE CONTROLE DE LOGÍSTICA EM TEMPO REAL ... 38

4.1-LEVANTAMENTO DE REQUISITOS ... 38

4.2-MODELAGEM DE DADOS ... 39

4.3-IMPLEMENTAÇÃO ... 40

4.3.1 – Aplicação Móvel ... 40

4.3.2 – Exportação de XML para o Banco de Dados eXist ... 52

5. CENÁRIO DE USO E TESTES REALIZADOS... 54

5.1-TESTES ... 55

5.2CENÁRIO DE USO ... 56

6. CONCLUSÃO ... 60

(12)

1. INTRODUÇÃO

O uso de forma disseminada de computadores pessoais, o advento da Internet, a criação da comunicação sem fio, e da computação distribuída de alto desempenho, permeiam atualmente todas as atividades humanas gerando grandes e profundas modificações nas formas de uso da computação (Feijó, Ziviani, 2010).

Estes avanços tendem a configurar redes informativas integradas, com uma matriz de comunicação baseada na informação digital, com grande capacidade de veicular dados difundidos em vários meios impressos e audiovisuais (Filho, 2007). A exemplo dos computadores de uso pessoal, o segmento empresarial, inclusive por questões de produtividade, incorpora rapidamente o uso de equipamentos portáteis na automação de seus processos, colocando-os ao alcance de funcionários e colaboradores (Meirelles et al, 2004).

Estes avanços, combinados com o constante avanço das tecnologias móveis, estão levando a computação para uma visão próxima da descrita no artigo “The Computer for the 21st Century”, também conhecida como Computação Pervasiva (Weiser, 1991). Neste trabalho, Mark Weiser (1991) descreveu um conjunto de cenários onde o usuário comum realiza as suas tarefas e os sistemas computacionais (de forma transparente), auxiliam a execução destas tarefas. Ainda segundo o autor, “as tecnologias mais profundas são aquelas que desaparecem. Elas se entrelaçam com o cotidiano até que se tornem indistinguíveis dele” (Weiser, 1991).

A Computação Pervasiva possui os meios de computação distribuídos no ambiente de trabalho dos usuários de forma imperceptível e onipresente (Bolsoni et al, 2009). De acordo com esta definição, computadores, dispositivos e sistemas seriam capazes de detectar e extrair dados e variações do ambiente, gerando modelos computacionais de forma automática, controlando, configurando e ajustando aplicações conforme as necessidades de usuários, dispositivos e sistemas (Bolsoni et al, 2009).

A computação móvel e pervasiva são a chave para a compreensão das mídias locativas, as quais podem ser definidas como um conjunto de tecnologias e processos info-comunicacionais (Lemos, 2012). Estes processos consistem na relação entre

(13)

essas mídias e espaços públicos, identificando o local onde o usuário se encontra, permitindo que interaja com o espaço urbano, aumentando as possibilidades de uso do espaço público. Logo, o conteúdo da informação que o usuário busca e necessita está diretamente associado a uma localidade; quase sempre, a localidade em que está no momento.

No processo, o uso de Sistemas de Informação Geográfica (Geographic Information Systems - GIS) espalhou-se, saindo das corporações e escritórios e indo para as ruas e os campos, da administração pública e ambiental para um largo espectro de usos sociais (Ballou, 2004). Deste modo, um dos mais profundos desafios das mídias locativas está em transmitir informações geográficas, não mais nas tradicionais e pesadas janelas dos desktops, mas nas tecnologias finas e leves dos sistemas móveis e embarcados (Mccullough, 2006).

A constante evolução das mudanças tecnológicas na informática tem favorecido o desenvolvimento da logística em termos conceituais e tecnológicos. Através disso, pode-se gerar um considerável aprimoramento dos processos existentes e da aplicação da computação na área de logística.

1.1 - Problema e Objetivos

Mesmo ainda havendo notícias relacionadas aos prejuízos com o mau gerenciamento da logística, vem surgindo investimentos em recursos, que apontam uma reversão do atual quadro na logística brasileira (Fernandes, 2008).

No entanto, pouco se investiga sobre como a gestão dos recursos logísticos deve evoluir para assegurar os avanços propostos (Cabrial, 2005). Por mais que se admita que essa área seja de suma importância atualmente, pouco ainda é feito para melhorar e evoluir no gerenciamento de processos de logística usando a tecnologia da computação, principalmente a computação pervasiva.

Com todos estes argumentos, percebe-se que há uma grande deficiência no processo do gerenciamento de logística e que a computação pervasiva, por ser o grande alvo de estudos na área da informação em tempo real para dispositivos móveis, pode ser o caminho para auxiliar e trazer benefícios ao setor de logística.

Desta forma propomos, através de um protótipo, o gerenciamento em tempo real dos processos de logística baseando-se em informações de domínio aliadas a informações geográficas para o controle destes processos.

(14)

1.2 – Organização do Texto

O texto é organizado como descrito a seguir. No Capítulo 2, é apresentado um estudo relacionado às tecnologias da computação móvel e pervasiva, aplicações destas tecnologias em diversas áreas do conhecimento e contribuições específicas para a área de logística. No Capítulo 3, é apresentado um estudo sobre a área de logística e integração de tecnologias provenientes da computação e processos.

O Capítulo 4 apresenta todas as informações sobre a definição de um controle de logística, em tempo real, proposta neste trabalho. No Capítulo 5, é apresentada uma comparação entre o trabalho proposto e um conjunto de trabalhos relacionados.

No Capítulo 6, são definidos os cenários de uso e um conjunto de testes para realizar a validação da proposta e dos protótipos gerados. O Capítulo 7 apresenta as conclusões deste trabalho e propostas de trabalhos futuros.

(15)

2. COMPUTAÇÃO MÓVEL E PERVASIVA

Cada vez mais, a computação móvel tem sido integrada a soluções existentes para a criação de novas soluções. Uma das áreas onde a computação móvel tem sido utilizada para o auxílio na execução de processos é a área de logística (Ballou, 2004). Para definir as peculiaridades das áreas de computação móvel e pervasiva, e as formas de introdução destas tecnologias na área de logística, realizamos um estudos sobre estas áreas. As próximas subseções deste trabalho têm por objetivo mostrar estas informações.

2.1 Computação Móvel

A computação móvel é considerada parte de um novo paradigma da computação (A Computação Ubíqua). Com a constante evolução da computação móvel, houve grandes mudanças nas formas de usar, trabalhar e desenvolver aplicativos e soluções para o auxílio na execução de tarefas pelos usuários. A condição de mobilidade, presente na vida de qualquer pessoa, permite que usuários tenham acesso a serviços, independentemente do lugar onde estejam e, que tais serviços e informações se atualizem de acordo com a mobilidade (Matheus, 2012).

O uso da computação móvel pelas pessoas se faz através de dispositivos móveis, principalmente em celulares. Atualmente, os smartphones (telefones inteligentes) combinam características avançadas de hardware e software e promovem um uso mais intenso da computação em ambientes móveis. No ano de 2010, este tipo de dispositivo alcançou 17,3% do total de vendas de telefones móveis (Lopes, 2010).

Uma pesquisa realizada por Augustin (2004) elencou os tipos de aplicações móveis e pervasivas, e suas principais características. Os principais tipos de aplicações são:

Nômade: Aplicações nômades são executadas em equipamentos móveis,

onde seu domínio é a administração pessoal e o acesso a informações de forma geral. Não apresentam um comportamento adaptativo, embora sejam projetadas com

(16)

economia no uso dos recursos dos dispositivos portáteis (armazenamento, memória e energia); logo, não pertencem à taxonomia para aplicações adaptativas apresentadas (Augustin, 2004).

Consciente de rede (network-aware): Aplicações que se adaptam às trocas

na disponibilidade dos recursos da rede, em especial à largura de banda. Elas se adaptam para fornecer uma aparência de serviço contínuo, e para gerenciar o balanceamento entre transparência, flexibilidade e uso eficiente da rede. Nestes sistemas, a localização dos componentes é fixa, a adaptação advém de trocas no uso da rede. Em geral, essas aplicações usam mecanismos automáticos de adaptação, tais como caching e replicação, que podem usar técnicas de adaptação baseadas somente em parâmetros ou em troca do conteúdo. Fornecem adaptação baseada em recursos, onde o recurso considerado é a rede. O foco destas aplicações é a portabilidade e a conectividade. (Augustin, 2004)

Consciente de recursos (resource-aware): Aplicações que tentam identificar

e usar os recursos locais disponíveis. A maior parte do processo de adaptação pode ser executada automaticamente pelo sistema usando ajuste de parâmetros ou alteração no formato dos componentes. Aplicações baseadas na tecnologia de agentes móveis têm este comportamento. Assim, migração e descoberta de recursos são caraterísticas importantes para estas aplicações. O foco destas aplicações é a mobilidade e a conectividade (Augustin, 2004).

Consciente de localização (location-aware): Estas aplicações têm seu

comportamento determinado pela localização física do usuário. Usam o conhecimento da localização como fundo para a resposta a consultas mais especializadas, ou para executar ações dependentes da localização, ou ainda para fornecer informações sobre a área ou objetos ao redor. As características importantes para esta categoria são determinar a posição do usuário e associar dados à localização (contente-based adaptation). Como a localização é a chave para determinar o contexto ao redor da aplicação, esta categoria é um subconjunto das conscientes do contexto (Augustin, 2004).

Consciente de contexto (context-aware): Estas aplicações podem deduzir o

estado interno e externo, usando sensores ou monitores, e se ajustar ao novo estado. Também introduzem a dimensão pessoal às aplicações móveis, que por sua vez, em geral, são personalizadas pelo usuário, e seu comportamento é baseado em onde elas estão sendo executadas (localização). Podem também tirar vantagem das

(17)

computações próximas e dos recursos da vizinhança. O contexto descreve informações sobre localização, dispositivos, perfis de equipamentos e da rede, atividades, objetos computacionais (disponibilidade, confiabilidade, segurança) contexto, modelagem da informação do contexto e notificação das alterações são características importantes para estas aplicações estabelecerem um comportamento adaptativo. Para estas, também é necessário fornecer (re)configurações alternativas de acordo com o novo contexto. O foco destas aplicações está centrado na combinação de mobilidade, portabilidade e conectividade (Augustin, 2004).

Consciente da situação (situation-aware): Até esse ponto, a perspectiva da

adaptação é focada no desejo da aplicação de ajustar-se ao ambiente corrente – seu contexto de execução. Além disso, a decisão da adaptação é interna à aplicação, e executada pela própria aplicação ou pelo sistema de suporte (ou ambos). Outra perspectiva é introduzida quando o ambiente altera a funcionalidade da aplicação em execução, baseado na consciência das outras aplicações em execução no mesmo ambiente (situação). A decisão de adaptação é externa à aplicação, e pode ser realizada pelo sistema em colaboração com as aplicações vizinhas. Este comportamento categoriza as aplicações conscientes da situação. A situação adiciona uma nova dimensão ao contexto: a social, que reflete as capacidades dos usuários, suas aplicações e preferências. A adaptação ocorre na funcionalidade dependendo do uso do contexto e da preferência dos usuários. A característica base é a pró-atividade do sistema de gerenciamento (Augustin, 2004).

A necessidade da existência de diversas características na computação móvel e a combinação da mesma com a comunicação sem fio resultou em uma nova situação: a capacidade de adaptação de código e conteúdo, ou seja, ter serviços computacionais disponibilizados em contextos específicos (Barbosa, 2007). Além disso, os sistemas de localização proporcionam a utilização de dados de localização de dispositivos e usuários e integração destas informações com aplicações (Hightower, 2001).

Neste trabalho usa-se a aplicação consciente de localização, de acordo com as características já descritas. Nela, pode-se deduzir estado interno ou externo, usando sensores ou monitores e ajustando-se a novos estados. Seu comportamento é baseado em onde a aplicação está sendo executada (localização).

Além disso, a decisão de adaptação ocorre dentro da própria aplicação, sendo executada pela mesma ou pelo sistema de suporte. Todas as informações de contexto

(18)

são usadas; entre elas, pode-se citar: localização, dispositivos, perfis de equipamentos e de rede, atividades e objetos computacionais.

Existem diversas plataformas capazes de gerenciar o desenvolvimento de aplicações para dispositivos móveis. Entre elas, pode-se destacar Blackberry OS, Apple iOS, Symbian, Windows Phone e Google Android (Costa, 2011).

O Blackberry OS é uma plataforma desenvolvida e utilizada pela empresa Reseach In Motion (RIM). (Richter, 2009). A linguagem de programação usada é JavaME (RIZK, 2009), com base nos padrões Java CLDC, que define interfaces de baixo nível necessárias para funcionamento da máquina virtual Java em dispositivos móveis, e MIDP, que especifica APIs para desenvolvimento de aplicativos para celulares que usem como base o CLDC (Oracle, 2010).

O iOS é um sistema operacional desenvolvido pela Apple para seus dispositivos móveis, que consistem nos smartphones da linha iPhone, nos tocadores de mídia da linha iPod e nos tablets da linha iPad. O primeiro aparelho com este sistema operacional foi o iPhone, que foi anunciado no início de 2007 (Honan, 2007).

O núcleo do iOS tem como base o mesmo núcleo utilizado no sistema operacional da Apple para notebooks e desktops, contendo quatro camadas: Core OS, Core Services, Media e Cocoa Touch. As duas primeiras utilizam a linguagem de programação C e controlam o funcionamento básico do sistema como acesso a arquivos e sockets de rede. A terceira camada une as linguagens C e Objetive-C e manipula de áudio, vídeo, figuras 2D e objetos 3D. Já a última camada é a de mais alto nível, utiliza apenas Objective-C e serve de base para o desenvolvimento de qualquer aplicativo (Apple, 2011).

O Symbian teve como origem um sistema operacional orientado a objetos chamado EPOC, que foi desenvolvido pela empresa Psion. Em 1998, a Psion se uniu a grandes produtoras de aparelhos celulares com o objetivo de aperfeiçoar e licenciar seu sistema operacional, que passou a se chamar Symbian (Babin, 2006). Desde então mais de 100 modelos de aparelhos utilizando Symbian também foram colocados no mercado, a maioria deles produzidos pela Nokia.

A Microsoft anunciou no final de 2010 o Windows Phone 7. Para desenvolver aplicações para este sistema pode-se utilizar as linguagens C# ou Visual Basic (Microsoft, 2011). As ferramentas de desenvolvimento são gratuitas, porém para

(19)

distribuir aplicativos na Windows Marketplace (loja de aplicativos deste sistema operacional) é necessário pagar uma anuidade (Microsoft, 2011).

A história do sistema operacional Android começou em 2005, quando a Google comprou uma pequena empresa chamada Android Inc., que já trabalhava no desenvolvimento de um sistema operacional para dispositivos móveis (Elgin, 2005). Dois anos mais tarde a Google, juntamente com várias outras empresas de tecnologia, anunciaram a criação do Open Handset Alliance (OHA), cujo objetivo é desenvolver padrões abertos para dispositivos móveis, e o primeiro produto nascido dessa parceria foi o sistema operacional Android (OHA, 2011).

A principal diferença entre o Android e seus concorrentes é sua filosofia aberta: qualquer pessoa que se interesse pode visualizar o código fonte desse sistema operacional, e qualquer pessoa pode desenvolver novos aplicativos para substituir os já existentes.

2.1.1 – Plataforma Android

A plataforma Android tem seu código aberto, sendo que qualquer pessoa que tenha interesse pode ver e alterar o código fonte. Isso expande a possibilidade de vínculos e deixa o Sistema Operacional cada vez mais disponível de acordo com as necessidades do cotidiano das pessoas (Ferreira, 2010).

Android é uma plataforma que integra hardware e software, ou seja, uma pilha de software para dispositivos móveis que tem seu próprio Sistema Operacional, middleware e as aplicações básicas necessárias para que o seu funcionamento seja operacional e satisfatório (Android Developers, 2010).

A plataforma Android incorpora um sistema operacional que, baseado no Kernel Linux 2.6, provê um conjunto de aplicações e APIs (Application Programing Interface), sendo desenvolvida na grande maioria em linguagem Java para o desenvolvimento de aplicações de terceiros.

As aplicações são desenvolvidas e compiladas para a máquina virtual Dalvik, projetada especialmente para a plataforma Android e baseada nas características de sistemas móveis, tais como limitação de processamento e necessidade de economia de energia. (Ferreira, 2010).

(20)

* Framework para desenvolvimento de aplicações: A plataforma oferece frameworks para o desenvolvimento de aplicações, permitindo a reutilização de código e facilitando a acesso a recursos dos dispositivos móveis;

* Máquina virtual Dalvik: Criada e otimizada para dispositivos móveis e

suas limitações;

* Navegador web integrado: Baseado no projeto open source webkit – o

mesmo utilizado nos aparelhos Apple iPhone e Nokia série 60;

* Biblioteca de gráficos otimizada para dispositivos móveis: Biblioteca

para gráficos 2D e 3D baseada na especificação OpenGL ES 1.1, com aceleração de hardware como opcional;

* SQLite: Permite o armazenamento de dados estruturados;

* Suporte multimídia: Oferece compatibilidade com os principais formatos

existentes, entre eles mpeg4, h.264, mp3, aac, amr, jpg, png e gif;

* Telefonia com tecnologia GSM: As aplicações podem manipular

operações telefônicas, caso o fabricante permita esse acesso;

* Bluetooth, EDGE, 3G e WiFi: Permite o uso das principais tecnologias de

transmissão de dados sem fio, também depende da permissão do fabricante para acesso;

* Câmera e GPS: Permite o acesso a imagens e vídeos gerados por câmeras

dos dispositivos e o acesso a informações de localização do dispositivo;

A arquitetura da plataforma Android é dividida em cinco camadas principais, denominadas como (Schemberger, 2009):

* Kernel GNU Linux: Camada mais baixa da arquitetura, que é responsável

por gerenciar processos e threads, memória, arquivos e pastas, redes, drivers dos dispositivos e recursos de energia;

* Bibliotecas: A camada de Bibliotecas é formada por um conjunto de

bibliotecas escritas em C/C++. Nelas, tudo é disponibilizado aos desenvolvedores através do Framework de aplicações;

* Frameworks para aplicações: Os frameworks são a base para a construção

de aplicações. Pensando na reutilização dos componentes, uma aplicação pode capturar funcionalidades de outra criada anteriormente para o seu desenvolvimento.

* Runtime: A base de desenvolvimento do Android é a linguagem Java,

(21)

otimizada para interpretar códigos em dispositivos móveis. O controle da execução desta máquina virtual é controlado pela camada de Runtime;

* Aplicações necessárias para a execução dos aplicativos nos dispositivos:

Conjunto de aplicações do Android, como navegador Web, cliente de e-mail, calendário. Todas as aplicações presentes nesta camada foram desenvolvidas na linguagem Java.

As camadas apresentadas anteriormente podem ser observadas com maiores detalhes na Figura 1.

Esta plataforma possui um grupo de componentes essenciais que o sistema pode instanciar e executar sempre que for necessário. Este grupo é formado pelos seguintes elementos (Pereira, 2009):

Activities: São os componentes mais usados. Geralmente são representados por uma tela na aplicação. Sua interface é composta por Views, consistindo de várias telas que correspondem a eventos programados de forma prévia. Cada Activity é uma especialização da classe Activity e possui um ciclo de vida específico, como pode ser visto na Figura 2.

(22)

Figura 2 - Ciclo de uma Activity. Fonte (Pereira, 2009)

O ciclo de vida de uma Activity é baseado na execução dos seguintes métodos de controle:

* onCreate() – Chamado quando uma Activity é criada pela primeira vez. É nela que você pode fazer a configuração estática, por exemplo, vincular dados com um Bundle, criar view etc. Após sua execução sucedida, sempre será chamado o onStart().

* onRestart() – Chamado sempre quando uma Activity é interrompida antes de ser iniciada novamente. Após sua execução sucedida, sempre será chamado o onStart().

* onStart() - Chamado quando uma Activity está se tornando visível para o usuário. Vai para o método onResume().

* onResume() - Chamado quando a Activity começa a interagir com o usuário. Sua Activity está no topo da pilha de Activities, com a entrada do usuário apontando para ele.

(23)

* onPause() - Chamado quando o sistema está prestes a retomar uma Activity anterior. É normalmente utilizado para confirmar alterações não salvas, por exemplo, persistência de dados, animações etc. Uma observação: a implementação deste método deve ser rápida, porque a próxima atividade não será retomada até que esse método retorne, ou finalize. Vai para onResume() se a Activity vai para frente “back to the front” ou onStop se for tornada invisível para o usuário.

* onStop() – Chamado quando a Activity já não é visível para o usuário, porque outra Activity foi retomada e está cobrindo esta. Isto pode acontecer se, uma nova Activity esta sendo criada, se a Activity já criada está trazendo outra Activity à frente desta ou se a Activity principal está sendo destruída. Vai para onRestart() se a Activity está voltando para interagir com o usuário, vai para onCreate() caso seja criado uma nova Activity ou vai para onDestroy() se essa Activity está sendo fechada.

* onDestroy() – Destrói a Activity para liberar espaço em memória.

A movimentação de uma atividade para outra ocorre através da Intent, que são requisições disparadas pelas atividades descrevendo o que pode ser feito em caso de acionamento.

Services: São códigos sem interfaces de usuários, que rodam em segundo plano, sem ser interrompidos com a troca de atividades. O Service mantem-se ativo até que seja recebida outra ordem, não tendo ciclos curtos de vida como as Activities. Quando conectado como o serviço, pode-se comunicar com este através de uma interface que é apresentada ao usuário.

Broadcast Receivers: Trata como será a reação quando uma aplicação recebe um evento externo. Pode ser ocasionado com o tocar do telefone, quando houver rede disponível, em um horário específico. Não possui interface de usuário.

Content Providers: É uma forma de compartilhar dados entre aplicativos. Permite que outras aplicações possam armazenar e recuperar dados no mesmo repositório usado por aquela aplicação.

A linguagem de programação utilizada na plataforma Android é Java, mas, em trechos de programa onde é necessário maior desempenho, pode-se usar as linguagens C ou C++ (Google, 2011). Como é compilado e executado na máquina virtual Dalvik, o ambiente Android possui algumas características um tanto diferenciadas no que tange a versão do Java.

(24)

O código fonte das duas “versões” do Java (Android e convencional) é semelhante, porém, o código intermediário da plataforma Android difere do Java convencional no que tange à arquitetura de execução do código, ou seja, a forma como o Java no Android executa é diferente do mesmo processo em Java Convencional (Lehmann, 2010).

Enquanto a plataforma Android executa em máquina virtual Dalvik, o Java em ambientes com Sistemas Operacionais (computadores e notebooks) executa em uma máquina de pilha, a máquina virtual Java convencional. A Figura 3 mostra um exemplo de ambiente de programação Java para Android.

Depois das aplicações Android terem sido escritas em Java, o código das mesmas é compilado e empacotado juntamente com outros recursos utilizados pela aplicação em um arquivo com extensão .apk, por onde ocorre a distribuição para os usuários instalarem a aplicação em questão em seus próprios dispositivos móveis (Martins, 2009).

(25)

2.1.2 – APIs

Em Android, as APIs permitem uma modificação completa através da programação de seu conteúdo. Um ponto positivo é sua otimização, com foco nos pacotes e com bom aproveitamento, deixando de lado pacotes lentos e pesados. Com as APIs pode-se criar a interface com o usuário, permitindo toda a funcionalidade que o utilizador precisa (Lecheta, 2009).

As principais APIs utilizadas neste trabalho foram: * Android.util: contém classes utilitárias.

* Android.app: APIs de alto nível relacionadas ao modelo da aplicação. *Android.os: contém serviços relacionados ao Sistema Operacional, passagem de parâmetros e comunicação entre processos.

2.2 Computação Pervasiva

A Computação Pervasiva é um novo paradigma que contempla cenário computacional onde aplicações, com novas funcionalidades formam ambientes inteligentes (Augustin, 2009). Estas aplicações são distribuídas e utilizam recursos de uma grande variedade de dispositivos interligados em uma rede altamente heterogênea a fim de tornar as aplicações cada vez mais sensíveis ao usuário (Ries, 2007).

O conceito de Computação Pervasiva também se define por possuir meios de computação distribuídos no ambiente de trabalho dos usuários de forma perceptível ou não (Bolsoni, 2009). A Computação Pervasiva está diretamente relacionada à integração de dispositivos, informações e sistemas.

Aplicações pervasivas caracterizam-se pela adaptação diante das constantes mudanças em seu estado de execução, geradas pelos ambientes altamente dinâmicos em que são executadas (Lopes, 2008). A fim de trabalhar este dinamismo e tendo a necessidade de cada vez mais responder às mudanças em seu estado de execução, as aplicações precisam ter capacidade de contexto e adaptação.

Contexto pode ser definido como um conjunto de informações, que combinadas caracterizam entidades consideradas importantes na relação entre usuários e aplicações (Dey and Abwod, 2000). Este contexto é de fundamental importância na definição e uso da computação pervasiva.

(26)

Ambiente pervasivo é o local onde aplicações pervasivas interagem com os usuários, de forma invisível e onipresente, como pode ser observado na Figura 4.

Um ambiente é representado por um conjunto de entidades, como dispositivos, usuários, redes e locais que sejam relacionados ao contexto computacional da aplicação (Ramón, 2002). Ambientes pervasivos podem ser utilizados em diversas áreas do conhecimento, como por exemplo, (Ries, 2007): ambientes acadêmicos, ambientes corporativos, ambientes turísticos, ambientes residenciais, ambientes para negócios, e ambientes hospitalares.

O paradigma da Computação Pervasiva impõe novos requisitos de operação aos sistemas. O trabalho realizado por Augustin (2004) elencou um conjunto de requisitos de sistemas pervasivos. Estes requisitos são apresentados a seguir:

* Inferir intenção do usuário: O sistema deve deduzir a intenção do usuário; * Gerenciar pró-ativamente as atividades do usuário: O sistema deve estar preparado para responder às necessidades do usuário;

* Mover estado de execução entre diversas plataformas e estados de contexto; * Tornar dados e códigos disponíveis em qualquer lugar, em qualquer formato.

As redes pervasivas caracterizam-se por níveis muito elevados de heterogeneidade para que sejam capazes de executar aplicações com desempenho satisfatório e ainda se conectar a vários tipos de dispositivos. Isso implica em uma

(27)

rede com diversas subredes, onde cada uma possui um protocolo de comunicação diferente da outra (Ries, 2007).

Com base nestas informações sobre Computação Pervasiva, percebe-se o quão útil ela pode ser nas diversas áreas do conhecimento, inclusive na área da logística, que pode ter na Computação Pervasiva, um grande aliado no seu processo de gerenciamento.

Na parte da logística, ainda há inúmeros problemas, falhas e até mesmo prejuízos justamente por não haver um método que atualize dados em tempo real, para que o seu gerenciamento seja mais preciso e correto, ou pela exigência de hardwares específicos para o controle de logística (Ballou, 2004).

(28)

3. LOGÍSTICA E COMPUTAÇÃO APLICADA NA ÁREA DE

LOGÍSTICA

A área de logística passou de parte acessória e complementar ao processo produtivo para peça fundamental no posicionamento estratégico de empresas, tendo em vista o processo de criação de valor e entendimento das necessidades dos clientes, cada vez mais exigentes em termos de prazos, preços e serviços (Robles, 2001).

3.1 - Logística

A logística se faz presente em todas as situações, sejam elas profissionais ou pessoais. Todas as áreas de qualquer empresa ou instituição têm metas e fases a serem desenvolvidas e a logística permite que essas metas se desenvolvam. Mesmo que não seja percebida (Fernandes, 2008).

A logística avança dentro das empresas com a necessidade de não ser mais qualificada como um departamento secundário, sem importância; mas sim, sendo um setor que caminha para uma estratégia integrada, que tem por objetivo apoiar as necessidades operacionais. A administração deve ser um esforço integrado para atingir a satisfação do cliente pelo menor custo total. A logística realizada dessa maneira gera valor (Fernandes, 2008). Esse valor, que comprovadamente é perdido em casos de gerenciamentos de logística mal realizados (Fleury, 2012).

Como pode ser observado na Figura 5, controles de logística envolvem a interligação (utilizando estratégia operacional) de três atividades principais: armazenar, transportar e distribuir. A soma dessas três atividades básicas e distintas necessita de uma grande gestão integrada a fim de formar o conjunto denominado logística (Fernandes, 2008).

(29)

A integração das fases deve ocorrer em momentos sincronizados, sendo que desencontros e/ou restrições de informações podem causar sérios problemas no controle de informações de logística.

Desta forma, constata-se que quando os processos de logística são mal estruturados, há perdas consideráveis, desde perdas de produtos no transporte e danos de mercadorias até atraso nos prazos de entrega, entre outras situações. Serviços de logística executados de forma incorreta causam impactos em todas as outras áreas, desde vendas e relacionamento com clientes até segurança da própria empresa. Atrasos, danos, perdas, segurança, danos ao meio ambiente, roubos, são algumas situações ocasionadas por uma logística sem estrutura (Vieira et al, 2010).

Há três razões principais que justificam a necessidade de informações precisas e a tempo para tornar eficaz um sistema logístico (Simchi-Levi, Kaminsky, 2010):

* A percepção dos clientes, que informações sobre situação do pedido,

disponibilidade de produtos, programação de entrega e faturamento, são elementos do serviço total ao cliente;

(30)

* A possibilidade das metas de redução de estoque na cadeia de suprimentos a serem alcançadas com a utilização de informações que possibilitem gerenciar de forma eficaz as necessidades de estoque e recursos humanos;

* O aumento da flexibilidade, permitindo identificar por meio das informações (qual, quanto, como, quando e onde), os recursos que podem ser utilizados para que se obtenha vantagem estratégica.

O trabalho apresentado por Paiva (2004) apresenta a existência de cinco critérios competitivos na área de operações que se relacionam à estratégia de negócios, e consequentemente, o gerenciamento de logística: custo, qualidade, desempenho de entrega, flexibilidade e inovação. Esses critérios são separados em dois grupos:

* Critérios ganhadores de pedidos: distinguem empresas e instituições de acordo com a concorrência;

* Critérios qualificadores: são os critérios mínimos exigidos a fim de satisfazer um padrão de desempenho e sendo definidos por um mínimo nível necessário para participar de uma concorrência.

A logística possui papel muito importante dentro destes critérios e sua integração com todas as outras áreas colabora em promover a necessidade de atender sempre as pessoas de forma satisfatória e com capacidade competitiva.

A competitividade é de extrema importância para que haja ganhos em qualquer empresa ou instituição (Fernandes, 2008). A Figura 6 ilustra um modelo para a logística integrar os cinco critérios competitivos.

(31)

3.2 – Computação Aplicada à Logística

A área de logística exige cada vez mais uma maior eficiência na execução de seus processos. Está surgindo uma grande necessidade de encontrar formas de torna-la mais eficaz e lucrativa, um dos meios encontrados é o intercâmbio eletrônico de dados (Vieira et al 2010).

O intercâmbio eletrônico de dados está sendo usado como uma ferramenta estratégica pelas empresas, principalmente na relação cliente-fornecedor, podendo ser definido como o movimento eletrônico de informações entre comprador e vendedor, facilitando transações entre ambos (Silveira, 1997).

Esse tipo de intercâmbio é realizado através de uma rede de acesso direto aos clientes do provedor, permitindo conexão entre os sistemas eletrônicos de informação entre empresas, independente dos sistemas e procedimentos utilizados no interior de cada uma dessas empresas (Pizysieznig Filho, 1997).

As transações que mais frequentemente usam o intercâmbio eletrônico de dados são as de compras, transporte e de pedidos entre sistemas e vendedores (Lummus, 1997).

O intercâmbio eletrônico de dados ajuda a conduzir negócios de ordenação, armazenamento e outras funções que eliminam gastos e papéis de trabalho (Mooney, Pittman, 1996 apud Porto, 2000b, p.7).

Junto ao conceito de troca de informações de forma eletrônica, existem os sistemas de gerenciamento de informações de logística, que têm por objetivo ligar as atividades logísticas em um processo integrado, combinando hardware e software para medir, controlar e gerenciar operações logísticas (Nazário, 1999).

São muitos os sistemas informatizados que dão sustentação a essa área, tais como:

* ERP (Enterprise Resource Planning/Sistemas Integrados de Gestão

Empresarial): Ferramenta tecnológica de gestão empresarial, utilizada por empresas de vários países. Os destaques ficavam na área administrativa, entre os quais Contabilidade, Controle Patrimonial, Estoque, Contas a Pagar/Receber e Folha de Pagamento (Jesus, Oliveira, 2007).

* MRP (Material Requirement Planning/Planejamento das necessidades de

(32)

gestão de forma a minimizar os custos, mas mantendo os níveis de material adequados e necessários para os processos produtivos da empresa (Jesus, Oliveira, 2007).

* MRP II (Manufacturing Resource Planning II/Planejamento de Recursos

de Fabricação II): Sistema MRP com alguns incrementos: o Gerenciamento dos Recursos Humanos, Vendas e Distribuição, Finanças e Controladoria (Padilha, Marins, 2005).

* EDI (Electronic Data Interchange/Intercâmbio Eletrônico de Dados): Tem

por principal objetivo a troca de documentos comerciais, através de computadores, entre empresas, tendo a possibilidade de envolver os setores financeiro, comercial e industrial (Cavalcanti, 1995).

* TMS (Transportation Management System/Sistema de Gerenciamento de

Transportes): importante ferramenta que auxilia nos processos de planejamento, execução e controle das atividades relativas à: Consolidação de carga, expedição de cargas, emissão de documentos, entregas e coletas de produtos, rastreabilidade da frota e de produtos, auditoria de fretes, apoio à negociação, planejamento de rota, monitoramento de custos e nível de serviço, planejamento e execução de manutenção da frota (Cavalcanti, 2011).

* WMS (Warehouse Management System/Sistema de Gerenciamento de

Armazém): responsável pelo gerenciamento da operação do dia-a-dia de um armazém. Sua utilização está restrita a decisões totalmente operacionais, tais como: definição de rotas de coleta, definição de endereçamento dos produtos, entre outras (Guarnieri et al, 2006).

Isso acontece porque o fator mais crítico da logística é a informação, e para a obtenção de informações precisas e no tempo necessário é preciso um sistema eficiente, o que só é possível com a TI presente (Pereira et al 2010). A Figura 7 apresenta um exemplo de interligação entre redes de fornecedores e subfornecedores.

(33)

Figura 7 - Rede Globalizada de logística hoje (Machline, 2011)

A aplicação de tecnologias provenientes da computação melhora os processos de gerenciamento, interfaces e o inter-relacionamento entre processos da área de logística; por exemplo, quando a solicitação da produção está associada a dados de vendas.

A logística dos fornecedores em tempo real causa um entrosamento, que pode não só criar eficiência de produção, mas também melhorar o relacionamento com os clientes, por meio de uma resposta mais rápida a essas solicitações (Graeml, 2000).

O fluxo de informações é um elemento de grande importância nas operações logísticas. Mas, mesmo com a utilização da computação no setor, ainda há problemas que precisam ser solucionados. Um dos principais pontos é o fato de que a grande maioria dos sistemas de gerenciamento não são integrados por completo, dificultando a troca segura de informações (Nazário, 1999).

Para solucionar este problema de integração, entre outros, surge como objeto de estudo a integração de tecnologias provenientes da Computação Pervasiva. Utilizando o gerenciamento de processos de logística integrados e unindo-os à Computação Pervasiva, pode-se obter informações oportunas, que, de acordo com Rezende (2002), são aquelas informações geradas e forma antecipada, completa, útil

(34)

e com qualidade, para uma tomada de decisão. Assim processos de logística poderão ser muito mais eficientes.

Através destes estudos acredita-se que a melhor forma de gerenciar de forma eficaz todos os processos que envolvem a logística seja através do uso da Computação Pervasiva. A próxima subseção apresenta um estudo sobre os trabalhos relacionados com a integração de Computação Pervasiva e a área de logística.

3.3 - Trabalhos relacionados

Atualmente estão sendo realizados vários trabalhos na área da computação pervasiva. Entre eles destaca-se o trabalho de Saccol et al (2007), que apresentam uma pesquisa sobre estado-da-arte e oportunidades de pesquisa nas áreas de computação móvel e ubíqua. Os autores apontam como principais tecnologias discutidas, as tecnologias móveis / sem fio e telefones celulares com acesso à internet.

A amostra realizada neste estudo indica que a área das tecnologias móveis, sem fio e ubíquas ainda tem poucos estudos, indicando a oportunidade e possibilidade de pesquisas futuras que sejam capazes de oferecer contribuições consistentes sobre o uso desta tecnologia.

Já entre os principais temas abordados ainda pelos mesmos autores destacam-se os desafios tecnológicos em relação à computação ubíqua e os efeitos do uso de tecnologias móveis/sem fio sobre trabalhadores.

Na área da computação pervasiva aplicada à logística, destaca-se o trabalho apresentado por Hwang (2006), que analisa um novo paradigma de e-logistic, um sistema de logística baseado em tecnologia ubíqua.

(35)

A Figura 8 apresenta um exemplo de tecnologia ubíqua no sistema de logística aplicado em sistema de logística industrial. Nela, as etiquetas RFID são usadas em processo da fabricação, armazém e entrega. Mesmo utilizando sistema ubíquo, as características SCM dos clientes e da parte logística não se alteram. Os principais dados transmitidos por dispositivos móveis e rede sem fio.

O trabalho realizado por Hwang (2006) apresentou três pontos fundamentais na união da Computação Ubíqua e o SCM: auto crescimento, autonomia e sensibilidade ao contexto. Tais pontos permitem uma tomada de decisão proativa, agilizando o processo de gerenciamento de logística mais confiável e eficaz.

Foi feita uma análise do mapa de tendência técnica de onipresença e sua aplicação em SCM/Sistemas Logísticos (Supply Chain Management – Gestão de Cadeia de Logística. Métodos e instrumentos que visa automatizar e melhorar o abastecimento.) ser capaz de apoiar o projeto do sistema.

Ao final, o trabalho sugeriu um planejamento de pesquisa cooperativa para o Sistema de Gerenciamento de Logística. Essa pesquisa seria feita unindo o centro de Computação Ubíqua do governo do seu país, universidades e indústrias.

(36)

Outro estudo realizado na área de computação pervasiva aliada à logística (Kim et al, 2010), apresenta parte de um sistema de logística para um novo mercado de Ocean Blue, uma estratégia de negócio na qual se visa atrair um mercado previamente não explorado e explorá-lo, eliminando a concorrência e maximizando os lucros. A Figura 9 mostra uma infraestrutura logística baseada em sistema ubíquo.

A estratégia do Ocean Blue oferece formas de escapar da intensa competição no mesmo espaço de mercado, mas de forma a haver menor concorrência. A ideia proposta consiste em partir para novos mercados, em que a concorrência é pouca ou nenhuma, ou seja, gerar um ciclo de inovação permanente.

O serviço de logística que seja feito de forma sistemática e eficiente tornou-se um dos principais serviços de suporte de empresas, utilizando estratégias inovadoras a nível mundial. Essas estratégias incluem expansão da tecnologia e internet das empresas, propondo novos modelos de negócio baseados em sistemas de informação para logística, incluindo implementação de rádio frequência baseados em sistemas de logística ubíquos.

Este estudo mostra o modelo CJ-GLS (CJ-Global Logistics Service), um negócio com estratégia Ocean Blue para mostrar como uma empresa pode reforçar sua vantagem competitiva para se mover em direção a um menor espaço no mercado competitivo novo pela utilização de tecnologias de informação.

(37)

Com base nos projetos apresentados, suas propostas, e principalmente a carência de propostas concretas usando computação móvel, em tempo real, nos processos logísticos, é apresentada no próximo capítulo uma nova ferramenta. Essa ferramenta é usada em dispositivos móveis, e abrange a troca, em tempo real, de dados e informações.

(38)

4. UMA FERRAMENTA DE CONTROLE DE LOGÍSTICA EM

TEMPO REAL

Com base nos estudos realizados, percebe-se claramente a necessidade de um sistema que seja capaz de gerenciar, em tempo real, os processos de logística. Para tal, foi criado um protótipo de uma ferramenta capaz de realizar tal gerenciamento. Nas próximas seções deste trabalho são apresentados todos os detalhes da ferramenta em questão.

4.1 - Levantamento de Requisitos

Cada vez mais, a logística envolve tantos setores que sem um gerenciamento correto usando a TI, não haveria mais organização e nem evolução (Vieira, et al, 2010). Esta necessidade de gerenciamento dos processos logísticos pode ser unida ao crescente desenvolvimento de estudos e aplicações na área da computação móvel e pervasiva.

Com este estudo, pretende-se gerar um protótipo de um sistema que possa tratar todo o gerenciamento do processo de logística, usando o diferencial que a computação móvel proporciona.

Esta aplicação deve conter a captação de dados do motorista, da viagem e do veículo através de um dispositivo móvel que contenha Sistema Operacional Android. Tais dados envolvem posição (via GPS), data e hora, entre outros; que devem ser salvos em um documento e enviados ao servidor Exist, que irá processá-los.

Além da captação dos dados, a aplicação deve receber e ler documentos constantemente enviados por um servidor. Estes documentos são responsáveis por passar informações como nova viagem e seus dados: destino com trajeto em mapa, datas e horários de partida e chegada, paradas previstas, placa de veículo, tipo de carga, quantidade, tempo total de viagem, tempo de viagem já realizados.

Estes mesmos dados são apresentados nas próximas três viagens previstas e nas últimas três realizadas.

(39)

Outro diferencial que esta aplicação apresenta é a possibilidade de gerar e enviar um relatório ao servidor informando que houve alguma alteração necessária no percurso previsto. Como, por exemplo, pode-se citar uma parada para troca de pneus e, consequentemente, uma mudança em hora e, até mesmo, data de chegada, desvios no trajeto, entre outros.

Com o constante envio de dados, mesmo que ocorram alterações não previstas e o motorista não envie o relatório, no servidor estes dados são processados e pode-se tomar medidas cabíveis com relação a estas alterações.

Para tal, utilizou-se o sistema operacional Android, com a versão 2.3.4, oferecendo compatibilidade com a versão 2.3.3.

4.2 - Modelagem de dados

A modelagem de dados deste estudo foi feita visando a melhor forma de atender às necessidades de troca de informações em tempo real. Foi pensado na realidade vivenciada por quem trabalha no dia-a-dia com transportes.

Para atender a essas necessidades, foi pensada uma estrutura com transportadores, todos portando dispositivos móveis. Assim torna-se concreta a possibilidade de recebimento e envio de informações.

Além disso, buscou-se apresentar a rede sem fio como forma de troca de dados, possibilitando envio e recebimento de dados em qualquer ponto que o portador do dispositivo móvel esteja, desde que tenha sinal de internet. A Figura 10 representa a estrutura com a modelagem dos dados realizada para este trabalho.

(40)

Figura 10 - Modelagem dos dados da aplicação proposta 4.3 - Implementação

Após a modelagem dos dados necessários, iniciou-se a etapa de desenvolvimento de um protótipo para a utilização de informações geográficas em tempo real para a área de logística.

Para apresentar os resultados pretendidos nesta aplicação, foi necessária uma divisão ao longo do desenvolvimento, sendo que houve uma aplicação móvel e a exportação dos dados coletados para arquivos XML. Estes arquivos por sua vez são armazenados no banco de dados eXist. Na aplicação móvel, foram criadas interfaces via XML, depois feita a parte lógica, com as classes e o controle do funcionamento das classes, e por fim, o envio dos documentos gerados para o eXist.

4.3.1 – Aplicação Móvel

O desenvolvimento da aplicação móvel foi o principal foco deste trabalho. Para que o mesmo executasse da forma desejada e atingisse todos os objetivos propostos, foram criadas diversas interfaces, buscando sempre ser o mais amigável

(41)

possível, com as classes contendo os processos e os controles, responsáveis pela correta execução das classes.

Ao todo foram criadas 21 (vinte e uma) interfaces, responsáveis por exibir na tela informações, botões, avisos e até mesmo o mapa ao usuário do dispositivo móvel. Pode-se destacar algumas delas, como por exemplo:

* Menu: mostra no celular as opções ao usuário de visualizar dados da

viagem atual, das próximas viagens ou das anteriores, além de mostrar ao usuário a opção de gerar um relatório sobre alguma alteração realizada ao longo do percurso.

* Mapa: exibe um mapa na tela do celular contendo o trajeto planejado para a

viagem em questão.

*Av_viagem_iniciada: apresenta um aviso, indicando que há uma nova

viagem a ser iniciada pelo motorista responsável por aquele dispositivo móvel. Na parte lógica estão todas as classes que tem funções de realizar algum processamento de informações. Ao total foram criadas 15 (quinze) classes, que são:

*Aviso_a_viagem_comecou: é uma classe responsável por exibir na tela um

aviso depois que o motorista iniciar nova viagem. Esta mensagem é o informe de que a viagem começa a partir deste momento. Segue abaixo um trecho do código desta classe.

AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setMessage("A Viagem Começou!");

dialog.setPositiveButton("OK", new DialogInterface.OnClickListener()

*Aviso_viagem_iniciada: classe que mostra um aviso na tela avisando que

há uma nova viagem. O motorista, ao vê-la, tem a opção de visualizar os detalhes da viagem ou sair e visualizar mais tarde. Um trecho de código pode ser visualizado no seguinte trecho, sendo um aviso consideravelmente importante, pois assim o usuário do dispositivo móvel saberá quando chegou uma nova viagem.

AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setMessage("Você tem uma nova viagem");

dialog.setPositiveButton("Ver", new DialogInterface.OnClickListener() {

*Dados_Motorista: Exibe na tela os dados do motorista para a viagem, como

por exemplo, paradas previstas, tempo de viagem atual e tempo de viagem previsto. Em seguida pode-se visualizar um trecho do código desta classe.

(42)

findViewById(R.id.autoCompleteTextView1); paradas.setText(paradasp);

TextView tempviatual = (TextView) findViewById(R.id.autoCompleteTextView2); tempviatual.setText(tempatual);

TextView tempviprev = (TextView) findViewById(R.id.autoCompleteTextView3);

tempviprev.setText(tempprev);

*Dados_Veiculo: Mostra os dados do veículo que deve ser usado na viagem,

como por exemplo, placa, carga, quantidade da carga, posição inicial e final, entre outros. Os códigos das classes Dados_Veículo e Dados_Viagem são muito semelhantes e seguem o mesmo padrão que a classe Dados_Mostorista.

*Dados_Viagem: Essa classe é responsável por exibir dados da viagem,

como data e hora de partida e chegada.

*H_PV: Esta classe mostra ao usuário a lista com as três (3) últimas viagens

realizadas ou as próximas três, dependendo de um valor enviado em outra classe. Abaixo pode-se visualizar um trecho deste código, onde o usuário seleciona a viagem desejada.

ItemListView item = adapterListView.getItem(arg2);

Toast.makeText(this, "Você Clicou em: " + item.getTexto(), Toast.LENGTH_LONG).show();

Intent intent = getIntent();

clique = intent.getStringExtra("clique");

*Mapa: Exibe na tela um mapa com o trajeto previsto para a nova viagem

que está sendo iniciada. Segue abaixo um trecho do código, responsável por gerar e exibir o mapa na tela.

uri Uri.parse("http://maps.google.com/maps?&saddr=-27.870833,-54.481390&daddr=-30.033056,-51.58");

*Mostra_H_PV: Mostra na tela os dados da viagem anterior ou próxima que

for selecionada pelo usuário. Abaixo segue um trecho do código desta classe mostrando como exibe os dados.

Intent intent = getIntent();

nome = intent.getStringExtra("nome");

data_Sai = intent.getStringExtra("data_Sai"); ...

TextView view = (TextView) findViewById(R.id.historicoview1); view.setText("Nome: "+nome);

TextView view1 = (TextView)

(43)

view1.setText("Saída: "+data_Sai);

*Pega_Data_Hora: Pega a data e a hora atual do dispositivo móvel. A data e

hora do dispositivo móvel pode ser pega usando o código citado logo abaixo. O retorno dado quando esta classe for chamada é uma String contendo data e hora, nos padrões americanos.

Date d = new Date();

*Pega_GPS: Classe que pega a posição do GPS do dispositivo móvel.

Abaixo pode ser visualizado um trecho do código que realiza esta função. this.c = c;

lm = (LocationManager)c.getSystemService(Context.LOCATION_SERVICE); location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

*Recebe_H_PV: Classe que recebe o conteúdo do documento das viagens já

realizadas ou ainda por realizar, de acordo com o que o usuário selecionar. Esse conteúdo é salvo em vetores de acordo com os dados. Abaixo pode-se visualizar a forma de armazenamento em vetores:

arq = new File(Environment.getExternalStorageDirectory(), lstrNomeArq);

BufferedReader br = new BufferedReader(new FileReader(arq)); while ((lstrlinha = br.readLine()) != null) {

if (!txtLer.equals("")) { txtLer = txtLer.concat("\n"); } linha = xStream.fromXML(lstrlinha).toString(); if (a<19){ vet1[a] = linha; }

if (a>18 && a<38){ vet2[xx] = linha; xx++; } if (a>37){ vet3[xxx] = linha; xxx++; } ... Nome[0] = vet1[1]; Nome[1] = vet2[1]; Nome[2] = vet3[1];

Em seguida, verifica-se qual foi a viagem selecionada e exibe seus dados na tela, como pode ser observado nos trechos de código abaixo.

if(numero.equals(Viagem1)){ num = 0;

(44)

...

public void getNome(){ nome= Nome[num]; }

*Recebe_Xstream: Recebe dados da nova viagem, armazena em um vetor e

retorna quando for instanciada. A forma de leitura e armazenamento segue o mesmo padrão que o usado na classe Recebe_H_P_V, porém com apenas um vetor que armazene tudo, pois são dados de apenas uma viagem.

*Relatorio: Classe responsável por salvar em um documento xml os dados do

relatório gerado pelo usuário. Abaixo pode ser visto um trecho do código, mostrando como é feita a inserção dos dados pelo usuário para geração de relatório.

texto = (EditText) findViewById(R.id.editText1);

Button relatorio = (Button) findViewById(R.id.button1); relatorio.setOnClickListener(new OnClickListener() { public void onClick(View v) {

documenta = texto.getText().toString();

Além disso, esse documento é salvo em um arquivo xml, como pode ser observado no trecho de código abaixo.

arq = new File(Environment.getExternalStorageDirectory(), lstrNomeArq);

System.out.println(arq.toString()); FileOutputStream fos;

dados = relatorio.getBytes(); fos = new FileOutputStream(arq);

fos.write(dados); fos.flush();

fos.close();

*Viagem_iniciada: Esta classe contém os botões viagem, motorista, veículo,

iniciar e sair, e direciona em caso de clique.

Todas as classes criadas na implementação da aplicação móvel podem ser visualizadas mais detalhadamente na Figura 11, que representa o diagrama de classes da aplicação.

(45)
(46)

O controle contém as classes que são responsáveis por ter sob seu domínio as classes da parte lógica, gerenciando para que as mesmas realizem as tarefas de forma correta e ordenada. Foram criadas 7 (sete) classes de controle, que são:

*AdapterListView: Atualiza a lista de visualização das viagens já realizadas

ou ainda por realizar. Segue abaixo um trecho do código.

ItemListView item = itens.get(position);

view = mInflater.inflate(R.layout.item_listview, null);

((TextView)view.findViewById(R.id.text)).setText(item.getTexto()); ((ImageView)view.findViewById(R.id.imagemview)).setImageResource(item.getI coneRid());

return view;

*ItemListView: Classe que é responsável por gerenciar o que estará escrito

nos ícones exibidos quando o motorista quiser visualizar as viagens já realizadas ou que as que ainda estão por vir.

*Manda_Relatorio: Esta classe instancia a classe Relatorio, salva o conteúdo

da variável documento em um arquivo xml via Xstream. Abaixo pode ser visualizado uma parte do código, onde é instanciada a classe Relatório.

Relatorio rel = new Relatorio(); relatorio = rel.getTexto();

documento = xStream.toXML(relatorio); salvarArquivo(documento, relatorio);

*Manda_Xstream: Classe que instancia as classes Pega_Data_Hora,

Pega_GPS, Aviso_a_viagem_comecou. Além disso, salva o retorno das classes em um documento e salva o documento em xml. Abaixo foram tirados trechos do código para mostrar como a classe são pegos os dados do GPS e salvos em um documento.

XStream xStream = new XStream(new DomDriver()); Pega_Data_Hora datahora = new Pega_Data_Hora();

pdatahora = datahora.getDATAHORA().toString(); documento = xStream.toXML(pdatahora);

salvarArquivo(documento, pdatahora);

private void salvarArquivo(String documento, String timestamp_arquivo) {

File arq = null;

String lstrNomeArq= "envio.xml"; byte[] dados;

try {

(47)

arq = new File(Environment.getExternalStorageDirectory(), lstrNomeArq); System.out.println(arq.toString()); FileOutputStream fos; dados = documento.getBytes();

fos = new FileOutputStream(arq); fos.write(dados);

fos.flush(); fos.close();

*Menu: Mostra na tela os botões de viagem atua, próximas viagens,

histórico, relatório e sair, e direciona segundo o clique o usuário. O código do menu é simples, com geração de botões e direcionamentos.

*Principal: Gerencia se há uma nova viagem ou não. Além disso, essa classe

instancia as classes recebe_xml, Manda_Xstream e Recebe_Xstream. Se houver uma nova viagem, chama a classe Aviso_Viagem_Iniciada, caso contrário, chama a classe Menu. Segue abaixo trechos sobre como são instanciadas essas classes.

public void mandaxtream() {

Manda_Xstream manda = new Manda_Xstream(this); } public void receber_xml(){

Recebe_Xstream recebeX = new Recebe_Xstream(); } public void recebe() {

Recebe_xml recebe = new Recebe_xml(); nov_viagem = recebe.getAvisoNovaViagem(); if (nov_viagem.equals("sim")) { a = 1; } else { a = 2; } } … if (this.getIntent().getBooleanExtra("fechar", false)) { finish(); } else { mandaxtream(); receber_xml(); recebe(); if (a == 1) {

(48)

Intent myIntent = new Intent(Principal.this, Aviso_viagem_iniciada.class); Principal.this.startActivity(myIntent); } if (a == 2) {

Intent myIntent = new Intent(Principal.this, Menu.class);

Principal.this.startActivity(myIntent); } } }

public void onResume() { super.onResume();

if (this.getIntent().getBooleanExtra("fechar", false)) { finish();

(49)

Referências

Documentos relacionados

Figura 4.10 – Fluxo de CO2 para as áreas de footprint de três torres localizadas em unidades experimentais submetidas a diferentes tipos de manejo pastoril Rotativo,

Para tanto, no Laboratório de Análise Experimental de Estruturas (LAEES), da Escola de Engenharia da Universidade Federal de Minas Gerais (EE/UFMG), foram realizados ensaios

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Controlador de alto nível (por ex.: PLC) Cabo da válvula Tubo de alimentação do ar de 4 mm Pr essão do fluido Regulador de pressão de precisão Regulador de pressão de

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Disto pode-se observar que a autogestão se fragiliza ainda mais na dimensão do departamento e da oferta das atividades fins da universidade, uma vez que estas encontram-se