GERENCIAMENTO DO PROCESSO DE ABASTECIMENTO DE VEÍCULOS ATRAVÉS DE UM DISPOSITIVO MÓVEL Ricardo Koball Orientador: Marcel Hugo ROTEIRO Introdução: Fundamentação teórica: Rede social; Android; Geolocalização; REST; Trabalhos correlatos. Desenvolvimento da ferramenta: Objetivos do trabalho. Requisitos; Especificação; Implementação; Operacionalidade da ferramenta; Resultados e discussão. Conclusão: Extensões. INTRODUÇÃO Quantidade de smartphones e veículos vem crescendo a cada ano no país. Expectativa: tarefas automatizadas. As pessoas realizam o processo de abastecimento de maneiras diferentes. Ter uma maneira de auxiliar no processo pode poupar tempo e dinheiro do usuário. Compartilhamento de informações sobre os preços de combustível favorece a criação de uma rede social. OBJETIVOS O objetivo deste trabalho é desenvolver uma aplicação móvel para auxiliar a tarefa de reabastecimento de combustível em veículos automotivos de um usuário. Objetivos específicos: Base de dados para armazenar os dados dos usuários. Webservice para ler e gravar na base de dados. Aplicativo na plataforma Android que permite ao usuário visualizar e fornecer informações para a rede social. Serviço que atualiza os dados no dispositivo. REDE SOCIAL São muito mais antigas que a Internet. De acordo com Henrik (2010), “as redes sociais são responsáveis pelo compartilhamento de ideias entre pessoas que possuem interesses e objetivos em comum e também valores compartilhados”. Compartilhamento de informações: Preços dos combustíveis; Avaliações dos postos de combustível. a serem ANDROID A plataforma Android é um pacote completo para dispositivos móveis, incluindo um sistema operacional, um middleware e aplicações básicas para a utilização do sistema. Uma aplicação pode ser composta por diversos componentes: Activity (atividades); Service (serviços). COMPONENTES Activity: representa uma tela da aplicação. Service: é executado em segundo plano, sem a interação do usuário. Utilizado para executar tarefas periódicas. ASYNC TASK A thread principal do aplicativo é responsável por atualizar os componentes visuais das interfaces. Tarefas que exigem alguns segundos/minutos para serem executadas. GEOLOCALIZAÇÃO Criação do Global Positioning System (GPS), tornou possível determinar a geolocalização de forma rápida e precisa. Dispositivos móveis modernos possuem GPS. Aplicações podem utilizá-lo para determinar a localização do dispositivo. SERVIÇOS BASEADOS EM LOCALIZAÇÃO Segundo Morais (2011), serviços que têm como objetivo fornecer informações relevantes ao usuário, de acordo com o local que ele está no momento, são chamados de Serviços Baseados em Localização. Foursquare: rede social onde o usuário pode indicar onde está no momento, além de escrever sua opinião sobre determinado local. GEOLOCALIZAÇÃO NO ANDROID Localização pode ser obtida através: Triangularização de satélites GPS; Torres de telefonia móvel; Base de dados de pontos de acesso Wi-Fi. LocationManager: getLastKnownLocation: Retorna a ultima localização conhecida. requestLocationUpdates: Recebe atualizações de localização entre certos períodos de tempo e distância. Location: localização geográfica (lat. / long.) Address: endereço textual (logradouro, bairro...) SERVIÇOS DA WEB DA API DO GOOGLE MAPS Fornece serviços da web que permitem que serviços externos solicitem dados de sua API. Requisição HTTP. Resposta nos formatos JSON e XML. Serviços mais utilizados: Geocoding API: geocodificação e geodecodificação; Distance Matrix API: distância e tempo de deslocamento entre locais; Directions API: rotas entre locais. REPRESENTATIONAL STATE TRANSFER REST De acordo com Jones (2012), REST “é um estilo de arquitetura para comunicação baseada na web que permite aos clientes conversarem com os servidores de maneira única”. Utilizam o protocolo HTTP em conjunto com suas operações GET, POST, DELETE e PUT para enviar e receber dados do servidor. Cada recurso fornecido deve possuir um identificador único, chamado de Universal Resource Indicators (URI). BIBLIOTECA JERSEY Java determina seu suporte à arquitetura REST através da especificação Java Specification Request (JSR) 311. Jersey implementa esta especificação. Utiliza um servlet para verificar todas as requisições e determinar qual método deve responder a requisição. Anotações para configurar os recursos. TRABALHOS CORRELATOS Proteste Postos: aplicativo para iOS e Android; lista com postos próximos; localizar posto através de um mapa; traçar rota até determinado posto; boa credibilidade; informações desatualizadas. informações disponibilizadas pela Agência Nacional de Petróleo, gás natural e biocombustíveis (ANP). TRABALHOS CORRELATOS Meu combustível: site que apresenta um mapa com os postos de combustível da região pesquisada. Ferramenta Android baseada em realidade aumentada e serviços baseados em localização usando notificações (Rampelotti): auxiliar os acadêmicos em suas atividades acadêmicas; utiliza SBL para informar ao usuário que ele está próximo a um evento. REQUISITOS Principais Requisitos Funcionais: posto possui a melhor razão entre custo e benefício; lista dos postos de combustível mais próximos; mapa da região onde o usuário está; trajeto até determinado posto de combustível; estimativa calculada com dados sobre o consumo; apresentar comentários e avaliações de usuários; permitir avaliar e comentar sobre um posto; sincronizar os dados entre o aplicativo e servidor; ESPECIFICAÇÃO Casos de uso: Usuário. ESPECIFICAÇÃO Casos de uso: Dispositivo. ESPECIFICAÇÃO Diagrama de pacotes do servidor. IMPLEMENTAÇÃO Ferramentas: Eclipse Juno 4: ambiente de desenvolvimento. SDK 17: plataforma Android. Biblioteca Jersey: criar recursos no webservice. Hibernate: salvar dados no banco de dados do webservice. SGBD MySQL 5.5: armazenar dados do webservice. IMPLEMENTAÇÃO Utilizado: SQLite para salvar no banco de dados do aplicativo. Atividades para criar as telas. LocationManager: obter atualização de localização. Serviços web da Google Maps API: geocodificação, distância e rota de trajeto. AsynkTask: enviar requisição aos serviços web. OPERACIONALIDE DA FERRAMENTA Funções: Quero abastecer e Mapa. RESULTADOS E DISCUSSÃO Intervalos entre atualização da localização. Consumo de dados (em KBs) Intervalo em metros Intervalo em minutos Quantidade total de requisições 2320 50 1 580 1008 50 30 252 980 50 60 245 1840 100 1 460 528 100 30 132 500 100 60 125 248 300 30 62 96 1000 30 24 RESULTADOS E DISCUSSÃO Teste da funcionalidade de estimativa calculada. Quilometragem real Quilometragem Data estimada 48841 48841 01/04/2013 48960 48948 08/04/2013 49055 49050 15/04/2013 49182 49156 22/04/2013 49294 49288 29/04/2013 49392 49400 05/05/2013 CONCLUSÃO Objetivo principal do trabalho foi alcançado. Aplicativo para dispositivo móvel mostrou-se ser uma decisão acertada. Plataforma Android mostrou-se ser sólida. O conceito de REST, permitiu que a implementação do webservice fosse realizada de maneira simples. Hibernate: poupou horas de desenvolvimento. Google Maps API: mostrou-se ser eficiente e de fácil entendimento. EXTENSÕES Melhorar o mecanismo de confiabilidade. Considerar avaliações dos usuários ao indicar o posto com o melhor custo-benefício. Sincronizar os dados com o servidor posteriormente, caso não esteja conectado. Diminuir o consumo de dados: Menos requisições aos serviços web da Google Maps API; Melhorar sincronização entre aplicativo e servidor.