Anda di halaman 1dari 58

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CINCIAS EXATAS E NATURAIS CURSO DE CINCIA DA COMPUTAO BACHARELADO

SISTEMA BASEADO EM LOCALIZAO DE SERVIOS DE TXI

ARTHUR HENRIQUE KIENOLT

BLUMENAU 2013 2013/1-08

ARTHUR HENRIQUE KIENOLT

SISTEMA BASEADO EM LOCALIZAO DE SERVIOS DE TXI

Trabalho de Concluso de Curso submetido Universidade Regional de Blumenau para a obteno dos crditos na disciplina Trabalho de Concluso de Curso II do curso de Cincia da Computao Bacharelado. Prof. Mauro Marcelo Mattos , Dr - Orientador

BLUMENAU 2013 2013/1-08

SISTEMA BASEADO EM LOCALIZAO DE SERVIOS DE TXI

Por

ARTHUR HENRIQUE KIENOLT

Trabalho aprovado para obteno dos crditos na disciplina de Trabalho de Concluso de Curso II, pela banca examinadora formada por:

Presidente:

______________________________________________________ Prof. Nome do professor Orientador, Dr. Orientador, FURB ______________________________________________________ Prof. Paulo Fernando da Silva, Mestre FURB ______________________________________________________ Prof. Francisco Adell Pricas, Mestre FURB

Membro:

Membro:

Blumenau, 08 de julho de 2013

Dedico este trabalho minha famlia, amigos, namorada e principalmente aos meus pais pela cooperao e apoio durante a realizao deste.

AGRADECIMENTOS

minha famlia, que sempre me apoiou em todas as etapas da minha vida. Aos meus pais, pelo auxlio e dedicao em garantir a minha educao e meu futuro. minha namorada, pela compreenso e carinho em todo o curso. Aos meus amigos, pelos empurres e cobranas. Ao meu orientador, Mauro Marcelo Mattos, pela ateno e ajuda em todas as necessidades.

Nunca ande pelo caminho traado, pois ele conduz somente aonde outros j foram. Graham Bell

RESUMO

Foi desenvolvido um aplicativo baseado em localizao chamado Quero Txi. Tal aplicativo possibilita ao usurio requisitar um servio de txi, e atravs de um algoritmo baseado em coordenadas geogrficas encaminhar o taxista mais prximo, desde que o mesmo aceite o servio, ao usurio final. O aplicativo foi desenvolvido para plataforma Android, integrado a um servidor GSM rodando sobre a biblioteca SMSLib, e um WebService com acesso ao banco de dados Oracle. Palavras-chave: Georreferenciamento. GSM. Android. SMSLib. WebService. Txi. Coordenada.

ABSTRACT

It was developed the location-based application called "Quero Txi". This application allows the user to order a taxi service, and through an algorithm based on geographical coordinates, direct the nearest taxi driver, since this accepts the service, to the final user. The application was developed for Android platform, integrated with a GSM server running on SMSLib library and a Web Service with access to Oracle database. Key-words: Georeferencing. GSM. Android. SMSLib. WebService. Taxi. Coordinated.

LISTA DE ILUSTRAES

Figura 1 Configurao do modem GSM.............................................................................. 17 Quadro 1 Exemplo de utilizao da classe SerialModemGateway .............................. 18 Quadro 2 Mtodo convert ............................................................................................... 20 Figura 2 Exemplo de uma aplicao Google Maps ............................................................. 22 Quadro 3 Utilizao da classe SupportMapFragment ................................................. 24 Figura 3 Aplicativo ResolveA ............................................................................................ 25 Figura 4 Aplicativo TaxiMov .............................................................................................. 26 Figura 5 Aplicativo EasyTaxi .............................................................................................. 27 Figura 6 Diagrama de casos de uso ..................................................................................... 29 Quadro 4 Caso de uso UC01................................................................................................ 30 Quadro 5 Caso de uso UC02................................................................................................ 30 Quadro 6 Caso de uso UC03................................................................................................ 31 Quadro 7 Caso de uso UC04................................................................................................ 32 Quadro 8 Caso de uso UC05................................................................................................ 32 Figura 7 Diagrama de classes Projeto Taxista .................................................................. 34 Figura 8 Diagrama de classes Projeto Usurio ................................................................. 35 Figura 9 Diagrama de classes Projeto WebService .......................................................... 36 Figura 10 Diagrama de classes Projeto modem GSM ...................................................... 37 Figura 11 Diagrama de distribuio..................................................................................... 38 Figura 12 Diagrama de sequncia - Usurio ........................................................................ 39 Figura 13 Diagrama de sequncia - Taxista......................................................................... 39 Quadro 9 AndroidManifest.xml........................................................................................... 41 Quadro 10 Mtodo requestServiceVar ..................................................................... 43 Quadro 11 Mtodo iniciarServidor ...................................................................................... 44 Quadro 12 Mtodo getLocation.................................................................................... 45 Figura 14 Tela inicial do aplicativo usurio ........................................................................ 47 Figura 15 Ativao do GPS ................................................................................................. 47 Figura 16 Tela inicial do aplicativo usurio ........................................................................ 47 Figura 17 Ativao do GPS ................................................................................................. 47 Figura 18 Tela inicial do aplicativo taxista.......................................................................... 48

Figura 19 Ativao da internet............................................................................................. 48 Figura 20 Cadastro de taxistas ............................................................................................. 49 Figura 21 Reenvio de senha .................................................................................................. 49 Figura 22 Obtendo posio .................................................................................................. 50 Figura 23 Posio encontrada .............................................................................................. 50 Figura 24 Informaes da requisio ................................................................................... 51 Figura 25 Endereo da requisio ........................................................................................ 51 Figura 26 Visualizao no mapa .......................................................................................... 51 Quadro 13 Comparao de resultados ................................................................................. 53

LISTA DE SIGLAS

API Application Programming Interface FIFO First In First Out GPS Global Positioning System GSM Global System for Mobiles HTTP HyperText Transfer Protocolo Secure IPEA Instituto de Pesquisa Econmica Aplicada SDK Software Development Kit SMS Short Message Service SMTP Simple Mail Transfer Protocol SOAP Simple Object Access Protocol TCP Transmission Control Protocol URL Uniform Resource Location UML Unified Modeling Language XML eXtensible Markup Language

SUMRIO

1 INTRODUO .................................................................................................................. 13 1.1 OBJETIVOS DO TRABALHO ........................................................................................ 14 1.2 ESTRUTURA DO TRABALHO ...................................................................................... 14 2 FUNDAMENTAO TERICA .................................................................................... 16 2.1 SMS ................................................................................................................................... 16 2.1.1 SMSLib ........................................................................................................................... 16 2.2 WEB SERVICES NO ANDROID .................................................................................... 18 2.3 GPS NO ANDROID .......................................................................................................... 20 2.4 GOOGLE MAPS ............................................................................................................... 21 2.4.1 GOOGLE MAPS API V2 ............................................................................................... 22 2.4.2 GOOGLE MAPS NO ANDROID .................................................................................. 23 2.5 TRABALHOS CORRELATOS ........................................................................................ 24 2.5.1 ResolveA ........................................................................................................................ 24 2.5.2 TaxiMov .......................................................................................................................... 25 2.5.3 EasyTaxi .......................................................................................................................... 26 3 DESENVOLVIMENTO .................................................................................................... 28 3.1 REQUISITOS DO PROJETO ........................................................................................... 28 3.2 ESPECIFICAO ............................................................................................................ 29 3.2.1 Diagrama de casos de uso ............................................................................................... 29 3.2.2 UC01 Requisitar servio .............................................................................................. 30 3.2.2.1 UC02 Confirmar endereo ......................................................................................... 30 3.2.2.2 UC03 Realizar login .................................................................................................. 30 3.2.2.3 UC04 Aceitar servio ................................................................................................. 31 3.2.2.4 UC05 Visualizar localizao no mapa ....................................................................... 32 3.2.3 Diagrama de classes ........................................................................................................ 33 3.2.4 Diagrama de distribuio................................................................................................. 37 3.2.5 Diagrama de sequncia .................................................................................................... 38 3.3 IMPLEMENTAO ......................................................................................................... 40 3.3.1 Tcnicas e ferramentas utilizadas .................................................................................... 40 3.3.2 Configurao da aplicao .............................................................................................. 40 3.3.3 Google Maps API v2 ....................................................................................................... 42

3.3.4 Acesso web service .......................................................................................................... 43 3.3.5 Servidor GSM.................................................................................................................. 44 3.3.6 GPS.................................................................................................................................. 45 3.3.7 Operacionalidade da implementao............................................................................... 46 3.3.7.1 Aplicativo usurio ......................................................................................................... 46 3.3.7.2 Aplicativo taxista .......................................................................................................... 48 3.4 RESULTADOS E DISCUSSO....................................................................................... 52 4 CONCLUSES .................................................................................................................. 54 4.1 EXTENSES .................................................................................................................... 54 REFERNCIAS BIBLIOGRFICAS .................................................................................. 56

13 1 INTRODUO

Conforme Gasparini, Campos e Dagosto (2010, p. 57), atualmente existe um movimento no sentido de tornar as cidades sustentveis e com melhor qualidade de vida. Um dos aspectos para se atingir este objetivo est associado ao desempenho do trnsito urbano, e, neste contexto, a cada momento surgem propostas de reduo de circulao de veculos particulares e o incentivo ao uso de transporte pblico e do transporte no motorizado, como caminhadas e bicicletas. De acordo com o IPEA (2011, p. 3), o conceito de mobilidade pode ser entendido como a facilidade de deslocamento, o qual, por vezes, vinculado aqueles que so transportados ou se transportam e por outras vezes relacionado cidade ou ao local onde o deslocamento pode acontecer. Um aspecto importante a destacar que a mobilidade depende do nvel de adequao entre as caractersticas da pessoa ou objeto que deseja ou se quer transportar com a capacidade do sistema de transporte e infraestrutura, aqui includas todas as formas de deslocamento possveis (IPEA 2011, p. 3). Por exemplo, a percepo de baixa frequncia de congestionamento por aqueles que se deslocam por moto (seja prpria, mototxi, ou outro tipo de uso) pode ratificar o motivo mais alegado por esses usurios para a escolha de seu modo de transporte (IPEA 2011, p. 12). Conforme Vuchic (1981 apud DA COSTA e DA COSTA, 2010, p. 2) o txi um sistema de transporte pblico caracterizado por ser um servio adaptvel as necessidades do indivduo. O servio pode ser oferecido de trs formas distintas: a) atravs da circulao pela cidade com o indicativo de que est livre, devendo o usurio indicar corporalmente a necessidade de utilizao do servio; b) atravs de reas designadas especialmente para paragem de veculos (pontos de txi, ou stand), geralmente nas proximidades de grandes plos geradores de viagens de txi (hotis, estaes de metr, aeroportos, teatros, etc.), onde o usurio deve se aproximar e requisitar o servio. caracterizado pelo sistema First In First Out (FIFO); c) atravs do servio oferecido por cooperativas de txi onde o cliente entra em contato via telefone ou internet e o veculo mais prximo do usurio encaminhado atravs do contato via rdio (rdio-txi). Comparativamente, os txis provocam os maiores custos sociais em relao a congestionamentos, poluio do ar e barulho do que os automveis particulares, j que

14 realizam mais veculos-km por passageiro-km de viagem. Normalmente causam distrbios e atrasos no trfego durante o ato de embarcar e desembarcar um passageiro, alm de serem restritos a uma clientela reduzida, devido ao alto custo, e por serem de natureza individual. No entanto, tm uma significativa vantagem no quesito estacionamento, j que precisam de virtualmente nenhum, alm de oferecer, de forma geral, maior agilidade, conforto e acessabilidade do que os transportes coletivos (DA COSTA, DA COSTA; 2010, p. 3). Diante do exposto, este trabalho apresenta o desenvolvimento de um sistema para dispositivos mveis, que atravs do envio de uma Short Message Service (SMS), com o apoio de bibliotecas do sistema Android e recursos do Global Positioning System (GPS), permite requisitar os servios de txi, buscando o taxista disponvel mais prximo do passageiro e o encaminhando ao usurio final.

1.1

OBJETIVOS DO TRABALHO

O objetivo do trabalho o desenvolvimento de um sistema para possibilitar o envio de requisies de servios de txi georreferenciados a partir de dispositivos mveis. Os objetivos especficos do trabalho so: a) possibilitar o cadastro e consulta de novos usurios; b) permitir o envio de mensagens georeferenciadas; c) definir a menor distncia entre taxista e passageiro atravs do clculo de coordenadas; d) possibilitar a visualizao da posio do usurio atravs do Google Maps; e) validar a aplicao atravs de estudo de caso.

1.2

ESTRUTURA DO TRABALHO

Este trabalho est dividido em quatro captulos, sendo neste captulo apresentados a introduo e os objetivos do trabalho. No segundo captulo apresentada a fundamentao terica, iniciando com uma introduo a mensagens SMS e a biblioteca SMSLib. Em seguida

15 descrita a utilizao de web services, e sua importncia para a aplicao. Ainda no segundo captulo exposto o funcionamento do GPS. Aps, apresentado o funcionamento do Google Maps. O captulo finalizado com a descrio de trabalhos correlatos. O terceiro captulo relata o desenvolvimento do sistema, iniciando com os requisitos e seguido da especificao, implementao e operacionalidade. Por fim, h os resultados obtidos. O quarto e ltimo captulo refere-se as concluses do trabalho e sugestes para trabalhos futuros.

16 2 FUNDAMENTAO TERICA

Nas sees seguintes so apresentadas informaes sobre SMS e SMSLib, WebServices no Android, GPS no Android, Google Maps no Android e trabalhos correlatos.

2.1

SMS

Short Message Service (SMS) um servio wireless aceito globalmente que possibilita a transmisso de mensagens alfanumricas entre usurios mveis e sistemas externos tais como eletronic mail, paging e voicemail (BAULER, 2011). Ainda segundo Bauler (2011), O SMS foi criado com o objetivo de prover a troca de mensagens de texto de at 160 caracteres entre dispositivos mveis. Posteriormente foi aperfeioado e passou a permitir a troca de mensagens com computadores, aplicativos e outros servios IP, utilizando gateways protocoladores. Este servio possui diversas vantagens (HORD, 2011): a) ele mais discreto, o que o torna a forma ideal de comunicao quando no se pode falar publicamente; b) normalmente, se gasta menos tempo para enviar uma mensagem de texto do que para fazer uma ligao telefnica ou enviar um e-mail; c) deficientes auditivos de todos os graus podem utilizar deste servio para se comunicar.

2.1.1

SMSLib

Conforme Manguni, Navarro e Rosario(2010), SMSLib um pacote de cdigo aberto que permite que um programa em Java envie e receba mensagens SMS atravs de um modem Global System for Mobile (GSM) ou comandos manuais. Atravs desta biblioteca e juntamente com um modem GSM compatvel, possvel criar uma aplicao desktop que realiza o envio e recebebimento de mensagens SMS. As mensagens so acessadas diretamente

17 na memria do modem GSM, que precisa estar instalado e disponibilizado em uma porta serial, conforme Figura 1.
Figura 1 Configurao do modem GSM

Para iniciar o modem na aplicao necessrio utilizar classe SerialModemGateway, passando cinco parmetros diretamente na instncia da classe. O primeiro parmetro o id que ir identificar o modem, podendo ser qualquer informao do tipo texto. O segundo parmetro determina a porta serial em que o modem est configurado. O terceiro refere-se ao baudrate, ou seja, a velocidade em que o modem consegue transmitir dados. O quarto parmetro o fabricante do modem. O quinto e ltimo parmetro para informao do modelo do modem. Uma vez instanciado o modem GSM na aplicao e iniciado o servidor, as mensagens podem ser obtidas e e enviadas atravs das intrues

Service.getInstance().readMessages

Service.getInstance().sendMessages,

respectivamente. As mensagens obtidas podem ser manipuladas e excludas, sendo o acesso realizado diretamente na memria do modem. O quadro 1 apresenta um trecho de cdigo que exemplifica a utilizao da classe
SerialModemGateway.

18

Quadro 1 Exemplo de utilizao da classe SerialModemGateway


try { System.out.println("Example: Read messages from a serial gsm modem."); System.out.println(Library.getLibraryDescription()); System.out.println("Version: " + Library.getLibraryVersion()); // Create the Gateway representing the serial GSM modem. SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM4", 115200, "Huawei", "E160"); gateway.setProtocol(Protocols.PDU); gateway.setInbound(true); gateway.setOutbound(true); gateway.setSimPin("0000"); Service.getInstance().addGateway(gateway); Service.getInstance().startService(); msgList = new ArrayList<InboundMessage>(); Service.getInstance().readMessages(msgList, MessageClasses.ALL); for (InboundMessage msg : msgList) System.out.println(msg); System.in.read(); System.in.read(); } catch (Exception e) { e.printStackTrace(); } finally { Service.getInstance().stopService(); } Fonte: SMSLib (2013).

2.2

WEB SERVICES NO ANDROID

Um web service fornece uma interface que permite clientes e servidores interagirem de uma forma mais geral que os navegadores. Os clientes acessam as operaes na interface de um servio web atravs de pedidos e respostas formatados em eXtensible Markup Language (XML) e geralmente transmitidos atravs do protocolo HyperText Transfer Protocolo Secure (HTTPS). A idia central que uma aplicao cliente, executando dentro de um ambiente de uma determinada organizao, possa interagir com um servidor em outra organizao sem a necessidade de uma superviso humana (COULORIS, 2005). Os web services realizam o empacotamento das mensagens trocadas entre clientes e

19 servidores utilizando XML. O conjunto de regras para o uso do XML definido no protocolo Simple Object Access Protocol (SOAP) que utilizado para encapsular as mensagens e transmit-las atravs da web por protocolos como HTTP, Simple Mail Transfer Protocol (SMTP) ou Transmission Control Protocol (TCP) (COULORIS, 2005). possvel utilizar a plataforma Android para consumir informaes atravs de um web service, porm, o Software Development Kit (SDK) do Android no oferece uma soluo simples embutida para consumir web services (USHISIMA, 2011). Primeiramente

necessrio utilizar uma biblioteca de apoio, chamada KSOAP2. Esta biblioteca encapsula a gerao e leitura das instrues XML, bem como a comunicao com o servio, tratando, inclusive, erros levantados pelo servidor e lanando excees quando apropriado (VINICIUS, 2011). De acordo com Ushisima (2011), a biblioteca permite ainda o consumo de web services sem a necessidade de gerao de cdigo ou uso de proxies dinmicos (USHISIMA, 2011). Para realizar a requisio, conforme Ushisima (2011), deve-se utilizar uma instncia da classe SoapObject, e cada parmetro necessrio na chamada uma propriedade de
SoapObject.

Para realizar a chamada ao servio de aplicaes necessrio utilizar a instruo

call, da classe HttpTransportSE, passando na instncia do objeto a Uniform Resource Location (URL) em que o servio est disponvel. Como retorno, tem-se um objeto tambm do tipo SoapObject, sendo cada propriedade deste objeto da consulta ao web service. O quadro 2 apresenta o mtodo convert, exemplificando a utilizao das classes
SoapObject

e HttpTransportSE,citadas anteriormente.

20
Quadro 2 Mtodo convert public String Convert(String fromCurrency, String toCurrency, String amount) { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("from", fromCurrency); request.addProperty("to", toCurrency); request.addProperty("value", amount);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); try { HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.call(SOAP_ACTION, envelope); SoapPrimitive result = (SoapPrimitive) envelope.getResponse(); return result.toString(); } catch (Exception e) { return e.getMessage(); } } Fonte: Ushisima (2011).

2.3

GPS NO ANDROID

O GPS um sistema de radionavegao desenvolvido pelo Departamento de Defesa dos Estados Unidos da Amrica com o intuito de ser o principal sistema de navegao das foras armadas americanas. Ele resultou da fuso de dois programas financiados pelo governo norte-americano para desenvolver um sistema de navegao de abrangncia global: Timation e System 621B, sob responsabilidade da Marinha e da Fora Area, respectivamente. Em razo da alta acurcia proporcionada pelo sistema e do grande desenvolvimento da tecnologia envolvida nos receptores GPS, uma grande comunidade usuria emergiu dos mais variados segmentos da comunidade civil (navegao, posicionamento geodsico, agricultura, controle de frotas etc.) (MONICO, 2000). A concepo do sistema GPS permite que um usurio em qualquer local da superfcie terrestre tenha sua disposio no mnimo quatro satlites para serem rastreados (MONICO, 2000). O princpio bsico de navegao pelo GPS consiste na medida de distncias entre o usurio e quatro satlites. Conhecendo as coordenadas dos satlites num sistema de referncia

21 apropriado, possvel calcular as coordenadas da antena do usurio no mesmo sistema de referncia dos satlites (MONICO, 2000). A plataforma Android fornece recursos para o desenvolvimento de aplicativos baseados em localizao. A principal classe para utilizao destes servios a
LocationManager.

Como outros recursos disponibilizados pela Google, no possvel

instanciar diretamente um objeto LocationManager. Para tal, necessrio realizar uma chamda para o mtodo getSystemService passando como parmetro uma String, que representa o tipo de servio necessrio, que neste caso LOCATION_SERVICE. A partir desta instncia, possvel acessar uma lista de provedores para obter a localizao do usurio, sendo esta lista representada pela classe LocationProvider (ANDROID DEVELOPERS, 2012a). A solicitao de coordenadas atravs de um dispositivo pode ser realizada atravs do GPS ou da internet. A obteno das coordenadas atravs da internet realizada com o auxlio das torres de celular do sinal Wi-Fi. Desta forma, obtem-se a posio tanto em locais fechados quanto em locais aberto, com um menor consumo de energia e reposta mais rpida, porm com uma menor preciso. Por sua vez, o GPS tem uma preciso muito superior em comparao a internet, mas com maior consumo de bateria e reposta lenta. H tambm a necessidade de estar em campo aberto (ANDROID DEVELOPERS, 2012a). Para obter a posio do dispositivo no Android, necessria a utilizao do mtodo
requestLocationUpdate,

da classe LocationManager. So quatro os parmetros necessrios

para esta chamada. O primeiro parmetro passado deve ser o tipo de provedor para busca da localizao, que pode variar entre e a internet, GPS, definido definido pela pela instruo instruo

LocationManager.NETWORK_PROVIDER, LocationManager.GPS_PROVIDER.

O segundo parmetro diz respeito frequncia em que

deve ser atualizada a posio, em termos de tempo. O terceiro determina a frequncia de atualizao com base na distncia percorrida. O quarto e ltimo parmetro deve ser o objeto que implementa a interface LocationListener (ANDROID DEVELOPERS, 2012b).

2.4

GOOGLE MAPS

Google Maps uma aplicao para visualiao e navegao em mapas interativos (ANDROID DEVELOPERS, 2012c). Esta ferramenta fornece diversas funcionalidades, como

22 solicitar rotas, demonstrar um ponto especfico e demarcar as principais localizaes da preferncia do usurio. Um exemplo desta aplicao para dispositivos mveis pode ser visto na Figura 2.
Figura 2 Exemplo de uma aplicao Google Maps

Fonte: Android Developers (2012c).

O Google Maps oferece uma interface intuitiva e mapeamento altamente reponsivo, com ruas detalhadas e imagens areas. Alm disso os mapas permitem ao usurio controle total de navegao.

2.4.1

GOOGLE MAPS API V2

Desde 3 de dezembro de 2012 a verso 1 da Application Programming Interface (API) Google Maps do Android foi descontinuada, e desde 18 de maro de 2013 no mais possvel requisitar novas licenas de uso para esta verso, sendo os usurios encorajados a utilizar a verso 2 da API (ANDROID DEVELOPERS, 2013d).

23 Atravs do Google Maps API, possvel adicionar mapas com a base de dados da Google em sua aplicao. A API garante automaticamente o acesso aos servidores da Google, o download dos dados e a visualizao do mapa. Podem ser adicionados ainda polgonos, marcadores e sobreposies no mapa, bem como alterar a forma de visualizao do mesmo (ANDROID DEVELOPERS, 2013d).

2.4.2

GOOGLE MAPS NO ANDROID

A plataforma Android est fortemente ligada com os servios da Google. Desta forma, a Google disponibilizou a Google Maps API v2. Diferentemente da verso anterior, onde a mesma funcionava como uma biblioteca externa, a nova API da Google est integrada diretamente no Android SDK, facilitando a utilizao da ferramenta. Outra mundana referente verso anterior da API diz respeito a obteno da licena de uso. Para esta nova verso, existem dois tipos de licenas de uso (ANDROID DEVELOPERS, 2013d): a) debug certificate: as ferramentas de compilao do Android fornecem um modo de assinatura de depurao, que torna mais fcil para o desenvolvedor criar e testar sua aplicao. Ao utilizar este certificado, as ferramentas do Android SDK invocam o programa keytool, nativo do java, para criar automaticamente um certificado para testes. Para usurios do Eclipse, esta configurao padro, sendo a chave gerada ao depurar o projeto. Este tipo de certificado somente vlido para uso no aplicativo que est sendo testado e no possvel publicar o aplicativo com esta chave; b) release certificate: este tipo de certificado especfico para aplicativos que sero publicados. Este certificado gerado quando utilizada a opo release no Eclipse, juntamente com o programa keytool, nativo do java. Este certificado permite que seu aplicativo seja publicado. Para adicionar o mapa na aplicao Android, conforme Android Developers (2013d), necessrio utilizar a classe GoogleMap. Esta classe responsvel por todas as aes realizadas sobre o mapa, como conectar com o database da Google, realizar o download dos mapas, apresentar os mapas no dispositivo, controlar as opes de zoom, entre outros. No possvel instanciar diretamente uma classe GoogleMap. Desta forma, deve-se utilizar um objeto da classe Fragment para obter acesso ao objeto GoogleMap. A classe Fragment funciona como

24 um container para o objeto GoogleMap. Para verso 3.1 do Android em diante deve ser utilizada a classe MapFragment. Para as verses anteriores deve ser utilizada a classe
SupportMapFragment.

O quadro 3 demonsta um exemplo de utilizao a classe SupportMapFragment.


Quadro 3 Utilizao da classe SupportMapFragment private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (mMap == null) { mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { // The Map is verified. It is now safe to manipulate the map.
} } } Fonte: Android developers (2013d).

2.5

TRABALHOS CORRELATOS

Existem aplicaes que possuem caractersticas semelhantes ao proposto neste trabalho, tais como o ResolveA (RESOLVEA, 2012), TaxiMov (TAXIMOV, 2013) e EasyTaxi (LEVOVC, 2013).

2.5.1

ResolveA

O ResolveA um aplicativo de transporte e utilidade com o qual possvel agendar uma corrida de txi de forma rpida e fcil, e est atualmente presente em 20 cidades (RESOLVEAI, 2012a). Para utilizar o aplicativo, primeiramente necessrio realizar um cadastro, com informaes bsicas sobre o usurio. Uma vez realizada esta ao e logado no sistema, possvel realizar a requisio do servio. Ao buscar a posio do dispostivo, por algumas vezes a preciso pode no ser exata. Porm, o aplicativo permite definir atravs de um mapa a

25 posio manualmente. Aps definida a posio do dipostivo, deve-se informar o endereo de destino, para ento o aplicativo destinar um taxista (RESOLVEAI, 2012b). Os pedidos podem ser acompanhados em tempo real para a maioria dos carros da frota, sendo que os carros so equipados com dispositivos GPS. Na figura 3 pode ser visualizado um pedido em andamento no aplicativo ResolveA.
Figura 3 Aplicativo ResolveA

Fonte: ResolveAi(2012).

2.5.2

TaxiMov

Criado e desenvolvido pela e-flows, empresa de servios e produtos na rea de mobilidade, o Taximov um sistema de solicitao de txi por telefone ou internet, seja computador, notebook ou smartphones. Ao solicitar um txi, o software localiza o motorista que est mais prximo do endereo do cliente e que melhor atenda aos requisitos solicitados (REVISTA APOLICE, 2013). Segundo a revista Aplice (2013), a solicitao pode ser realizada por qualquer dispositivo com acesso Internet. O cliente informa os seus dados, o endereo de partida e as caractersticas desejadas do txi ou do taxista, como porta-malas grande, se aceita carto de crdito, se tem ar-condicionado etc. Automaticamente, o Taximov localiza o automvel livre

26 mais prximo e que melhor atenda aos requisitos solicitados e envia uma mensagem convidando o motorista a realizar a corrida. Basta que o cliente aceite o convite para que ele seja informado de todos os dados sobre o txi, alm do tempo estimado de chegada. O TaxiMov no permite a requisio de servio por parte do usurio diretamente de um aplicativo pelo dispositivo. A requisio deve ser realizada atravs do site, via browser. Abaixo, na figura 4, pode-se observar a solicitao de servio, visualizada por parte do taxista (GRANJANEWS, 2012).
Figura 4 Aplicativo TaxiMov

Fonte: TaxiMov (2013).

2.5.3

EasyTaxi

O EasyTaxi um aplicativo de smartphone que conecta o passageiro ao txi mais prximo, assim viabilizando uma corrida rpida, prtica e segura (EASYTAXI, 2013). A segurana do usurio e do taxista o diferencial do servio da Easy Taxi. Quem pede um veculo pelo aplicativo tem acesso a informaes sobre o motorista (nome e carro) e pode acompanh-lo em tempo real via GPS. J o taxista tem a segurana de saber quem ser

27 seu passageiro e onde ele est, j que seu endereo preenchido automaticamente por meio de uma tecnologia de geolocalizao (SEGS, 2013). Oferecido em quatro idiomas, Portugus, Ingls, Espanhol e Coreano, o aplicativo pode ser baixado de forma gratuita em smartphones com sistema Android ou iOS. Caso o usurio no tenha um celular com acesso internet, ele pode solicitar um txi do servio por meio do site oficial. Com usabilidade simples, o processo de pedido do txi concludo em apenas alguns cliques e em menos de 10 minutos o veculo estar disposio do passageiro (SEGS, 2013). Na figura 5 pode ser visualizada a tela para requisio de um servio no aplicativo EasyTaxi.
Figura 5 Aplicativo EasyTaxi

Fonte: EasyTaxi (2013).

28 3 DESENVOLVIMENTO

Neste captulo so abordadas as etapas de desenvolvimento do projeto. Primeiramente so descritos os requisitos do trabalho. Em seguida so apresentadas a especificao e implementao, destacando e explicando as principais classes e funes do aplicativo. Por fim, so apresentados os resultados obtidos.

3.1

REQUISITOS DO PROJETO

A aplicao dever: a) possibilitar o envio de mensagem SMS, contemplando na mesma as informaes de georreferenciamento (Requisito Funcional RF); b) disponibilizar uma opo para envio automtico da mensagem (RF); c) definir a menor distncia entre o passageiro e o taxista, atravs do clculo de coordenadas (RF); d) enviar uma mensagem SMS para o taxista selecionado com o endereo do passageiro (RF); e) apresentar para o taxista atravs do Google Maps a localizao do passageiro (RF); f) possibilitar o cadastro/consulta de taxistas vinculados ao servio, bem como suas informaes bsicas (RF); g) utilizar o ambiente Eclipse para o desenvolvimento (Requisito No-Funcional RNF); h) utilizar a linguagem de programao Java (RNF); i) utilizar o sistema operacional Android (RNF).

29 3.2 ESPECIFICAO

Nesta seo so descritos os diagramas de casos de uso, de classes, de distribuio e de sequncia. Para a elaborao dos diagramas foi utilizada a ferramenta Enterprise Architect verso 6.5, seguindo a notao Unified Modeling Language (UML).

3.2.1

Diagrama de casos de uso

O trabalho disponibiliza um aplicativo para dispositivos mveis para requisio de servios de txi a partir de mensagens georreferenciadas. Nos casos de uso so apresentados dois usurios: passageiro, que envia a mensagem de requisio e o taxista, que recebe. Na figura 6 apresentado o diagrama de casos de uso da aplicao.
Figura 6 Diagrama de casos de uso

30 3.2.2 UC01 Requisitar servio

A ao inicial do usurio deve ser a requisio do servio, conforme descrito no Quadro 1.


Quadro 4 Caso de uso UC01

UC01 Requisitar servio Pr-condio O dispositivo deve estar conectado internet e com o GPS ativo. Cenrio principal 01) O passageiro aperta o boto Requisitar servio. 02) O aplicativo apresenta tela com o endereo atual Exceo Se o GPS e a internet no estiverem ativos, ser apresentada tela para habilitar ambos. Ps-condio apresentada tela para confirmao do endereo.

3.2.2.1

UC02 Confirmar endereo

O segundo caso de uso apresenta o endereo atual do passageiro, permitindo o mesmo confirmar ou cancelar a requisio.
Quadro 5 Caso de uso UC02

UC02 Confirmar endereo Pr-condio Cenrio principal O passageiro deve ter requisitado o servio 01) O passageiro aperta o boto OK, confirmando o endereo. 02) O aplicativo inicia o servio, requisitando taxistas Cenrio alternativo Ps-condio Passageiro aperta o boto Cancelar, cancelando a requisio. O servio iniciado por parte do passageiro.

3.2.2.2

UC03 Realizar login

31 Neste caso de uso, o taxista deve logar no sistema, para comear a receber as requisies.
Quadro 6 Caso de uso UC03

UC03 Confirmar endereo Pr-condio Cenrio principal O taxista deve possuir cadastro 01) O taxista informa login; 02) O taxista informa senha; 03) O taxista aperta o boto Login. Cenrio alternativo 01.1) O taxista no possui cadastro 01.2) O taxista seleciona a opo Realizar cadastro 01.3) O taxista realiza o cadastro. 01.4) O taxista realiza o login. Ps-condio O servio iniciado por parte do taxista.

3.2.2.3

UC04 Aceitar servio

partir de uma requisio feita por um passageiro, o sistema realiza o clculo de menor distncia. Caso o taxista seja selecionado apresentada para o mesmo uma opco com o endereo do passageiro e a possibilidade de aceitar ou recusar o servio. O quarto caso de uso representa esta ao.

32
Quadro 7 Caso de uso UC04

UC04 Aceitar servio Pr-condio O servio deve ter sido iniciado por parte do passageiro e do taxista. Cenrio principal 01) O aplicativo apresenta tela com o endereo do passageiro. 02) O taxista aceita o servio, apertando o boto OK. 03) O aplicativo apresentada na tela o endereo, oferecendo opo para visualizao no mapa. Cenrio alternativo 02.1) O taxista no aceita o servio, apertando o boto Cancelar. 02.2) O aplicativo seleciona outro taxista para atender a requisio. Ps-condio O servio aceito por parte do taxista, sendo apresentado em sua tela o endereo do passageiro e a possibilidade de visualizao no mapa.

3.2.2.4

UC05 Visualizar localizao no mapa

Para facilitar a busca do taxista pelo passageiro, foi disponibilizada uma opo para visualizao do endereo de busca diretamente no Google Maps. Esta ao descrita no quinto caso de uso.
Quadro 8 Caso de uso UC05

UC05 Visualizar localizao no mapa Pr-condio O servio deve ter sido aceite por parte do taxista e o endereo de busca disponibilizado. Cenrio principal 01) O taxista aperta o boto Visualizar mapa 02) O aplicativo apresenta o mapa com o endereo de destino. Ps-condio apresentado o mapa com marcador sobre o endereo de destino.

33 3.2.3 Diagrama de classes

No desenvolvimento do sistema, foi necessria a criao de quatro aplicaes. A primeira, representada no diagrama de classes da figura 7, trata da aplicao utilizada pelo taxista para gerenciar suas requisies, sendo a MainActivity a activity principal do aplicativo. A partir desta que as demais activities so iniciadas. A classe MainActivity possui 2 mtodos, sendo que o mtodo onCreate executado ao iniciar a classe. Este chama o mtodo startMainActivity que responsvel por atribuir os listeners para cada componente de tela, definidos no layout definido como
tela_inicial.xml.

A partir desta classe possvel acessar 3 novas activities, sendo elas a executada ao realizar o login, a UserPassActivity, executada caso o

UserLoggedActivity,

usurio tenha esquecido sua senha e deseja recuper-la, e a UserRegisterActiviy, para realizar novos cadastros.

34
Figura 7 Diagrama de classes Projeto Taxista

35

A classe WebServiceControl responsvel por garantir e realizar todas as operaes diretamente no banco de dados, sendo o seu acesso garantido atravs de um servidor web. Na segunda aplicao, utilizada pelo usurio requisitante, o diagrama de classes est demonstrado na figura 8, onde a principal activity a MainActivity.
Figura 8 Diagrama de classes Projeto Usurio

Por tratar da requisio da informao, nesta aplicao h apenas 3 classes. A classe


MainActivity

responsvel por apresentar a tela da aplicao e atribuir o listener para o

nico componente de tela existente. GPSTracker a classe responsvel por obter a localizao do usurio, e ela implementa a interface LocationListener. Por fim, a classe
MessageControl

realiza o controle sobre as mensagens enviadas para requisio.

A terceira aplicao o servidor web, definido no diagrama apresentado na figura 9.

36
Figura 9 Diagrama de classes Projeto WebService

A principal classe deste projeto a WS. Nesta classe so definidas as operaes que sero utilizadas atravs do web service. Nas operaes por sua vez h apenas uma chamada para os mtodos da classe DAOUsuario, que responsvel por realizar a conexo com o banco e realizar as leituras e gravaes necessrias. A quarta e ltima aplicao refere-se ao servidor GSM, visualizada no diagrama da figura 10, responsvel por ser o intermedirio entre as mensagens do usurio e dos taxistas. Nesta aplicao a principal classe a Main, sendo esta responsvel por iniciar o servidor, previamente definido na classe Servidor. As mensagens so gerenciadas atravs das classes ControlarMensagem e
ReceberMensagem.

A classe ReceberMensagem manipula as mensagens, criando instncias do

tipo Mensagem para cada mensagem recebidas. Esta classe define e separa mensagens de usurios e taxistas, armazenando-as em listas, controladas por sua vez pela classe
ControlarMensagem.

A classe EnviarMensagem realiza o tratamento das requisies do usurio, enviando as mensagens de requisio de servio aos taxistas. Nesta mesma classe definido o algoritmo de menor distncia.

37
Figura 10 Diagrama de classes Projeto modem GSM

3.2.4

Diagrama de distribuio

O diagrama de distribuio apresentado na figura 11 apresenta a forma como as tecnologias se integram.

38
Figura 11 Diagrama de distribuio

3.2.5

Diagrama de sequncia

Os diagramas de sequncia representados nas figuras 12 e 13 mostram respectivamente a interao do usurio e do taxista com o aplicativo.

39
Figura 12 Diagrama de sequncia - Usurio

Figura 13 Diagrama de sequncia - Taxista

40 3.3 IMPLEMENTAO

Esta seo descreve tcnicas e ferramentas utilizadas para o desenvolvimento do sistema. So detalhadas as principais classes, apresentando trechos de cdigo para facilitar o entendimento. Por fim, apresentada a operacionalidade dos aplicativos.

3.3.1

Tcnicas e ferramentas utilizadas

Para o desenvolvimento de todos os aplicativos do sistema foi utilizada a linguagem de programao Java em conjunto com o Android SDK, que disponibiliza as APIs e ferramentas necessrias para desenvolvimento para a plataforma Android. Como Integrated Development Environment (IDE), foi utilizado o Eclipse, juntamente com o plugin Android Development Tools (ADT). O Android SDK disponibiliza vrias bibliotecas e ferramentes essencias para o desenvolvimento de aplicativos para o sistema operacional Android, incluindo um emulador e um debbuger para facilitar os testes. O desenvolvimento da aplicao foi realizado utilizando dois modelos de dispositivos mveis, sendo eles um smartphone Samsung Galaxy Ace Plus, da fabricante Samsung com o sistema operacional Android Gingerbread, e um celular Sony Ericsson W200i, da fabricante Sony. No processo de tratamento das mensagens recebidas foi utilizada a biblioteca SMSLib. Foi escolhida esta bibilioteca pois a mesma open-source e possui melhor especificao e documentao para uso.

3.3.2

Configurao da aplicao

Nas aplicaes para Android, comum haver um arquivo de manifest, normalmente nomeado de AndroidManifest.xml, onde so determinadas todas as configuraes da aplicao, como por exemplo as activities, layouts, permisses, entre outros. O quadro 9 apresenta o contedo do AndroidManifest.xml da aplicao do taxista, por ser o mais completo entre os desenvolvidos neste projeto.

41 Neste exemplo pode-se identificar as permisses necessrias para o correto funcionamento da aplicao, como por exemplo as permisses de acesso a internet e de utilizao dos servios de mapa da Google. Pode-se ressaltar ainda como uma das configuraes principais da aplicao a key de depurao, utilizada para realizar o download dos mapas do servidor da Google, e presente no fim do arquivo manifest da aplicao.
Quadro 9 AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.aplicativotaxista" android:versionCode="1" android:versionName="1.0" > <!-- Permisses de uso da aplicao --> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.where.common.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppThemeBlack" > <!-- Activity inicial --> <activity

42
android:name="com.example.aplicativotaxista.MainActivity" android:label="@string/title_activity_aplicativo_usuario" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category /> </intent-filter> </activity> <!-- Demais activities --> <activity android:name="UserLoggedActivity"></activity> <activity android:name="UserPassActivity"></activity> <activity android:name="UserRegisterActivity"></activity> <activity android:name="MapActivity"></activity> <!-- Chave necessria para utilizao do Google maps API v2 --> <meta-data android:name= "com.google.android.maps.v2.API_KEY" android:value=" AIzaSyD352AfNJ9O6NmNZ-igch7nNgqv-1aPd9s"/> </application> </manifest> android:name="android.intent.category.LAUNCHER"

3.3.3

Google Maps API v2

A integrao do Google Maps com uma aplicao Android requer uma chave de autenticao. Esta chave necessria para que seja possvel acessar o banco de dados da Google e obter as informaes dos mapas. Desde 3 de dezembro de 2012 a v1 da Google Maps API foi descontinuada. As chaves obtidas para a primeira verso da API no podem ser utilizadas nesta nova verso. Desta forma, necessrio gerar uma chave especfica para esta verso da API. Para esta nova verso podem ser geradas chaves do tipo debug e do tipo release. As chaves do tipo debug so designadas para apliaes em testes, que no sero publicadas na loja da Google. As chaves do tipo release so especficas para disponibilizar aplicaes na loja. Para as aplicaes desenvolvidas, foram utilizadas chaves do tipo debug. O mtodo para obter as chaves de testes requerem alguns passos. Ao executar a aplicao Android atravs do Eclipse, gerado um arquivo debug.keystore, utilizado para extrair atravs da ferramenta keytool do Java o SHA-1 fingerprint. necessrio tambm

43 uma conta Google para cadastrar o projeto na Google APIs Console, informar a SHA-1 fingerprint obtida e obter a chave de utilizao do Google Maps. Esta chave deve ser inserida no AndroidManifest, conforme demonstrado anteriormente.

3.3.4

Acesso web service

Para realizar a leitura e gravao de dados em banco de dados atravs da aplicao Android foi necessria a utilizao de um web service. O mtodo requestServiceVar, disponibilizar na classe WebServiceControl responsvel pela utilizao destas operaes, e est definido no quadro 10.
Quadro 10 Mtodo requestServiceVar
public metodo) { SoapObject resultSOAP = null; try { SoapObject request = new SoapObject("http://src/", metodo); for (int i = 0; i < parametros.size(); i++) { request.addProperty("arg"+i, parametros.get(i)); } SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE("http://189.35.192.158:8080/WebServiceNovo/WS?wsdl/"); androidHttpTransport.call(metodo, envelope); resultSOAP= (SoapObject) envelope.bodyIn; } catch (Exception e) { e.printStackTrace(); } return resultSOAP; } SoapObject requestServiceVar(List<String> parametros, String

Os parmetros passados neste mtodo so uma lista de Strings, que representa os parmetros para as operaes acessadas no web service, e uma String que representa o nome da operao a ser acessada. O objeto SoapObject representa o namespace do web service e o mtodo que necessrio chamar. Este mesmo objeto responsvel ainda por armazenar os parmetros para utilizar no mtodo chamado. A chamada ao servidor realizada utilizando o

44 objeto HttpTransportSE passando um envelope SOAP e o prprio SoapObject. Como resultado, temos um objeto do prprio tipo SoapObject, que contm o retorno das operaes realizadas no web service.

3.3.5

Servidor GSM

Para intermediar as mensagens recebidas por usurios e taxistas e posteriormente realizar a melhor escolha atravs da localizao dos mesmos, foi necessrio construir um servidor GSM, capaz de filtrar as mensagens recebidas e enviar novas mensagens de requisio. A principal classe deste servidor a Servidor, que atravs do mtodo
iniciarServidor

configura um modem GSM para realizar as operaes necessrios. Este


Quadro 11 Mtodo iniciarServidor

mtodo est definido no quadro 11.


public void iniciarServidor() throws Exception { OutboundNotification outboundNotification OutboundNotification(); SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM4", 115200, "Sony Ericsson", "W200i"); gateway.setProtocol(Protocols.PDU); gateway.setInbound(true); gateway.setOutbound(true); gateway.setSimPin("0000"); Service.getInstance().setOutboundMessageNotification(outboundNotifica tion); Service.getInstance().addGateway(gateway); Service.getInstance().startService(); }

new

Primeiramente necessrio instanciar um objeto do tipo SerialModemGateaway, passando como parmetro as configuraes do modem GSM, com a porta em que o mesmo est conectado, modelo e baudrate.
setInbound

Em seguida necessrio ativar os mtodos

e setOutbound. Estes mtodos da classe gateway definem respectivamente se

ser possvel tratar as mensagens recebidas e enviadas. Por fim, deve-se adicionar o objeto
SerialModemGateway

ao servidor e iniciar o mesmo atravs do mtodo startService.

45 As mensagens recebidas so armazenadas em listas com objetos do tipo


InbondMessage

e podem ser lidas a qualquer momento atravs da instruo readMessages.

O objeto InboundMessage possui todas as informaes da mensagem recebida, como texto, nmero do celular emitente, horrio, entre outras caractersticas, sendo possvel manipular estes dados e utiliz-los na aplicao.

3.3.6

GPS

O localizao do usurio obtida atravs do dispositivo GPS em conjunto com o provedor WiFi. A classe GPSLocation, referenciada no quadro 12, responsvel por atualizar a posio do usurio.
Quadro 12 Mtodo getLocation public void getLocation(Context context) { if(locationManager == null) locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); try { isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } catch(Exception ex) {} try { isNetWorkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); } catch(Exception ex) {} if (isGPSEnabled) { locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 40000, 0, locationListenerGps); } if (isNetWorkEnabled) { locationManager.requestLocationUpdates (LocationManager.NETWORK_PROVIDER, 40000, 0, locationListenerNetwork);
} if (!checkInternet(context) && !isGPSEnabled) { showSettingsAlert(context); } }

O mtodo getLocation, disponvel na classe GPSLocation responsvel por atualizar a posio do usurio. Esta classe possui uma instncia dos objetos Location e
LocationManager.

Atravs do mtodo requestLocationUpdates configurado que sejam

realizadas atualizaes de localizao atravs do GPS e da WiFi (primeiro parmetro), a cada quarenta segundos (segundo parmetro), no levando em considerao a distncia percorrida (terceiro parmetro). Por fim, informado o listener para atualizao da posio. A prpria

46 classe
GPSLocation

implementa

interface

LocationListener.

mtodo

OnLocationChanged

chamado toda vez que realizada a atualizao de posio, recebendo

como parmetro a nova posio do dispostivo.

3.3.7

Operacionalidade da implementao

A operacionalidade da aplicao apresentada com base nos casos de uso descritos, sendo apresentadas screenshots da aplicao em execuo e descrio dos passos para melhor endendimento. A interface do prottipo simples e foi desenvolvida com o objetivo de facilitar a utilizao para usurios no habituados a dispositivos mveis. As imagens apresentadas foram registradas com celulares Samsung Galaxy Ace Plus, realizando uma solicitao de servio do endereo Rua Olavo Bilac, Velha Blumenau, para o endereo Rua Joo Pessoa,
Velha Blumenau.

3.3.7.1

Aplicativo usurio

A aplicao do usurio possui basicamente apenas uma tela e todas as aes so geradas a partir de um boto. Ao iniciar a aplicao (figura 14) o usurio orientado atravs do texto disponvel em tela a realizar a requisio do servio selecionando o boto Requisitar servio. Neste caso, necessria a utilizao do GPS para obter a posio do dispostivo e de internet para obter a descrio do endereo do usurio. Caso o usurio no esteja com estes servios habilitados, apresentada opo para ativar os mesmos (figura 15). Ao confirmar a ativao, a aplicao conduz ao menu de configuraes.

47
Figura 14 Tela inicial do aplicativo usurio Figura 15 Ativao do GPS

Para os casos em que o servios necessrios foram ativados ou estavam previamente ativados, ao requisitar o servio apresentada tela para confirmao do endereo da requisio, conforme pode ser visto na figura 16.
Figura 16 Tela inicial do aplicativo usurio Figura 17 Ativao do GPS

48 Ao confirmar o servio, a requisio entra na lista de requisies do servidor, e apresentada a mensagem Servio iniciado. Aguarde (figura 17).

3.3.7.2

Aplicativo taxista

Ao abrir o aplicativo devem ser informados o login e a senha, conforme demonstrado na figura 18. Para qualquer ao na tela inicial do aplicativo, necessria conexo com a internet. Caso a opo de internet no esteja habilitada no dispositivo, apresentada a mensagem necessrio acessar a internet para utilizao deste aplicativo. Deseja ir para o menu de configuraes?, ao acessar o aplicativo, conforme visualizao da figura 19.

Figura 18 Tela inicial do aplicativo taxista

Figura 19 Ativao da internet

Quando for iniciado o aplicativo do taxista pela primeira vez, o usurio no poder acessar o servio pois no possui um login para a aplicao. Desta forma, torna-se necessrio realizar um cadastro, passando informaes bsicas sobre o usurio. Esta tela demonstrada na figura 20.

49
Figura 20 Cadastro de taxistas Figura 21 Reenvio de senha

Ainda na tela inicial, caso o usurio tenha esquecido sua senha, possvel recuper-la acessando a opco Esqueceu sua senha? (figura 21). Ser solicitado o e-mail do cadastro, e em seguida enviada as informaes ao solicitante. Para usurios que j possuam cadastro, ao informar o usurio e a senha, aberta a tela para controle de servios. Neste ponto da aplicao necessria a utilizao do GPS, juntamente com a internet. O prximo passo consiste em aguardar a aplicao determinar a posio do dispostivo e posteriormente adicionar o mesmo na lista de taxistas disponveis. A mensagem Obtendo posio (figura 22) apresentada na tela, seguida de outra mensagem Posio encontrada. Servio em andamento em caso de sucesso na obteno da localizao (figura 23).

50
Figura 22 Obtendo posio Figura 23 Posio encontrada

Uma vez definida a posico, necessrio aguardar uma requisio. Nos casos em que no apresentada nenhuma requisio de servio para o taxista, a posio do dispositivo atualizada, atravs do mesmo sistema de determinar a posio e adicionar na lista de taxistas. Aps o surgimento de uma requisio, apresentada em tela uma opo para determinar se o servio ser ou no aceito. A mensagem apresenta informaes do endereo de usurio requisitante, conforme pode ser verificado na figura 24. Para os casos em que o servio no for aceito, o sistema segue com a obteno de posio e atualizao do servio.

51
Figura 24 Informaes da requisio

Caso o servio seja aceito, gravado em tela o endereo da requisio para posterior consulta (figura 25). Se necessrio o usurio pode consultar o endereo no mapa, atravs da opo Visualizar mapa. exibida ento a tela com o mapa da cidade, com um marcador sobre o endereo da requisico (figura 26).
Figura 25 Endereo da requisio Figura 26 Visualizao no mapa

52

3.4

RESULTADOS E DISCUSSO

O presente trabalho apresentou o desenvolvimento de um sistema baseada em localizao para realizar a requisio de servios de txi. Neste sistema foi necessria a utilizao de um servidor GSM, para controlar as mensagens SMS enviadas tanto pelo lado do taxista quanto do usurio requisistante. Para tal, foi utilizada a bibilioteca SMSLib, que permite o controle de envio e recepo de mensagens atravs de um modem GSM via aplicao desktop. No entanto, foram encontradas algumas dificuldades relativas a compatibilidade de dispositivos GSM com a biblioteca. Foram testados diversos modelos que possuem a dupla funcionalidade de modem GSM e celular, como por exemplo o Nokia 7230, Motorola Q11 e Nokia N95. Porm somente aps os testes com o celular Sony Ericsson W200i foi possvel utilizar plenamente o servidor GSM. Para obter a atualizao da localizao dos usurios, primeiramente foi utilizado apenas o dispositivo GPS. Porm, nos testes realizados, foi verificado que este dispositvo apresenta certa demora e por muitas vezes no consegue definir a posio do dispositivo em ambientes fechados. Por sua vez a localizao obtida atravs da WiFi mostrou-se rpida, porm sem a preciso do dispositivo GPS. Desta forma, optou-se por criar uma soluo que abrangesse as duas situaes. Os dois dispositivos devem estar ativos, sendo o dispotivo GPS prioritrio em comparao a WiFi. Caso o dispositivo GPS no determine a posio, ento a utilizada a localizao determinada pela rede WiFi. Outro ponto analisado nos testes realizados diz respeito a performance do sistema. Infelizmente o principal empecilho referente a esta questo foi referente as redes GSM. Houve demasiada demora para realizar o envio, recebimento e processamento das solicitaes. Por exemplo, por muitas vezes nos testes era enviada uma SMS de requisio e a mesma no era notificada no servidor GSM. Aps enviar nova requisio e aguardar alguns minutos ambas as solicitaes eram notificadas no servidor ao mesmo tempo, como se tivessem sido enviadas simultaneamente. Esta situao no pde ser contornada, visto que no se trata de um problema na aplicao em si mas da infraestrutura da operadora utilizada nos testes.

53 Os principais testes realizados foram efetuados utilizando quatro dispositivos. Um dispositivo Sony Ericsson W200i para utilizao como modem GSM e outros trs dispositivos Samsung Galaxy Ace Plus para simular requisies. Os endereos utilizados para requisies foram da Rua Iguau, Itoupava Seca Blumenau para a rua So Paulo, Itoupava
Seca Blumenau

e rua Olavo Bilac, Velha Blumenau para a rua Joo Pessoa, Todas as funcionalidades obtiveram um resultado positivo, sendo que

Velha Blumenau.

sempre foi designado um taxista para o usurio requisitante. O quadro 13 apresenta um comparativo entre as funcionalidades implementadas em relao aos trabalhos correlatos.
Quadro 13 Comparao de resultados

funcionalidade requisitar servio por SMS requisitar servio pelo dispositivo acompanhar pedido em tempo real visualizar localizao do usurio no mapa usurio escolher taxista

QueroTxi sim sim no

ResolveA no sim sim

TxiMov no no sim

EasyTxi no sim sim

sim

sim

sim

sim

no

no

no

sim

54 4 CONCLUSES

O sistema desenvolvido permite que usurios realizem requisies de servios de txi atravs de smartphones e designa o taxista mais prximo estes usurios, sendo que a localizao do usurio requisitante pode ser visualizada pelo taxista nos mapas disponveis pelo Google Maps. O sistema atendeu a todos os objetivos especficos definidos, permitindo, por exemplo, o cadastro de novos usurios e o envio de mensagens georeferenciadas. A plataforma Android mostrou-se bastante completa para o desenvolvimento de aplicaes baseadas em localizao, visto que a mesma possui diversas bibliotecas internas que auxiliam nesta questo. Outro ponto destacado refere-se a IDE utilizada para o desenvolvimento. O Eclipse, em conjunto com o Android SDK, se mostrou o mais apropriado, visto que possui plugins e emuladores capazes de simular uma posio e o uso de GPS. Em relao aos trabalhos correlatos, pde-se observar que o aplicativo desenvolvido no possui uma interface e funcionalidades to robustas quanto os aplicativos comerciais, porm, certamente possui as principais caractersticas necessrias para a requisio do servio. A pesquisa e implementao proporcionaram ainda a chance de estudar e entender uma nova tecnologia em expanso, visto que a plataforma Android cada vez mais utilizada em smartphones e tablets.

4.1

EXTENSES

Apesar dos resultados obtidos, o sistema ainda apresenta limitaes e pontos que podem ser melhorados. Sugere-se: a) desenvolver um mdulo onde os usurios tambm devem realizar um cadastro, para consultas futuras e controle de requisies imprprias; b) permitir que neste cadastro sejam adicionadas fotos dos passageiros;

55 c) desenvolver uma funcionalidade onde o usurio possa acompanhar o deslocamento do taxista em tempo real; d) disponibilizar a aplicao para outros smartphones que possuam outro sistema operacional.

56 REFERNCIAS BIBLIOGRFICAS

ANDROID DEVELOPERS. LocationManager. [S.l.], 2012a. Disponvel em: <http://developer.android.com/reference/android/location/LocationManager.html>. Acesso em: 10 abr. 2013. ______. Obtaining user location. [S.l.], 2012b. Disponvel em: <http://developer.android.com/guide/topics/location/obtaining-user-location.html>. Acesso em: 10 abr. 2013. ______. Introduction to Google Maps. [S.l.], 2013c. Disponvel em: <https://developers.google.com/maps/documentation/android/intro>. Acesso em: 25 abr. 2013. ______. Map objects. [S.l.], 2013d. Disponvel em: <https://developers.google.com/maps/documentation/android/map >. Acesso em: 26 abr. 2013. ______. Google Maps API v2 key. [S.l.], 2013d. Disponvel em: <https://developers.google.com/maps/documentation/android/start#getting_the_google_maps _android_api_v2>. Acesso em: 26 abr. 2013. APOLICE. Sistema TaxiMov. [S.l.], 2013. Disponvel em: < http://revistaapolice.com.br/2013/04/sistema-taximov-permite-solicitacao-online-de-taxi/>. Acesso em: 10 abr. 2013. BAULER, Andr G. Sistema de controle para empresa prestadora de servio utilizando envio/recebimento de SMS. 2011. 83 f. Trabalho de Concluso de Curso (Bacharelado em Cincia da Computao) - Centro de Cincias Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. Disponvel em: <http://www.inf.furb.br/~pericas/orientacoes/SMS2011.pdf>. Acesso em: 05 jun. 2013. COULORIS, George; DOLLIMORE, Jean; KINDBERG, Tim. Systems: concepts and design. 4. ed. Londres, 2005. DA COSTA, Bruno L. de C.; DA COSTA, Fabiene C. de C. O sistema de txis: mobilidade urbana e reduo nas emisses de gases de efeito estufa no rio de janeiro. In: PLURIS: 2010 The Challenges of Planning in a Web Wide World, 2010, Faro Portugal. Analis do Pluris 2010. Faro Portugal, 2010. GASPARINI, Andr; CAMPOS, Vnia B. G.; DAGOSTO, Mrcio de A. Modelos para estimativa da demanda de viagens de veculos de carga para supermercados e shoppingcenters. Transportes, v. XVIII, n. 1, p. 57-64, mar. 2010.

57 HORD. Jennifer. Como funciona o SMS. [S.l.], 2010. Disponvel em: <http://marcustaboza.blogspot.com.br/2010/02/como-funciona-o-sms.html>. Acesso em: 05 jun. 2013. IPEA. Mobilidade urbana. [S.l.], 2011. Disponvel em: <http://www.ipea.gov.br/portal/images/stories/PDFs/SIPS/110504_sips_mobilidadeurbana.pd f>. Acesso em: 3 set. 2011. MAGUNI, Reynaldo L.; NAVARRO, Mel L. P.; ROSARIO, Kathleen R. chitSMS: community health information tracking system using short message service. 2010. 61 f. Department of Computer Science - College of Engineering. University of the Philippines. MONICO, Joo F. G. Posicionamento pelo NAVSTAR-GPS Descrio, Fundamentos e aplicaes. 1. ed. So Paulo: So Paulo, 2000. RESOLVEAI. Aplicativo ResolveA. [S.l.], 2012a. Disponvel em: < http://www.resolveai.com.br/#!/about-us>. Acesso em: 12 maio 2013. ______. Aplicativo ResolveA. [S.l.], 2012b. Disponvel em: < http://www.resolveai.com.br/#!/help>. Acesso em: 12 maio 2013. SEGS. Aplicativo EasyTaxi. [S.l.], 2013. Disponvel em: <http://www.segs.com.br/index.php?option=com_content&view=article&id=117287:-easytaxi-leva-servico-de-taxi-pelo-celular-para-porto-alegre&catid=71:categoriaveiculos&Itemid=367>. Acesso em: 10 maio 2013. SMSLib. About SMSLib. [S.l.], 2013. Disponvel em: <http://smslib.org/doc/about/>. Acesso em: 5 maio 2013. USHISIMA, Ricardo. Consumindo web servisse em aplicaes Android. [S.l.], 2011. Disponvel em: < http://zbra.com.br/2011/03/30/consumindo-web-service-em-aplicacoes-android/>. Acesso em: 3 abr. 2013. VINICIUS, Bruno. Transcrevendo SoapObjects atravs de annotations & reflection. [S.l.], 2011. Disponvel em: <http://zbra.com.br/2011/07/06/androidksoap-pt-1-transcrevendo-soapobjects-atraves-deannotations-reflection/>. Acesso em: 3 abr. 2013.

Anda mungkin juga menyukai