Área de Sistemas de Informação por Thiago Luiz Prux ...siaibib01.univali.br/pdf/Thiago Luiz...
Transcript of Área de Sistemas de Informação por Thiago Luiz Prux ...siaibib01.univali.br/pdf/Thiago Luiz...
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
REDE SOCIAL BASEADA EM LOCALIZAÇÃO GEOGRÁFICA PARA
SISTEMAS ANDROID
Área de Sistemas de Informação
por
Thiago Luiz Prux
Benjamin Grando Moreira, M. Eng.
Orientador
Itajaí (SC), julho de 2013
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
REDE SOCIAL BASEADA EM LOCALIZAÇÃO GEOGRÁFICA PARA
SISTEMAS ANDROID
Área de Sistemas de Informação
por
Thiago Luiz Prux
Relatório apresentado à Banca Examinadora do
Trabalho Técnico-científico de Conclusão do
Curso de Ciência da Computação para análise e
aprovação.
Orientador: Benjamin Grando Moreira, M. Eng.
Itajaí (SC), julho de 2013
RESUMO
PRUX, Thiago Luiz. Rede social baseada em localização geográfica para sistemas Android.
Itajaí, 2013. 81 f. Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da
Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí,
Itajaí, 2013.
O foco deste projeto é o desenvolvimento de um sistema que ajude o usuário a encontrar outras
pessoas que tenham interesses em comum, e que possibilite visualizar os locais em que seus amigos
mais visitaram. São utilizados funcionalidades para facilitar o encontro dos usuários, como o mapa
de calor, provendo a observação diretamente no mapa dos locais que o usuário mais visita ou histórico
que permite visualizar os locais que o usuário esteve em determinado dia. Para este trabalho foi
utilizado a linguagem de programação Java, tanto para a aplicação cliente, quanto para o
desenvolvimento da aplicação servidor, que utiliza o framework JAX-RS (Java API for RESTful Web
Services) por ser um framework que possibilita a utilização da arquitetura REST (Representational
State Transfer - Transferência de Estado Representacional), que é o protocolo padrão de comunicação
do servidor web. A integração do Facebook com o sistema permite a utilização de usuários já
cadastradas na rede social, permitindo a recuperação de informações já disponibilizadas, o que é útil
para traçar perfis e interligar amigos. Foi escolhido o uso do Sistema Operacional Android por ele ser
de código aberto. O projeto viabiliza uma maior socialização entre seus utilizadores, dando-lhes a
oportunidade de conhecer novas pessoas que compartilhem de suas afinidades.
Palavras-chave: Redes Sociais. Geolocalização. Sistemas Móveis.
ABSTRACT
This project goal is the development of a system that helps the user to find others persons with
common interests, allowing the visualization of the places their friend´s most visited places. The
system utilizes functionalities to help the encounters of the users, like the heat map, giving the view
of the places the users has been directly on the map, or the history, granting the chance to view the
places the user has visited on any day. This project utilized the Java programming language, for both
the client application and the server application, utilizing the JAX-RS framework because it allows
the utilization of the RES architecture, that is the web server communication standard. The
integration of the system with the Facebook allows the usage of the users already registered on the
social network, allowing the recovery of information already given, which is useful to trace profiles
and interconnect friends. The operation system Android was chosen because he is open source. The
project helps a better socialization between its users, granting them the opportunity to meet new
persons who share common interests.
Keywords: Social Networks. Geolocation. Mobile Systems
LISTA DE FIGURAS
Figura 1. Número de usuários do Facebook ativos por mês. ............................................................. 11
Figura 2. Número de usuários móveis ativos no Facebook por mês. ................................................. 12 Figura 3. Utilização de Sistemas Operacionais Móveis ..................................................................... 13 Figura 4. Rede Social vs. Mídia Social. ............................................................................................. 18 Figura 5. Localização por satélites ..................................................................................................... 23 Figura 6. Mapa de Calor ..................................................................................................................... 36
Figura 7. Diagrama do Projeto ........................................................................................................... 37 Figura 8. Casos de Uso da Aplicação ................................................................................................. 42 Figura 9. Tela de Login ...................................................................................................................... 43 Figura 10. Menu Principal e Tela de Mapa ........................................................................................ 44
Figura 11. Tela Perfil/Preferências ..................................................................................................... 45 Figura 12. Tela de Amigos ................................................................................................................. 46 Figura 13. Tela de Histórico ............................................................................................................... 47
Figura 14. Configurações Geral/Facebook ......................................................................................... 48 Figura 15. Configurações de Privacidade .......................................................................................... 49 Figura 16. Casos de uso do WebService ............................................................................................. 52 Figura 17. Esquema do banco de dados ............................................................................................. 53
Figura 18. Resultado sobre quais recursos impactado no desempenho dos testes. ............................ 54 Figura 19. Resultados sobre a navegação do sistema. ........................................................................ 55
Figura 20. Resultados das dúvidas de utilização do sistema. ............................................................. 55 Figura 21. Primeira página do questionário de testes. ........................................................................ 63 Figura 22. Segunda página do questionário de testes. ........................................................................ 64
Figura 23. Terceira página do questionário de testes. ........................................................................ 65
Figura 24. Última página do questionário de testes. .......................................................................... 66 Figura 25. Perguntas um a quatro. ...................................................................................................... 72 Figura 26. Perguntas cinco e seis. ...................................................................................................... 73
Figura 27. Perguntas sete e oito ......................................................................................................... 73 Figura 28. Perguntas nove e dez......................................................................................................... 74 Figura 29. Perguntas onze a treze. ...................................................................................................... 75
Figura 30. Perguntas quatorze a dezesseis. ........................................................................................ 76 Figura 31. Perguntas dezessete a vinte. .............................................................................................. 77
Figura 32. Infográfico 1 de versões do Android ................................................................................ 78 Figura 33. Infográfico 2 de versões do Android ................................................................................ 79 Figura 34. Infográfico 3 de versões do Android ................................................................................ 80
LISTA DE TABELAS
Tabela 1. Ranking das redes sociais em maio de 2013 ...................................................................... 19
Tabela 2. Comparação de Recursos de Redes com Geolocalização .................................................. 22 Tabela 3. Histórico de Versões .......................................................................................................... 25 Tabela 4. Dicionário de dados da tabela usuarios .............................................................................. 67 Tabela 5. Dicionário de dados da tabela historicos ............................................................................ 67 Tabela 6. Dicionário de dados da tabela amizades ............................................................................. 68
Tabela 7. Dicionário de dados da tabela interesses_fb_has_facebook ............................................... 68 Tabela 8. Dicionário de dados da tabela interesses_fb ....................................................................... 69 Tabela 9. Dicionário de dados da tabela amizades_fb ....................................................................... 69 Tabela 10. Dicionário de dados da tabela locais ................................................................................ 69
Tabela 11. Dicionário de dados da tabela preferencias ...................................................................... 70 Tabela 12. Views do sistema .............................................................................................................. 70
LISTA DE QUADROS
Quadro 1. Retorno da API Facebook sem autenticação ..................................................................... 27 Quadro 2. Retorno da API Facebook com autenticação .................................................................... 27 Quadro 3. Endereço para requisição geocoding ................................................................................. 29 Quadro 4. Exemplo de Geocoding ..................................................................................................... 30
Quadro 5. Parâmetros obrigatórios para o Places API ....................................................................... 31 Quadro 6. Requisição Places API ...................................................................................................... 31 Quadro 7. Exemplo Places API .......................................................................................................... 32 Quadro 8. Licenciamento ................................................................................................................... 33
Quadro 9. Exemplo Gson ................................................................................................................... 35
LISTA DE ABREVIATURAS
ADB Android Debug Bridge
A-GPS Assisted Global Positioning System
API Application Programming Interface
CDMA Code Division Multiple Access
EDGE Enhanced Data rates for GSM Evolution
FB Facebook
FBML Facebook Markup Language
FK Foreign Key
FQL Facebook Query Language
GPS Global Positioning System
GSM Global System for Mobile Communications
HTTP Hypertext Transfer Protocol
IDE Integrated Development Environment
IP Internet Protocol
JAX-RS Java API for RESTful Web Services
JSON JavaScript Object Notation
MVC Model-view-controller
PK Primary Key
PPS Precise Positioning Service
REST Representational State Transfer
RFID Radio-frequency identification
RI Recuperação da Informação
SDK Software Development Kit
SGDB Sistema de Gerenciamento de Banco de Dados
SO Sistema Operacional
SPS Standard Positioning Service
TTC Trabalho Técnico-científico de Conclusão de Curso
UNIVALI Universidade do Vale do Itajaí
URI Uniform Resource Identifier
URL Uniform Resource Locator
XML Extensible Markup Language
SUMÁRIO
1 INTRODUÇÃO ..................................................................................................... 10
1.1 PROBLEMATIZAÇÃO ................................................................................... 14
1.1.1 Formulação do Problema ......................................................................... 14
1.1.2 Solução Proposta ....................................................................................... 14
1.2 OBJETIVOS ...................................................................................................... 15
1.2.1 Objetivo Geral ........................................................................................... 15
1.2.2 Objetivos Específicos ................................................................................ 15
1.3 METODOLOGIA ............................................................................................. 15
1.4 ESTRUTURA DO TRABALHO ..................................................................... 17
2 FUNDAMENTAÇÃO TEÓRICA ....................................................................... 18
2.1 MÍDIAS SOCIAIS ............................................................................................ 18
2.1.1 Redes Sociais .............................................................................................. 19
2.1.2 Facebook .................................................................................................... 22
2.2 GEOLOCALIZAÇÃO ...................................................................................... 22
2.3 ANDROID .......................................................................................................... 24
2.3.1 Android API .............................................................................................. 26
2.4 FACEBOOK API .............................................................................................. 26
2.5 GOOGLE MAPS API ....................................................................................... 29
2.5.1 Geocoding................................................................................................... 29
2.5.1.1 Utilização .................................................................................................... 29
2.5.1.2 Limites Geocoding ..................................................................................... 30
2.6 PLACES API ..................................................................................................... 30
2.6.1 Utilização .................................................................................................... 31
2.6.2 Limites Places ............................................................................................ 32
2.6.3 Licenciamento ............................................................................................ 32
2.7 FRAMEWORKS ............................................................................................... 33
2.7.1 JAX-RS ....................................................................................................... 34
2.7.2 Gson ............................................................................................................ 34
2.8 MAPA DE CALOR ........................................................................................... 35
3 DESENVOLVIMENTO ....................................................................................... 37
3.1 FERRAMENTAS NECESSÁRIAS ................................................................. 38
3.2 APLICAÇÃO CLIENTE.................................................................................. 39
3.2.1 Requisitos não Funcionais ........................................................................ 39
3.2.2 Requisitos Funcionais ............................................................................... 40
3.2.3 Regras de Negócio ..................................................................................... 41
3.2.4 Casos de Uso .............................................................................................. 41
3.2.5 Telas da Aplicação Cliente ....................................................................... 43
3.3 APLICAÇÃO SERVIDOR .............................................................................. 50
3.3.1 Padrão de Comunicação ........................................................................... 50
3.3.2 Requisitos não Funcionais ........................................................................ 51
3.3.3 Requisitos Funcionais ............................................................................... 51
3.3.4 Regras de Negócio ..................................................................................... 51
3.3.5 Casos de Uso .............................................................................................. 52
3.3.6 Banco de Dados ......................................................................................... 53
3.4 TESTES .............................................................................................................. 54
3.4.1 Análise dos Testes ...................................................................................... 54
4 CONCLUSÕES ..................................................................................................... 56
REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 58
GLOSSÁRIO ............................................................................................. 62
APÊNDICE A. QUESTIONÁRIO DE TESTES ................................. 63
APÊNDICE B. DICIONÁRIO DE DADOS ......................................... 67
APÊNDICE C. RESULTADOS DO QUESTIONÁRIO .................... 72
ANEXO A. INFOGRÁFICO ................................................................................ 78
1 INTRODUÇÃO
Comunidade e Sociedade são conceitos da sociologia bem distintos, Dantas (2010) os
diferencia da seguinte forma:
As comunidades geralmente são grupos formados por familiares, amigos e vizinhos que
possuem um elevado grau de proximidade uns com os outros. Na sociedade esse contato não
existe, prevalecendo os acordos racionais de interesses. Uma diferenciação clara entre
comunidade e sociedade é quando uma pessoa negocia a venda de uma casa, por exemplo,
com um familiar (comunidade) e com um desconhecido (sociedade). Logicamente, as
relações irão ser bastante distintas entre os dois negócios: no negócio com um familiar irá
prevalecer as relações emotivas e de exclusividade; enquanto que na negociação com um
desconhecido, o que irá valer é o uso da razão.
Sendo assim, existem as comunidades formadas na sociedade no contato real e também as
comunidades formadas nas redes sociais, para esta conexão comunidade x rede social o Dicionário
Priberam da Língua Portuguesa (2011), traz a definição de Redes Sociais como o: “conjunto de
relações e intercâmbios entre indivíduos, grupos ou organizações que partilham interesses, que
funcionam na sua maioria através de plataformas da Internet”.
As redes sociais foram desenvolvidas para manter o contato com pessoas, sejam elas
conhecidas fisicamente ou virtualmente. O mercado das redes sociais está crescendo em um ritmo
muito acelerado, especialmente na rede social Facebook, como pode ser visto na Figura 1, que mostra
a quantidade de usuários únicos ativos no mês. Por exemplo, no mês de setembro de 2012, ultrapassou
a quantidade de 1 bilhão os usuários únicos que fizeram login no Facebook.
11
Figura 1. Número de usuários do Facebook ativos por mês.
Fonte: Protalinski (2013)
A participação desta rede social nos aplicativos móveis também está crescendo mais a cada
momento, e em um ritmo ainda mais acelerado, como pode ser visto no gráfico da Figura 2, onde a
curva de crescimento está mais nítida.
12
Figura 2. Número de usuários móveis ativos no Facebook por mês.
Fonte: Protalinski (2013)
Em 2009 havia no Brasil somente uma rede social baseada em geolocalização, chamada “toaí”
(Schapsis, 2009). Nesta época, celulares com geolocalização não possuíam tanta popularidade quanto
os computadores pessoais, e conforme mostra o site da Info Exame (Reuters, 2009), celulares e outros
equipamentos destes portes estarão a cada dia mais presentes no cotidiano das pessoas.
Uma das mais difundidas redes sociais com geolocalização é o Foursquare, possuindo diversas
funcionalidades como compartilhamento de fotos, sistema de recompensas por badges e de pontos,
que são adquiridos à medida que novos lugares são visitados (Foursquare, 2013). Há também outras
redes sociais deste tipo, como Brightkite (2011) e Loopt (2011), que utilizam do recurso de
localização geográfica em sua rede social, porém, com outras funcionalidades distintas.
Uma das vantagens deste tipo de rede social é a capacidade de encontrar pessoas que
frequentem os mesmos locais do usuário, e de utilizar a grande quantidade de informações que esta
13
rede social disponibiliza para a descoberta das preferências e costumes das pessoas, como o local que
elas geralmente frequentam, o horário em que elas o fazem, e a frequência de visitas a um determinado
local. Isto pode aumentar as chances de socialização de quem tem estas informações de outras
pessoas, sendo que um usuário sabe os locais preferidos dos outros usuários, e, com cuidados
necessários, trazer mais segurança ao conhecer novas pessoas, sabendo antecipadamente seus perfis
e que locais estes costumam frequentar.
O trabalho aqui apresentado busca aproveitar as características das redes sociais e
geolocalização, com o uso destas ferramentas para o benefício dos utilizadores do sistema proposto
neste trabalho, agrupadas com as tecnologias hoje disponíveis, como redes móveis e smartphones,
que possibilitam a criação de aplicativo que necessite estar sempre conectado, independente do local
em que esteja, como o que foi desenvolvido neste projeto, para o sistema Android.
O sistema Android, como pode ser visto em Licenses (2013), é um Sistema Operacional open
source, desenvolvido pelo Google para dispositivos móveis, que tem enorme aceitação pelas
empresas de celulares e tablets, cuja participação conforme observado na Figura 3, está crescendo a
cada ano. Florin (2011) mostra que empresas como HTC, LG, Samsung e outras já adotaramo este
Sistema Operacional.
Figura 3. Utilização de Sistemas Operacionais Móveis
Fonte: Adaptado de Smith (2012).
14
Em meados de 2011, o Sistema Operacional Android possuía 46,9% de utilização em
smartphones contra 18,8% do Apple iOS e 11,5% do BlackBerry, como pode ser observado na Figura
3, e um ano depois, em meados de 2012, o Android já possuía 68% dos smartphones, contra 16,9%
do iOS e 4,8 do BlackBerry, uma ocupação excepcional em apenas um ano.
O objetivo deste projeto foi a criação de um protótipo de rede social de fácil utilização, e que
dá a possibilidade de o utilizador poder encontrar fisicamente outras pessoas que compartilhem de
seus interesses, como músicas, filmes ou livros, ou encontrar seus amigos mais facilmente, sabendo
sua posição atual e reutilizando dados cadastrados na rede social Facebook.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
É notável a atual expansão das redes sociais, que disponibilizam ambientes de
relacionamentos e interação entre as pessoas. Esta interação pode ocorrer tanto entre pessoas de um
mesmo convívio como entre pessoas desconhecidas, possuindo ou não determinadas preferências em
comum. Porém, atualmente, em outras redes sociais, não são existentes as funcionalidades que
permitem a localização automática de pessoas desconhecidas que tenham interesses em comum ou
pessoas previamente adicionadas à lista de amigos, quando se encontrem próximos a uma mesma
região geográfica em um determinado momento. Estas funcionalidades são importantes para facilitar
o encontro físico de pessoas que se conheçam ou de pessoas que possuem um mesmo perfil e que
possam se socializar utilizando-se dos interesses em comum.
1.1.2 Solução Proposta
Este projeto propôs como solução o desenvolvimento de uma rede social, que aliada a duas
tecnologias presentes nos sistemas móveis – Internet e Geolocalização – permite a localização física
de outros usuários que compartilhem os mesmos interesses ou que se encontrem próximos,
geograficamente, possibilitando também ter o conhecimento dos locais de seus amigos, desde que
permitido por estes.
Convém ressaltar que o aplicativo possui uma simplicidade e praticidade em sua interface, e
dispõe de opções para habilitar ou desabilitar a localização do usuário a qualquer momento e quando
de seu interesse, resguardando sua privacidade.
15
O sistema tem o nome de LoreTrack, junção de duas palavras em inglês “Lore” e “Track” que
significam Conhecimento e Rastro, respectivamente.
1.2 OBJETIVOS
1.2.1 Objetivo Geral
Desenvolver um protótipo de uma rede social baseada em geolocalização.
1.2.2 Objetivos Específicos
pesquisar por recursos existentes em outras redes sociais com geolocalização;
entender o funcionamento da API (Application Programming Interface - Interface de
Programação de Aplicações) do Facebook;
definir recursos e requisitos do sistema;
modelar o banco de dados que será utilizado para o armazenamento das informações;
projetar o software no lado cliente;
projetar o WebService para o lado servidor;
desenvolver os softwares cliente e servidor;
documentar o processo de desenvolvimento; e
testar e avaliar o sistema.
1.3 Metodologia
O trabalho teve início com a descrição dos conceitos necessários para o desenvolvimento do
projeto, com o objetivo de agregar os conhecimentos necessários sobre as técnicas e os conceitos
utilizados no projeto do sistema, fornecendo uma fundamentação para a leitura deste documento.
Foram obtidas informações em sites especializados e livros, incluindo também documentos oficiais
dos desenvolvedores das ferramentas.
Para identificar funcionalidades para a proposta desta ferramenta, foi pesquisado por redes
sociais que ofereciam acesso via dispositivos móveis utilizando-se de recursos de geolocalização, isto
proporcionou uma visão geral das funcionalidades existentes nessas redes sociais. Com isso foi
16
possível concluir quais funcionalidades estariam disponíveis neste projeto e que propiciariam a
utilização do sistema que seria desenvolvido.
A solução proposta necessitou a utilização de APIs, Frameworks e ferramentas para o
desenvolvimento do projeto, sendo algumas obrigatórias para o funcionamento do sistema, como por
exemplo com os mapas do Google, que somente se dá por meio de sua API Google Maps.
A utilização de Frameworks teve o objetivo de padronizar processos, facilitando assim o
desenvolvimento e manutenção do sistema. O uso de ferramentas foi avaliado como necessários para
que o processo de desenvolvimento evolua, e dentro delas estão as IDEs, compiladores, Servidores
Web, dentre muitas outras de igual importância.
Durante o projeto do sistema, foram elaborados diagramas, casos de usos, o modelo do banco
de dados, protótipos de telas e também definidos os requisitos funcionais e não funcionais do
aplicativo cliente e da aplicação servidor.
O desenvolvimento do sistema começou com a aplicação servidor, permitindo assim que
durante a criação do aplicativo cliente fosse possível testá-lo em conjunto com o Web Service.
Durante a etapa de desenvolvimento foram efetuados testes e as devidas correções conforme as
necessidades. Após a criação do Web Service e do aplicativo cliente, também foi necessária a
realização de testes para a verificação da integridade e desempenho dos sistemas. Após a conclusão
dos testes o relatório definitivo do sistema para apresentação à banca foi elaborado.
Com a conclusão dos sistemas, foram testados todos os recursos e conduzida a verificação da
usabilidade, corrigindo os erros e melhorando recursos que foram de difícil utilização.
O sistema foi entregue a alguns usuários para que os mesmos o avaliassem, respondendo um
questionário, que pode ser conferido no APÊNDICE A, com vinte perguntas separadas em três
tópicos:
Perguntas para levantar informações do utilizador que testou o sistema;
Perguntas relacionadas à interação entre o usuário e o sistema; e
Perguntas relacionadas aos resultados dos testes efetuados.
17
1.4 Estrutura do trabalho
O trabalho está estruturado em quatro capítulos, sendo o primeiro para a introdução do projeto,
dando uma visão mais ampla do mesmo e apresentando o seu conceito, que conterá a base do projeto
numa visão geral, descrevendo também o problema, o objetivo e como será alcançado este objetivo
para a resolução do problema.
O segundo capítulo apresenta a descrição das tecnologias e dos dados que serão utilizados no
projeto, incluindo os conceitos teóricos de cada tecnologia e sua utilização, assim como as APIs
utilizadas e como é feita a comunicação com elas, as tecnologias e as ferramentas já existentes mas
que não resolvem o problema proposto para este projeto.
Posteriormente está descrito o desenvolvimento do projeto, com informações do sistema,
quais as linguagens utilizadas, como foi desenvolvido o sistema, as telas do sistema já em
funcionamento, e todos os requisitos e casos de uso do sistema, e informações do banco de dados.
No último capítulo estão dispostas as conclusões do projeto, onde estão relatadas as
dificuldades encontradas e as mudanças ocorridas, e também o que este projeto agregou ao autor, e
como ele evoluiu graças à pesquisa e ao desenvolvimento deste sistema.
18
2 FUNDAMENTAÇÃO TEÓRICA
Para o encaminhamento deste projeto foram necessárias pesquisas a fim de se descobrir os
recursos e as limitações das diversas tecnologias que poderão ser aplicadas, e que serão explicadas
nesta fundamentação teórica.
2.1 Mídias Sociais
Existe uma diferença entre redes sociais e mídias sociais, toda rede social é também uma mídia
social, porém nem toda mídia social é uma rede social, como pode ser visto na Figura 4.
Figura 4. Rede Social vs. Mídia Social.
Fonte: Altermann (2010).
Muitas pessoas confundem redes sociais com mídias sociais, como dito por Telles (2010), que
descreve a diferença:
Várias pessoas confundem os termos Redes Sociais com Mídias Sociais, muitas vezes
usando-as de forma indistinta. Elas não significam a mesma coisa.
O primeiro é uma categoria do último. Os sites de relacionamento ou redes sociais são
ambientes que focam reunir pessoas, os chamados membros, que uma vez inscritos, podem
expor seu perfil com dados como fotos pessoas, textos, mensagens e vídeos, além de interagir
com outros membros, criando listas de amigos e comunidades.
Sendo assim: Facebook, Orkut, MySpace, entre outros = Redes Sociais ou como chamava-
se em 2005 sites de relacionamento.
Redes Sociais ou Mídias Sociais são conceitos antigos, já existindo antes mesmo da Internet,
e são usados para representar relações interpessoais e meios de comunicação. Uma Rede Social pode
ser qualquer grupo de pessoas que compartilhem interesses em comum, como uma sala de conversa
19
online, o Facebook, ou até mesmo e-mails, quando mais de duas pessoas estão se comunicando. Já a
Mídia Social é o meio, a estrutura, em que a Rede Social está baseada, por exemplo, um conjunto de
ferramentas ou meios que facilitem a comunicação entre os usuários que formam a Rede Social
(Altermann, 2010).
2.1.1 Redes Sociais
Segundo Debiase (2010), a primeira rede social foi a Classmates.com (uma rede social para
reencontrar amigos de colégio), após foram surgindo outras redes como Facebook, MySpace, Orkut,
dentre outras. No Brasil, segundo Google Trends (2011), a ascensão das redes sociais decorreu
somente em 2004 devido ao Orkut, alcançando seu auge no início do ano de 2008, onde a grande
massa de pessoas utilizavam desta rede social para o compartilhamento de fotos, vídeos, mensagens,
e diversas outras informações.
As pessoas estão cada vez mais se beneficiando das redes sociais no quesito interação,
conectividade, relacionamentos, amizades. O Facebook, que em 2010 teve um crescimento de 258%,
passando o Orkut em quantidade de usuários (Informática Agora, 2011), já é líder na quantidade de
usuários ativos, como será visto em seguida.
Existem atualmente várias redes sociais fortemente estabelecidas, como mostra a
Tabela 1, contendo informações retiradas do site eBizMBA (2013), que pesquisa a
popularidade dos sites a nível mundial, trazendo uma estimativa baseada em scripts e cookies
encontrados nos sites. As colunas “Posição (Entre redes)” e “Posição (Entre sites)” representam a
posição desta rede social comparada às outras redes sociais e a todos os outros sites registrados,
respectivamente. Como pode ser visualizado, o Facebook lidera a lista das redes sociais e é o segundo
site mais visitado no mundo.
Tabela 1. Ranking das redes sociais em maio de 2013
Rede Social Posição (Entre
redes)
Posição (Entre sites) Visitas (Únicas no mês)
Facebook 1º 2º 750.000.000
Twitter 2º 13º 250.000.000
LinkedIn 3º 27º 110,000,000
MySpace 5º 84º 70,500,000
Orkut 10º 350º 17,500,000
Fonte: eBizMBA (2013)
20
Facebook: maior rede social atualmente, é uma ferramenta social que ajuda as pessoas a se
comunicarem com mais facilidade com seus amigos, família e colegas de trabalho
(Facebook, 2013);
Twitter: microblog que serve como uma rede de informações em tempo real permitindo os
usuários terem as últimas informações sobre o que eles acham interessantes (Twitter,
2013);
Linkedin: rede social para profissionais lançada em 5 de maio de 2003, atualmente possui
mais de 135 milhões de profissionais cadastrados, com mais de 6 milhões somente no
Brasil. Permite aos usuários criarem conexões com outros profissionais da área ou
empresas (Linkedin, 2013);
MySpace: rede social lançada em 2003 que permite a bandas e cantores divulgarem seus
trabalhos, além de criar um espaço de interação entre fãs, artistas e pessoas comuns
(Techtudo, 2011);
Orkut: Rede social criada pelo Google com participação maior de brasileiros (50%),
seguido de indianos, com 20%, os criadores a descrevem da seguinte maneira “O Orkut é
uma comunidade on-line criada para tornar a sua vida social e a de seus amigos mais ativa
e estimulante. A rede social do Orkut pode ajudá-lo a manter contato com seus amigos
atuais por meio de fotos e mensagens, e a conhecer mais pessoas.”. (Google, 2013).
A maior diferença da rede social que está sendo projetada em relação a outras existentes com
geolocalização, são os recursos únicos que facilitam a interação dos usuários. A comparação entre os
recursos é mostrada na Tabela 2 e a seguir estão descrito os recursos avaliados:
Interesses entre usuários: é a possibilidade de encontrar outras pessoas com os mesmos
interesses do usuário, facilitando o relacionamento;
Mapa de Calor: permite a visualização dos locais mais visitados utilizando-se de mapas de
calor. Quanto mais quente, mais frequente é a visita naquele local;
Integração com Facebook: a possibilidade de autenticação no sistema utilizando os
recursos disponíveis pela API do Facebook, como encontrar seus amigos, postar
comentários, fotos e visualizar o perfil de outros usuários;
21
Visualizar amigos: ter uma lista de amigos na qual o utilizador possa visualizar os locais
onde estão seus amigos e seus comentários;
Comentar posição: postar comentários no seu perfil do Facebook, sobre o local em que ele
está atualmente;
Visualizar histórico: permite a visualização dos locais em que o usuário e/ou seus amigos
estiveram;
Prefeito do local: o usuário com maior número de visitas a determinado local recebe o
título de prefeito, podendo ser reconhecido por outros;
Locais mais visitados: mostra os locais em que o usuário e/ou seus amigos, mais estiveram
durante toda a utilização da rede social;
StayPrivate (Ficar privado): possibilita a utilização da rede social em modo escondido,
inibindo a sua localização geográfica. Enquanto o recurso estiver ativado, sua localização
não será salva em seu histórico;
Rotas: permite a criação de rotas entre os usuários ou, entre a posição atual de um usuário
e um local escolhido previamente, trazendo facilidades para a locomoção;
Recompensas: o usuário recebe algum prêmio ou item virtual por completar alguma tarefa
determinada pela rede social, como por exemplo, visitar 5 bares em uma mesma noite; e
Alarmes de interesses: avisa o usuário automaticamente quando outro usuário, que tenha
perfil similar ao seu, encontra-se no mesmo local ou próximo a ele, sem a necessidade de
dar completa atenção ao aplicativo.
22
Tabela 2. Comparação de Recursos de Redes com Geolocalização
Recursos LoreTrack Foursquare Loopt Gowalla Brightkite Whrrl
Interesses entre usuários X
Mapa de Calor X X1
Integração com Facebook X X X X X2 X
Visualizar amigos X X X X X
Prefeito do local X
Comentar posição X X X X X X
Visualizar histórico X X
Locais mais visitados X
StayPrivate X X X X3
Rotas X
Recompensas X X
Alarme de interesses X
2.1.2 Facebook
O Facebook, criado em 4 de fevereiro de 2004 por Mark Zuckerberg, é atualmente a maior
rede social do mundo, começou como um projeto para conectar os alunos da universidade de Harvard,
se espalhando por outras universidades dos Estados Unidos e Europa (Santana, 2011). Segundo Verde
(2011), em fevereiro de 2011, o Facebook possuía mais de 596 milhões de usuários, e destes usuários,
quase 50% acessavam seu perfil a partir de aparelhos móveis, contexto no qual este projeto será
aplicado. Em março de 2013, o Facebook possuía cerca de 1,11 bilhões de usuários ativos por mês,
um crescimento de 93,12% se comparado a 2011, e destes, 751 milhões (68%) acessavam a partir de
seus aparelhos móveis. (Facebook, 2013),
O Facebook disponibiliza uma coleção de ferramentas e bibliotecas chamadas de API,
permitindo e padronizando a utilização de seus serviços. Somente aplicativos com permissões
fornecidas pelo usuário podem acessar suas informações através da API.
2.2 Geolocalização
Geolocalização é a capacidade de determinar onde o usuário está geograficamente em algum
ponto na Terra, seja por algum aparelho com recursos como GPS ou pelo próprio IP do computador,
que pode fornecer uma ideia de onde o usuário possa estar. No entanto, o foco deste projeto é a
1 Somente com ferramentas de terceiros. 2 Somente comentar. 3 Possível esconder de desconhecidos, mas não de amigos.
23
utilização de equipamentos com GPS ou Triangularização para determinar a localização mais
precisamente. Segundo BETZ et. al (2006), o GPS oferece dois tipos de serviços, PPS (Precise
Positioning System – Sistema de Posicionamento Preciso) e SPS (Standard Positioning Service –
Sistema de Posicionamento Padrão), sendo o PPS para uso militar e o SPS para uso civil.
Para determinar a posição geográfica, o aparelho receptor precisa conhecer a posição de pelo
menos quatro satélites, porém, quanto mais satélites disponíveis, maior é a precisão da localização
(Brain & Harris, 2008). Utilizando um princípio matemático, chamado de trilateração, é possível
determinar a posição que o receptor se encontra, como pode ser visto na Figura 5.
Figura 5. Localização por satélites
Fonte: Barbian (2013)
Como visto anteriormente, foi dito que são precisos quatro satélites para a localização correta
de um receptor, porém, utilizando o método de trilateração apresentado na Figura 5, precisaríamos de
somente três satélites para determinar a posição. No entanto, para determinar a posição com somente
três satélites, cada receptor deveria possuir um relógio atômico embutido, pois uma diferença de 0,001
segundo entre os satélites e o receptor significaria um erro de 300km na posição do receptor, por isto
é necessário o sinal de um quarto satélite, procurando um fator de correção para subtrair das outras
medições (Ribeiro, 2008).
24
Existem outras tecnologias que aprimoram a utilização do GPS, como o A-GPS. Morimoto
(2009) descreve essa tecnologia da seguinte forma:
De uma forma geral, os smartphones utilizam antenas de GPS menores e menos sensíveis
e/ou chipsets GPS integrados, com menos recursos. Para reduzir a diferença de sensibilidade
e permitir que o fix dos satélites seja obtido rapidamente, mesmo com a recepção mais fraca,
eles utilizam um sistema híbrido, o A-GPS (Assisted GPS), onde o sinal dos satélites é
combinado com o uso de triangulação celular e de um servidor remoto. Ele fornece
informações sobre o posicionamento dos satélites (reduzindo drasticamente o tempo
necessário para obter o fix4) e outras informações, que facilitam o trabalho do receptor.
Naturalmente, todas as informações são transmitidas usando a rede celular, mas o volume
de dados transferido é pequeno, apenas alguns poucos kbytes por consulta.
2.3 Android
Android é o Sistema Operacional desenvolvido pelo Google para aparelhos móveis como
telefones celulares e tablets, com código aberto distribuído sobre a licença Apache 2.0 (Licenses,
2013).
Lançado em setembro de 2008 com a versão 1.0 (Morrill, 2008) para o aparelho T-Mobile G1
(HTC, 2008), sem suporte a algumas funções básicas, como teclado virtual, Bluetooth, Adobe Flash
e muitas outras.
Desde a primeira versão em setembro de 2008, houve diversos lançamentos de novas versões,
como mostra a Tabela 3, no qual pode ser visto o número da versão, a data de seu lançamento e o
codinome da versão em questão. A cada nova versão foram implementadas melhorias, correções,
funcionalidades e maior segurança, como observado no infográfico encontrado nas figuras do Anexo
A.
4 Fix é conseguir a conexão bem sucedida com o satélite.
25
Tabela 3. Histórico de Versões
Versão Data Codinomes
1.0 23 de setembro de 2008 -----
1.1 9 de fevereiro de 2009 -----
1.5 30 de abril de 2009 Cupcake
1.6 15 de setembro de 2009 Donut
2.0 26 de outubro de 2009 Eclair
2.1 12 de janeiro de 2010 Eclair
2.2 20 de maio de 2010 Froyo
2.3 6 de dezembro de 2010 Gingerbread
3.0 22 de fevereiro de 2011 Honeycomb
3.1 10 de maio de 2011 Honeycomb
3.2 15 de julho de 2011 Honeycomb
4.0 19 de outubro de 2011 Ice Cream Sandwich
4.1 9 de julho de 2012 Jelly Bean
4.2 13 de novembro de 2012 Jelly Bean
Fonte: Android Developers (2013)
Diversas funcionalidades estão presentes no Sistema Operacional Android, sendo que os
desenvolvedores estão lançando novas funcionalidades a cada versão do SO. Abaixo destacam-se
algumas funcionalidades.
Conectividade: Suporte às principais tecnologias de conexão, como CDMA (Code
Division Multiple Access – Acesso Múltiplo por Divisão de Código), GSM (Global
System for Mobile Communications – Sistema Global para Comunicações Móveis),
EDGE (Enhanced Data rates for GSM Evolution – Taxa de Dados Melhoradas para a
Evolução GSM), Bluetooth, Wi-Fi;
Multilíngue: O Android suporta vários idiomas, inclusive o português do Brasil desde a
versão 2.3 (Cooper, 2011);
Suporte a hardware adicional: O Sistema Operacional suporta hardwares como GPS,
touchscreens, acelerômetros, giroscópios, câmeras, sensores de pressão, proximidade,
temperatura e magnetômetros;
Multitouch: Suporte para vários toques simultâneos na tela, disponível desde a versão 2.0
(Memruk, 2010); e
Multitarefa: Possibilidade de execução de vários aplicativos simultaneamente, existente
desde a versão 1.0 (Bray, 2010).
26
2.3.1 Android API
A API do Android fornece as ferramentas necessárias para desenvolvimento de aplicações
para este SO, que são chamadas de Android SDK (Software Development Kit – Kit de
Desenvolvimento de Software) Tools, ferramentas de debug e emuladores (Introduction, 2011).
Emuladores são softwares que permitem a execução de instruções de um hardware em outros
que não possuem as instruções necessárias. O emulador do Android é diferenciado, ele não está
realmente imitando o Android, o que acontece na verdade é o próprio Sistema Operacional executado
virtualmente, o que contribui para a chance de um software executado corretamente dentro do
emulador funcionar exatamente igual no hardware original. (Android Developers, 2011).
Ferramentas de debug que são chamados de ADB (Android Debug Bridge - Ponte de Debug
Android) no Android possibilitam a verificação do estado do aplicativo sendo executado dentro do
dispositivo móvel utilizando-se de emuladores ou até mesmo de um dispositivo real conectado ao
computador. Isto oferece a possibilidade de visualizar ou modificar o estado das variáveis e outras
informações que os debbugers permitem visualizar, como quais instruções estão sendo executadas, e
se o software está sendo executado da maneira correta. (Android Debug Bridge, 2011).
2.4 Facebook API
Chamada de “Graph API”, a API do Facebook permite às aplicações de terceiros recuperar
informações sobre objetos da rede social, como usuários, fotos, eventos e páginas, e a conexão entre
estes objetos, por exemplo: amizades, conteúdos e comentários (Facebook Developers, 2013). Porém,
nem todas as informações são publicamente recuperáveis, sendo necessário anteriormente autenticar-
se no sistema para obter as informações mais privadas, como pode ser visto nas figuras a seguir, em
que foram requisitadas informações básicas do usuário “Thiago Prux” de id “1009084807”, onde o
Quadro 1 mostra o retorno sem autenticação, em que foram solicitadas informações do usuário sem
passar o AccessToken do Facebook como parâmetro, trazendo somente as informações públicas. E o
Quadro 2, que mostra o retorno com autenticação, onde o AccessToken é informado, e traz todas as
informações que o proprietário do Token tem permissões para visualização.
27
{
"id": "1009084807",
"name": "Thiago Prux",
"first_name": "Thiago",
"last_name": "Prux",
"link": "https://www.facebook.com/people/Thiago-Prux/1009084807",
"gender": "male",
"locale": "pt_BR"
}
Quadro 1. Retorno da API Facebook sem autenticação
{
"id": "1009084807",
"name": "Thiago Prux",
"first_name": "Thiago",
"last_name": "Prux",
"link": "https://www.facebook.com/profile.php?id=1009084807",
"birthday": "03/12/1987",
"hometown": {
"id": "106081109431806",
"name": "Blumenau, Santa Catarina, Brazil"
},
"work": [
{
"employer": {
"id": "144584165595708"
"name": "Cootravale"
},
"position": {
"id": "103157443074406",
"name": "Analista de Suporte"
}
}
],
"gender": "male",
"locale": "pt_BR",
"languages": [
{
"id": "108083115891989",
"name": "L\u00edngua portuguesa"
},
{
"id": "168679183164330",
"name": "Ingl\u00eas"
}
],
"verified": true,
}
Quadro 2. Retorno da API Facebook com autenticação
28
Como pôde ser visto, as solicitações de informações ao mesmo usuário mudaram
significativamente, isto ocorre pelo fato de o primeiro pedido visto no Quadro 1 ser uma simples
requisição (https://graph.facebook.com/1009084807) sem informar a variável “access_token”, que
identifica o usuário autenticado no sistema, enquanto no Quadro 2 é informada esta variável
(https://graph.facebook.com/1009084807?access_token=2227470867|2.AQA2ro09VJWtsy2m.36
00.1309464000.0-1009084807|DVdZxAp4IzSZYv-VN9r6EWFH1vE). Segundo o site oficial,
Facebook Permissions (2013), o access_token quando é gerado pelo Facebook, pode ter um período
curto de vida, que permanece ativo enquanto o usuário utiliza o sistema, ou permanente, autorizando
a aplicação executar ações em nome do usuário a qualquer momento, mesmo quando este não estiver
utilizando o sistema. No blog oficial do Facebook, Pansari (2011) relata como é o funcionamento do
access_token, mostrando em quais condições o mesmo expira, invalidando a conexão do aplicativo e
sendo necessário novo login. Simplificando, o access_token, ou AccessToken, é uma chave de
segurança, em que estão contidas informações de quais dados o detentor desta chave pode obter sobre
os outros usuários.
Para ter uma ideia do que o aplicativo pode fazer, na página oficial dos desenvolvedores da
API do Facebook, Facebook Permissions (2011), encontram-se as permissões necessárias e quais suas
funcionalidades perante o perfil do usuário. Entre algumas das permissões que serão necessárias pelo
sistema, pode-se citar:
user_likes: possibilita a recuperação das informações de todas as páginas que o usuário
curtiu, incluindo livros, filmes, fã pages, dentre outras;
user_birthday: permite a obtenção dos dados da data de nascimento do usuário;
user_photos: permite a visualização das fotos que foram disponibilizadas no perfil do
usuário; e
user_interests: permite obter informações sobre os interesses do usuário, que serão as pelo
sistema para encontrar pessoas com perfil semelhante.
Não é necessário solicitar permissões para recuperar informações básicas como nome, id, lista
de amigos, sexo, foto de perfil ou alguma outra informação definida como pública pelo usuário.
29
2.5 Google Maps API
A API do Google Maps permite adicionar mapas baseados no Google Maps a outros sistemas.
A API gerencia automaticamente o acesso aos servidores de mapas do Google, download de dados,
visualização do mapa e resposta a gestos. Também pode ser utilizada para adicionar marcadores,
polígonos, e camadas extras para a visualização de dados. (GOOGLE MAPS, 2013).
2.5.1 Geocoding
Geocoding é o processo de converter endereços em coordenadas geográficas. Também é
possível converter coordenadas geográficas em endereços, este processo se chama “reverse
geocoding” (Google Geocoding, 2013).
2.5.1.1 Utilização
A utilização da API do Google Maps para Geocoding deve ser feita utilizando uma requisição
GET do protocolo HTML, onde o “output” deve ser trocado por xml ou json (JavaScript Object
Notation – Notação de Objeto JavaScript). O endereço para a requisição está no Quadro 3.
http://maps.googleapis.com/maps/api/geocode/output?parameters
Quadro 3. Endereço para requisição geocoding
Para a utilização do endereço de requisição de geocoding, é necessário fornecer o endereço
necessário para recuperar as coordenadas, ou as coordenadas para a recuperação do endereço.
Também é obrigatório informar se o endereço veio através de um aparelho com sensor de localização
ou manualmente. Um exemplo de uma consulta pode ser visto no Quadro 4, onde a localização
solicitada foi: lat,lng(-26.915220, -48.661884), sendo o campus da Univali.
30
"results" : [
{
"address_components" : [
{
"long_name" : "1071-1411",
"short_name" : "1071-1411",
"types" : [ "street_number" ]
},
{
"long_name" : "Avenida Vereador Abrahão João Francisco",
"short_name" : "Av. Ver. Abrahão João Francisco",
"types" : [ "route" ]
},
{
"long_name" : "Itajaí",
"short_name" : "Itajaí",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Catarina",
"short_name" : "SC",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Brazil",
"short_name" : "BR",
"types" : [ "country", "political" ]
},
{
"long_name" : "88302-102",
"short_name" : "88302-102",
"types" : [ "postal_code" ]
}
]
Quadro 4. Exemplo de Geocoding
2.5.1.2 Limites Geocoding
Os limites da API do Google Maps para Geocoding é de 2.500 requisições diárias, se este
limite é excedido, a API de Geocoding pode parar de funcionar durante o dia corrente, exceto a versão
paga, que aumenta este limite para 100.000. (Google Maps API, 2013)
2.6 Places API
O Google Places API permite a identificação de locais, estabelecimentos e outros pontos de
interesses próximos a uma determinada coordenada geográfica. Permite também obter comentários
de outros usuários para determinados pontos de interesses, e também complementar o banco de dados
enviando novos locais para o Places.
31
Todas as requisições ao Places precisam de uma chave de autenticação chamada de API KEY,
que controla qual o limite de utilização, define se é uma requisição grátis ou paga, e permite controle
por parte dos desenvolvedores e da própria Google. (API do Google Places, 2013)
2.6.1 Utilização
A utilização da API Places é muito similar com a do Geocoding, porém, algumas diferenças
podem ser notadas, as principais delas é a obrigatoriedade da API KEY na requisição ao WebService
do Google, que é a chave para a autenticação do uso da API, e o parâmetro radius que define a área
em que devem ser pesquisados os estabelecimentos ou outros pontos de interesses, como pode ser
visto a seguir no Quadro 5.
key: a chave de API de seu aplicativo. Esta chave identifica seu aplicativo para fins de
gerenciamento de cota e para que os locais adicionados a partir de seu aplicativo sejam
disponibilizados imediatamente para seu aplicativo. Visite o Console de API para criar um
projeto de API e obter sua chave.
location: a latitude/longitude em torno das quais informações do local devem ser
recuperadas. Isso deve ser especificado como latitude,longitude.
radius: define a distância (em metros) dentro da qual os resultados de local devem ser
retornados. O raio máximo permitido é 50.000 metros. O radius não deve ser incluído se
o valor rankby=distance (descrito a seguir em Parâmetros opcionais) for especificado.
sensor: indica se a solicitação de local veio ou não de um dispositivo que utiliza um sensor
de localização (por exemplo, um GPS) para determinar a localização enviada nesta
solicitação. Este valor deve ser true ou false.
Quadro 5. Parâmetros obrigatórios para o Places API
Fonte: API do Google Places (2013)
A requisição deve ser feita no formato mostrado no Quadro 6, onde o campo “output” deve
ser trocado por json ou xml, para obter a resposta em seu respectivo formato.
https://maps.googleapis.com/maps/api/place/search/output?parameters
Quadro 6. Requisição Places API
32
Um exemplo de resposta da utilização do Places API segue abaixo no Quadro 7, onde pode
ser verificado uma resposta para uma requisição a um local.
{
"html_attributions" : [ "Listings by \u003ca
href=\"http://www.telelistas.net/\"\u003eTelelistas\u003c/a\u003e" ],
"results" : [
{
"geometry" : {
"location" : {
"lat" : -26.9153040,
"lng" : -48.6631490
}
},
"icon" :
"http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
"id" : "42fb1df510cc465839910432de333f56622121d5",
"name" : "Teatro Adelaide Konder",
"opening_hours" : {
"open_now" : true
},
"reference" :
"CoQBdAAAACkGnHnzTru5ncQUrRWJ63Y7WOSpjQvE0CYABRJOfzkekgDYCwMctmZ3Vb1u9J3WzpJ0F
UVK2FYMLSX8nZgrQRec01-SntyujfULgVsDf-Z0ye9jmZsJSPP6q8A-vLXwOGK3mh6-
nZ9BRs59hsKP-11exzO79UOljUvHkaEkQVv6EhA_sfH-
GuQj6EL0BOGTxFWcGhSeDpv1zwHwaD9TU1ktFJ7OnlNKpg",
"types" : [ "establishment" ],
"vicinity" : "Rua Uruguai - Itajaí"
},
Quadro 7. Exemplo Places API
2.6.2 Limites Places
Os limites de cotas para o Places API são os seguintes (API do Google Places, 2013):
Usuários que possuem uma chave de API têm permissão para fazer 1.000 solicitações por
um período de 24 horas;
Usuários que confirmaram sua identidade por meio do console de APIs têm permissão
para 100 mil solicitações por um período de 24 horas.
2.6.3 Licenciamento
A utilização da API do Google Maps requer a aceitação dos termos de serviço (Google Maps,
2013). A seção 9.1 descreve as regras de como pode ser utilizada a API:
33
9.1 Free, Public Accessibility to Your Maps API Implementation.
9.1.1 General Rules.
(a) Free Access (No Fees). Your Maps API Implementation must be generally accessible to users
without charge and must not require a fee-based subscription or other fee-based restricted
access. This rule applies to Your Content and any other content in your Maps API
Implementation, whether Your Content or the other content is in existence now or is added later.
(b) Public Access (No Firewall). Your Maps API implementation must not operate (i) only behind
a firewall; or (ii) only on an internal network (except during the development and testing phase);
or (iii) in a closed community (for example, through invitation-only access).
9.1.2 Exceptions.
(a) Enterprise Agreement with Google. The rules in Section 9.1.1 (Free Access, Public Access) do
not apply if you have entered into a separate written agreement with Google (such as a Google
Enterprise agreement) or obtained Google's written permission.
(b) Mobile Applications. The rule in Section 9.1.1(a) (Free Access) does not apply if your Maps
API Implementation is used in a mobile application that is sold for a fee through an online store
and is downloadable to a mobile device that can access the online store.
9.1.3 Examples.
(a) You can require users to log in to your Maps API Implementation if you do not require users
to pay a fee.
(b) You can charge a fee for your Maps API Implementation if it is an Android application
downloadable to mobile devices from the Android Market.
(c) If you are a consultant who creates or hosts Maps API Implementations for third party
customers, you may charge such customers a fee for your consulting or hosting services (but not
for the Maps API Implementations themselves, except as permitted under Section 9.1.2
(Exceptions)).
Quadro 8. Licenciamento
Estas regras afirmam que somente poderá ser utilizada a API do Google Maps em softwares
que não necessitem o pagamento de quaisquer taxa, e devem estar publicamente disponível para
qualquer pessoa que deseja utilizar o mesmo. A Sessão 9.1.3(a) afirma que é possível exigir que o
usuário se autentique antes de poder utilizar o mapa, desde que, não seja cobrada nenhuma taxa.
2.7 Frameworks
Segundo Rouse (2005), framework é uma estrutura real ou conceitual com o propósito de
ajudar a construção de algo que expande a estrutura inicial em um resultado final útil. Rouse (2005)
34
também elabora um conceito mais técnico sobre o assunto, em que ele afirma que nos sistema
computacionais, um framework é frequentemente uma estrutura em camadas indicando que tipos de
programas podem ou devem ser construídos, e como eles se entrelaçariam. Alguns frameworks de
sistemas computacionais também incluem outros programas, interfaces de programações específicas,
ou oferecem ferramentas de programação para utilizarem o framework. Um framework pode ser para
um conjunto de funções no interior de um sistema, e como eles se relacionam; as camadas de um
sistema operacional; as camadas de uma subsistema de uma aplicação; como a comunicação deve ser
padronizada em um certo nível de uma rede; e assim por diante. Um framework é geralmente mais
compreensivo que um protocolo e mais prescritivo que uma estrutura.
2.7.1 JAX-RS
JAX-RS é um framework baseado em REST, com o objetivo de vincular padrões de URI
(Uniform Resource Identifier - Identificador Uniforme de Recursos) específicos e operações HTTP
(Hypertext Transfer Protocol - Protocolo de Transferência de Hipertexto) com métodos da classe Java
utilizando de anotações de injeção de parâmetros no código fonte do WebService. Ele possui leitores
e escritores do corpo da mensagem que permitem entrelaçar e desentrelaçar objetos Java. Possui
também mapeadores de exceções, que são erros ocorridos em tempo de execução, podendo enviar
exceções como resposta para as requisições HTTP. (Burke, 2010)
2.7.2 Gson
Gson é uma biblioteca Java, lançada em 22 de maio de 2008 (gson, 2011) utilizada para
converter objetos Java para uma reprodução em JSON (Serialização), e também transformar uma
representação em JSON para um objeto Java equivalente (Deserialização). Foi inicialmente
desenvolvido para ser utilizado internamente pelos projetos Google, porém, é agora utilizado por
diversos projetos públicos e empresas. (Gson User Guide, 2011). Um exemplo do uso da serialização
pode ser visto no Quadro 9.
35
public class Produto {
private int codigo;
private String nome;
private BigDecimal preco;
private Set<Category> categorias;
//Métodos removidos para abreviar
}
public enum Categoria {
FRUTA("FRT", "Fruta"), VEGETAIS("VEG", "Vegetais");
private final String codigo;
private final String nome;
private Categoria(final String codigo, final String nome)
{
this.codigo = codigo;
this.nome = nome;
}
//Métodos removidos para abreviar
}
public class Main {
Produto produto = new Produto ();
produto.setCodigo(10);
produto.setNome("Tomate");
produto.addCategoria(Categoria.FRUTA);
produto.addCategoria(Categoria.VEGETAIS);
produto.setPreco(new BigDecimal("10.23"));
String json = gson.toJson(produto);
}
==> json {
"codigo":10,
"nome":"Tomate",
"preco":10.23,
"categorias":["VEGETAIS","FRUTA"]
}
Quadro 9. Exemplo Gson
2.8 Mapa de Calor
Conforme o site HeatMapAPI (2012), um mapa de calor é uma representação gráfica de dados
bidimensionais (X, Y e Valor) em uma superfície bidimensional utilizando cores. Para representar
um mapa de calor em um mapa, é utilizada uma nova camada gerada a partir de dados que são as
localizações geográficas geradas pelo histórico do usuário.
Uma das formas de utilizar o mapa de calor é para a visualização de locais mais visitados,
destacando os locais mais visitados com cores fortes, permitindo facilmente distinguir os locais mais
36
visitados dos menos visitados. A API do Google para mapas, não apresenta esta funcionalidade
nativamente, porém, com a utilização de bibliotecas isto é possível, e por serem bibliotecas abertas é
possível sua modificação, possibilitando a customização para as necessidades do sistema.
Algumas das bibliotecas que fazem a função de criar um mapa de calor utilizando o Google
Maps são:
gheat (GHEAT, 2011);
GMAP (GMAP, 2011);
HeatMapAPI (HeatMapAPI, 2011); e
GM Heatmap (GMHEATMAP, 2011).
Um exemplo de mapa de calor utilizando a API do Google Maps pode ser visto na Figura 6,
que demonstra os locais com maiores acidentes de carros em Helsinque, capital da Finlândia, sendo
que as áreas quentes, ou vermelhas, são as localidades com maior índice, e as áreas com menos
acidentes, mais frias, estão representadas pela cor azul. Este formato de cor pode variar de acordo
com a escolha do desenvolvedor, podendo ser de quaisquer cores. Como pode ser observado, há mais
acidentes no centro da cidade, e locais com cruzamentos, e ocasionalmente os locais adjacentes. Com
estes dados, podem ser utilizados métodos para a diminuição de acidentes nestes locais.
Figura 6. Mapa de Calor
Fonte: Cloud’n’Sci.fi (2013)
37
3 DESENVOLVIMENTO
O desenvolvimento constituiu-se de duas partes:
Aplicação cliente rodando no dispositivo móvel; e
Aplicação servidora com acesso ao banco de dados para receber e processar requisições
(acessadas como WebService), e para armazenar as informações dos usuários.
Como pode ser observado na Figura 7, os dados enviados pela aplicação cliente são entregues
à aplicação servidora através de um processo de vários passos. A comunicação é enviada até as
antenas de telefonia através de uma rede sem fio, que em seguida são enviadas para a internet,
chegando à aplicação servidora, e então faz as requisições ao banco de dados. Também é pela internet
que são enviadas as solicitações para a obtenção de dados dos servidores do Facebook e Google.
Figura 7. Diagrama do Projeto
O sistema se utiliza das credenciais do Facebook, devido ao recurso de amizades internas,
dando a possibilidade de sair do sistema, desvinculando suas credenciais. A utilização da linguagem
38
de programação Java para o desenvolvimento do projeto se deve ao fato do desenvolvedor das
aplicações ter melhor conhecimento nesta linguagem.
3.1 Ferramentas Necessárias
As ferramentas necessárias para o desenvolvimento do projeto são:
Google Maps API: API com uma coleção de serviços que podem ser requisitados para
obtenção de informações para mapas, como exemplos, nomes de locais, rotas e imagens
de mapas;
Google Places API: API para a recuperação de informações de locais e pontos de
interesses, como bares, escolas, igrejas, empresas, dentre diversas outras. Permite a busca
por nomes dos locais especificando uma posição geográfica no globo;
Sistema Operacional Android: servirá como base permitindo executar a aplicação cliente,
ele contém todas as bibliotecas necessárias para o funcionamento do aplicativo, inclusive
as ferramentas para o desenvolvimento utilizando da API do Android;
API do Facebook: obrigatória para o desenvolvimento de quaisquer aplicações para a rede
social Facebook, disponibilizando as ferramentas e bibliotecas necessárias para o
desenvolvimento, define também o que as aplicações podem fazer, criando regras e
limites;
Mapa de calor: necessário para uma experiência mais rica na visualização do histórico do
utilizador, possibilitando a visualização dos locais mais visitados pelo próprio usuário ou
de seus amigos que permitiram este recurso;
MySQL Workbench: ferramenta para criação de modelos de banco de dados para
MySQL;
Eclipse IDE: IDE de programação que servirá para desenvolver a aplicação cliente e o
web service; e
Balsamiq Mockups: ferramenta para prototipação de telas, utilizado para demonstrar
como ficará o layout do sistema.
39
3.2 Aplicação Cliente
A aplicação cliente é a aplicação executada pelo celular que está rodando o Sistema
Operacional Android, ele é o responsável por toda comunicação com o WebService e também é
responsável por mostrar ao usuário a interface do sistema.
A aplicação cliente servirá para: (i) obter as informações das posições dos usuários e enviá-
las ao WebService; (ii) permitir a visualização e alteração de suas configurações; (iii) localizar seus
amigos e pessoas desconhecidas com perfis semelhantes; e (iv) mostrar detalhes de seus amigos e
pessoas próximas à sua localização.
Por demandar uma grande quantidade de informações, tanto através da Internet como dos
sistemas de geolocalização, a aplicação cliente racionaliza o consumo de recursos dos aparelhos
móveis utilizando-se de um intervalo mínimo definido na regra de negócio 1, determinando se a
posição do usuário foi modificada fora da faixa de erro do GPS. Também foi feita a racionalização
do uso da Internet através de trocas de dados em formato JSON, que é um formato compactado para
transferência de dados.
A seguir são apresentados todos os requisitos funcionais e não funcionais da aplicação cliente,
seus casos de uso, protótipos de tela e diagramas de atividade, que demonstram como foi o sistema e
o que é possível fazer.
3.2.1 Requisitos não Funcionais
Estes requisitos são as características que precisam ser satisfeitas pela aplicação cliente para
o correto desenvolvimento do projeto.
RNF01. O usuário do sistema deve também ser usuário do Facebook;
RNF02. O sistema será desenvolvido na linguagem Java;
RNF03. O sistema deverá utilizar banco de dados SQLite;
RNF04. Toda distância será mostrada em metros;
RNF05 Toda informação deve ser trocada no formato compactado JSON.
40
3.2.2 Requisitos Funcionais
A aplicação cliente contém diversos requisitos funcionais, que definem os requisitos que o
sistema deverá respeitar.
RF01 Solicitar ao usuário se autenticar utilizando suas credenciais do Facebook;
RF02 Permitir ao usuário localizar seus amigos do Facebook que utilizam o mesmo
aplicativo;
RF03 Permitir ao usuário visualizar o perfil de outras pessoas com o sistema, utilizando
informações do Facebook e do BD do sistema;
RF04 Permitir ao usuário postar comentários no Facebook do local em que ele está
atualmente;
RF05 Trazer informações sobre locais próximos automaticamente, utilizando-se de dados
cadastrados no Google Maps;
RF06 Permitir ao usuário verificar os locais pelos quais ele passou em um determinado
período;
RF07 Permitir ao usuário procurar pessoas com interesses parecidos com os seus, em um
raio determinado pelo usuário;
RF08 Permitir ao usuário visualizar os locais mais visitados por ele e por seus amigos;
RF09 Permitir ao usuário divulgar sua localização atual para todos;
RF10 Permitir ao usuário divulgar seu histórico para todos;
RF11 Permitir ao usuário determinar quem poderá ver sua posição atual e seu histórico;
RF12 Permitir ao usuário traçar rotas de seu local atual até outra pessoa de seu interesse;
RF13 O sistema deve avisar ao usuário sobre pessoas com interesses parecidos com o seu
e que estejam próximas sempre que sua posição for atualizada;
RF14 Permitir ao usuário alterar seu perfil do Facebook atual por outro;
41
RF15 Apresentar ao usuário um mapa de calor de seu histórico de posições.
3.2.3 Regras de Negócio
Regra 1: A mudança de posição do usuário só deve ser reportada à aplicação servidora
caso haja uma diferença de 15 metros e um intervalo mínimo de 20 segundos;
Regra 2: O usuário só poderá utilizar o sistema se for previamente autenticado pela rede
social Facebook;
Regra 3: Nenhuma senha deve ser armazenada na aplicação cliente.
3.2.4 Casos de Uso
Os casos de uso definem o que o usuário poderá fazer perante o sistema. A Figura 8 representa
o usuário do sistema e cada uma das ações possíveis de serem executadas. O detalhamento dos casos
de uso pode ser visto a seguir, contendo o nome de cada caso de uso e sua funcionalidade:
Caso de uso “Efetuar login”: o usuário entra com suas credenciais, e a aplicação
autenticará através do WebService do Facebook;
Caso de uso “Ver seu histórico de locais e de amigos”: o usuário poderá visualizar os
locais mais visitados por ele ou por um de seus amigos, e o mapa de calor que representa
estas informações;
Caso de uso “Visualizar perfil de outras pessoas”: o usuário pode visualizar o perfil do
Facebook de pessoas próximas, com interesses em comum, ou de seus amigos;
Caso de uso “Procurar pessoas com afinidades próximas”: o usuário pode solicitar à
aplicação servidora os usuários com interesses em comum com os seus e que estejam em
sua proximidade;
Caso de uso “Visualizar local de seus amigos”: o usuário pode visualizar a posição de
seus amigos se estes assim o permitirem;
42
Caso de uso “Postar comentários de seu local”: o usuário pode enviar mensagens pelo
dispositivo, enviando uma frase e sua posição atual diretamente para seu perfil do
Facebook, no formato de comentários;
Caso de uso “Traçar rotas até outra pessoa”: o usuário pode traçar rotas com o caminho
mais curto de sua posição atual até a posição de outra pessoa;
Caso de uso “Trocar o perfil do Facebook utilizado no sistema”: o usuário tem a
possibilidade de trocar seu perfil do Facebook quando for necessário; e
Caso de uso “Alterar opção de privacidade e usabilidade”: permite ao usuário a troca de
suas opções de privacidade ou usabilidade como, por exemplo, se deseja ser visto por
alguma pessoa específica ou se deseja ser avisado por avisos sonoros, caso algum novo
evento aconteça.
Figura 8. Casos de Uso da Aplicação
43
3.2.5 Telas da Aplicação Cliente
Na tela de Login (Figura 9) o usuário deve vincular sua conta do Facebook para poder utilizar
o sistema. Vinculando sua conta, o sistema reconciliará suas informações e usará para entrar no
sistema com todos seus dados relevantes sincronizados. Após a autorização do usuário, o sistema
entrará automaticamente, sem a necessidade de se autenticar novamente até que o usuário faça Logoff
ou desinstale o sistema.
Figura 9. Tela de Login
44
A tela do Menu (Figura 10) é a tela principal do sistema, nela são concentrados os botões das
principais funções do sistema, como por exemplo, para abrir o mapa, editar suas configurações de
perfil, visualizar seus amigos, rever seu histórico, alterar as configurações do sistema e até entrar em
modo invisível, que esconde sua posição de outros usuários e de amigos.
A tela do Mapa (Figura 10) permite ao usuário visualizar sua posição atual, a de seus amigos
e comentar sobre o local que ele se encontra, enviando o comentário diretamente ao seu perfil do
Facebook. Permite também visualizar a rota mais curta até outro usuário.
Figura 10. Menu Principal e Tela de Mapa
45
As telas de Perfil e Preferências (Figura 11) possuem duas abas, a primeira permitindo
visualizar seu perfil do Facebook que está sendo utilizado pelo sistema. A segunda é a de preferências,
em que o usuário pode visualizar seus interesses cadastrados no Facebook, como músicas, livros,
televisão, entre outros.
Figura 11. Tela Perfil/Preferências
46
A tela de amigos (Figura 12) permite ao usuário verificar a posição atual de seus amigos,
dando a possibilidade de filtrar por nomes, e adicionar novos conhecidos à sua lista atual. Permite
também ao usuário visualizar o perfil no Facebook das pessoas que estão em sua lista de amigos,
podendo deixar recados ou chamá-los para o seu local atual.
Figura 12. Tela de Amigos
47
A tela de histórico (Figura 13) possibilita ao usuário visualizar seu histórico e de seus amigos durante
um determinado dia, trazendo informações dos locais mais visitados. Permite também a visualização
do Mapa de Calor.
Figura 13. Tela de Histórico
48
As abas Geral e Facebook do menu de configurações da Figura 14, servem para modificar
algumas opções que dependem do gosto do usuário, onde ele pode alterar a distância máxima dentro
da qual o sistema informará se há alguém com os mesmos interesses que o seu, e a aba Facebook a
possibilidade de alterar sua conta do Facebook.
Figura 14. Configurações Geral/Facebook
49
A tela de configurações de privacidade (Figura 15) permite a alteração de opções que afetam
a privacidade e como os outros usuários veem o usuário atual, permitindo mudar opções de quem
pode ver sua posição e seu histórico. Permite também o bloqueio de outras pessoas para que essas
não possam mais se comunicar nem visualizar informações sobre o usuário, permitindo também ativar
o modo invisível e ativar ou desativar a gravação de históricos.
Figura 15. Configurações de Privacidade
50
3.3 Aplicação Servidor
Para todo desenvolvimento da aplicação servidor foi utilizada a linguagem Java com o
framework JAX-RS, que permite a utilização do padrão de comunicação REST para o WebService,
o que, se usado corretamente, torna o desenvolvimento e a manutenção do sistema mais rápida e
menos problemática.
A aplicação servidor é responsável por armazenar todas as informações pertinentes ao usuário
e que não existam no Facebook. Também armazenará as informações da posição do usuário, assim
como o momento desta posição, para utilização pelo sistema de histórico. Dados como conexões entre
os usuários internos do sistema, preferências, dados utilizados internamente pelo sistema e o
AccessToken recuperado do Facebook também serão armazenados. Ela também é responsável por
todo o processamento, retornando somente as informações solicitadas pela aplicação cliente. Isto
diminui a carga do dispositivo, já que o mesmo possui uma capacidade de processamento muito
inferior à do servidor.
A aplicação servidor será capaz de: (i) receber solicitações dos clientes via requisição através
do protocolo HTTP; (ii) buscar informações do banco de dados ou através da integração com o
Facebook, que conterá a maioria das informações; (iii) processar as informações recebidas; e (iv)
retornar o resultado da solicitação.
A integração de um servidor centralizado à aplicação cliente com geolocalização deverá: (i)
possibilitar a opção de visualização do histórico de localização de um usuário; (ii) consultar os locais
preferidos dos amigos; e (iii) fazer comentários sobre os locais em que o usuário está.
3.3.1 Padrão de Comunicação
O sistema faz uso do padrão de comunicação REST para toda comunicação com a aplicação
servidora, utilizando o framework JAX-RS. O REST foi desenvolvido baseado no HTTP, em que o
client envia uma solicitação do método a ser invocado, o cabeçalho e opcionalmente um corpo da
mensagem que pode ser de qualquer tipo, incluindo HTML, texto simples, XML, JSON ou mesmo
um arquivo binário. (Burke, 2010)
51
3.3.2 Requisitos não Funcionais
Estes requisitos são todas as características que precisam ser satisfeitas pela aplicação servidor
para o correto desenvolvimento do projeto.
RNF01 A aplicação servidora deverá ser programada em Java utilizando framework JAX-
RS;
RNF02 O banco de dados deverá ser MySQL;
RNF03 O Web Service deverá utilizar o protocolo de comunicação REST.
3.3.3 Requisitos Funcionais
A aplicação servidor conterá diversos requisitos funcionais, que definem os requisitos que o
sistema deverá respeitar.
RF01 Receber solicitações das aplicações;
RF02 Processar as informações dos usuários conforme forem recebidas;
RF03 Gravar na tabela de histórico a posição recebida do usuário;
RF04 Comunicar-se com o WebService do Facebook para recuperação de dados
pertinentes ao usuário;
RF05 Armazenar informações de filtros sobre quais amigos podem ver sua posição atual
ou o histórico do usuário;
RF06 Permitir a um usuário bloquear outro;
RF07 Obter informações sobre interesses dos usuários a partir do Facebook, salvando-as
no Banco de Dados.
3.3.4 Regras de Negócio
Regra 1: Toda informação pertinente a algum usuário será excluída após a remoção do
mesmo;
52
Regra 2: Todas as solicitações devem ser recebidas utilizando os padrões REST;
Regra 3: As comunicações com a aplicação servidora devem ser seguras, utilizando-se do
protocolo HTTPS;
Regra 4: Nenhuma senha deve ser armazenada no servidor;
Regra 5: Qualquer usuário que tenha sido bloqueado por outro não conseguirá visualizar
quem lhe bloqueou.
3.3.5 Casos de Uso
Os casos de uso da Figura 16 definem o que a aplicação cliente poderá fazer perante o
WebService
Figura 16. Casos de uso do WebService
Caso de uso “Verificar o status do servidor”: Aplicação servidor deverá responder para a
aplicação cliente seu estado atual, informando se ele está ativo.
Caso de uso “Autenticar no sistema”: Após o usuário enviar suas credencias, a API do
Facebook tentará autenticar os dados inseridos.
53
Caso de uso “Gravar informações através do servidor no banco de dados”: O aplicativo
terá a obrigação de disponibilizar para o WebService as informações que deverão ser
armazenadas no banco de dados, sendo que o usuário somente poderá alterar suas
informações.
Caso de uso “Solicitar informações do servidor”: O WebService será responsável por
solicitar as informações necessárias para seu bom funcionamento, como informações de
locais de amigos e suas preferências.
3.3.6 Banco de Dados
A aplicação servidora utiliza-se do SGDB (Sistema de Gerenciamento de Banco de Dados)
MySQL. O modelo do banco de dados é relativamente simples, e grande parte da informação será
retirada da integração do sistema com o Facebook. É necessário armazenar somente informações
como histórico, interesses dos utilizadores a partir do Facebook para melhor desempenho da aplicação
servidora, as amizades internas do sistema, e dados de preferências do usuário, como suas
configurações da conta do sistema. Na Figura 17 é observado o modelo do banco de dados.
Figura 17. Esquema do banco de dados
54
As tabelas do sistema permitem armazenar as informações relativas ao sistema, como as
informações dos utilizadores do sistema, suas preferências, amizades, interesses, e dados de histórico.
O dicionário de dados pode ser visto no APÊNDICE B.
3.4 Testes
Os testes foram realizados com um grupo de 5 pessoas aleatórias de habilidades e
conhecimentos distintos, onde foram instalado o aplicativo em seus respectivos aparelhos móveis, e
então iniciado os testes. Os utilizadores tiveram que responder um questionário após a utilização da
aplicação cliente.
3.4.1 Análise dos Testes
O tempo médio dos testes foi de 15 minutos por usuário, e a idade média de 25 anos. A partir
das respostas do questionário foi possível verificar que a maioria dos usuários que testaram o sistema
possuíam noção intermediária sobre o SO Android, e também o mesmo nível de conhecimento sobre
redes sociais. Os quesitos mais verificados foram a usabilidade e a funcionalidade do sistema, porém,
o item mais criticado foi a confiabilidade, sendo que sistema ocasionalmente apresentava problemas,
onde era necessário reiniciá-lo.
Conforme pode ser observado na Figura 18, o fator que mais impactou o desempenho dos
testes, foi a falta de documentação do sistema, seguido pela falta de tempo dos utilizadores.
Figura 18. Resultado sobre quais recursos impactado no desempenho dos testes.
55
A navegação pelo sistema foi avaliada como fácil e prática pelos testadores, como pode ser
visto na Figura 19, sendo somente um utilizador que informou que “certos recursos estavam um pouco
escondidos”, tendo que entrar em outras telas para chegar à tela desejada.
Figura 19. Resultados sobre a navegação do sistema.
A utilização do sistema gerou dúvidas sobre algumas das funcionalidades, sendo estas: o botão
para aceitar novos amigos, na qual o utilizador não identificou que podia pressioná-lo; e a barra para
alterar a distância - localizada nas configurações gerais - onde é configurado a distância em que
podem ser encontradas pessoas com afinidades semelhantes. O resultado do questionário sobre as
dúvidas de utilização do sistema pode ser conferido na Figura 20.
Figura 20. Resultados das dúvidas de utilização do sistema.
Foram respondidas vinte perguntas no total, onde o restante pode ser encontrado no
APÊNDICE C.
56
4 CONCLUSÕES
Ao longo deste projeto, evidenciou-se que a utilização de uma rede social com geolocalização,
junto com a integração com o Facebook - que contém diversas informações de várias pessoas -, pode
beneficiar os utilizadores, de forma que é possível obter informações recuperadas através do meio
virtual, e trazer para o meio real instantaneamente, trazendo a possibilidade de conseguir informações
destas antes mesmo de conhece-las pessoalmente.
Os testes realizados demonstraram que a aplicação não é madura o suficiente para ser
disponibilizada ao público em geral, devido à falta de documentação e reinicializações inesperadas
do aplicativo, apresentando bugs que ainda precisam ser corrigidos. Porém, este projeto agregou
diversos conhecimentos teóricos e práticos para a formação acadêmica, dando uma excelente base
para o desenvolvimento de aplicativos móveis, que está em constante crescimento no mercado.
O sistema foi desenvolvido pensando também na boa usabilidade, oferecendo aos utilizadores
maior facilidade de uso, que foi observado nos resultados dos testes, onde os usuários relataram fácil
utilização do sistema. Pode-se citar, por exemplo, o menu inicial que é a tela principal do sistema e
que agrega todas as outras funcionalidades em apenas uma tela, permitindo que o usuário navegue
entre os recursos oferecidos a ele sem muita dificuldade.
Mesmo contendo poucos testes realizados, notou-se a importância dos mesmos para avaliar a
qualidade do sistema, permitindo identificar se ocorreu algum problema, e quais foram estes. Foi
possível também a obtenção de dados para melhorar a qualidade do sistema, sabendo quais recursos
apresentavam maiores problemas.
O projeto necessitou do desenvolvimento de duas aplicações para atender todas as
necessidades requisitadas, sendo desenvolvido uma aplicação cliente, que é a aplicação executada no
dispositivo móvel, contendo a interface com o usuário, e a aplicação servidor, que atende as
requisições enviadas a partir do dispositivo móvel, e fazendo a integração e o processamento dos
dados fornecidos pelo usuário.
O trabalho levou em consideração a segurança dos dados, sendo que todos os dados são
criptografados antes de serem transmitidos através da internet, utilizando-se do protocolo HTTPS,
seja entre a comunicação entre a aplicação cliente e a aplicação servidora, quanto a comunicação com
outros webservices utilizados, como do Facebook e Google, trazendo uma maior privacidade ao
usuário.
57
Este projeto poderá ser utilizado para o desenvolvimento de uma rede social baseada em
geolocalização, utilizando de conhecimentos adquiridos na criação deste protótipo que contemple
diversas outras funcionalidades que poderiam no futuro estar presente em outros sistemas, como a
opção de conversar através da aplicação cliente com outros usuários que estejam online no sistema,
ou a possibilidade de adicionar outros métodos de autenticação como via Google+ ou Twitter,
trazendo maior liberdade para os usuários utilizarem suas redes sociais preferidas, e agregando assim
mais informações sobre os utilizadores, além de aumentar a base de dados de usuários.
Para trabalhos futuros podem ser implementadas novas funcionalidades ao sistema, como
rotas alternativas entre os usuários (atualmente somente é possível traçar a rota como se estivéssemos
em um carro, porém também poderia ser possível traçar a rota a pé), ou a possibilidade de traçar
caminhos dentro de um mesmo local, como um show ou uma universidade (funcionalidade não
disponível no Google Maps atualmente).
Também como trabalhos futuros, atualmente a busca por afinidades é pelo nome exato da
mesma, podendo futuramente ser pesquisados por resultados parecidos, como por exemplo “Futebol”
e “Football”. Poderá também ser implementado um sistema que permita o diálogo entre os usuários,
oferecendo a possibilidade de iniciar conversas com pessoas que ainda não sejam conhecidas do
usuário, mas que possuam afinidades em comum.
REFERÊNCIAS BIBLIOGRÁFICAS
ALTERMANN, Dennis. Qual a diferença entre redes sociais e mídias sociais?. 2010. Disponível
em: <http://www.midiatismo.com.br/comunicacao-digital/qual-a-diferenca-entre-redes-sociais-e-
midias-sociais>. Acesso em: 28 jun. 2013.
ANDROID DEBUG BRIDGE. 2011. Disponível em:
<http://developer.android.com/guide/developing/tools/adb.html>. Acesso em: 1 jul. 2013.
ANDROID DEVELOPERS. Using the Android Emulator. 2011. Disponível em:
<http://developer.android.com/guide/developing/devices/emulator.html>. Acesso em: 1 jul. 2013.
ANDROID DEVELOPERS. 2013. Disponível em: <http://android-developers.blogspot.com/>.
Acesso em: 1 maio. 2013.
API DO GOOGLE PLACES. 2013. Disponível em:
<https://developers.google.com/places/documentation/?hl=pt-br>. Acesso em: 1 maio. 2013.
BARBIAN, Eduardo. O que são sistemas de navegação por satélite?. 2013. Disponível em:
<http://www.oficinadanet.com.br/post/10580-sistemas-de-navegacao>. Acesso em: 13 maio. 2013.
BETZ, John. W. et al. Understanding GPS: Principles and Applications. 2.ed. Norwood: Artech
House, 2006.
BRAIN, Marshall; HARRIS, Tom. Como funcionam os receptores GPS. 2008. Disponível em:
<http://informatica.hsw.uol.com.br/receptores-gps.htm>. Acesso em: 13 maio. 2013.
BRAY, Tim. Multitasking the Android Way. 2010. Disponível em: <http://android-
developers.blogspot.com/2010/04/multitasking-android-way.html>. Acesso em: 1 jul. 2013.
BRIGHTKITE. 2011. Disponível em: <http://brightkite.com/>. Acesso em: 2 jul. 2011.
BURKE, Bill. RESTful Java with JAX-RS. 2.ed. Sebastopol: O'Reilly Media, 2010.
CLOUD N SCI.FI. Heatmap on Google Maps. 2013. Disponível em:
<http://cloudnsci.fi/wiki/index.php?n=HeatMiner.HeatmapOnGoogleMaps>. Acesso em: 26 maio.
2013.
COOPER, Colin. Android Supported Language and Locales. 2011. Disponível em:
<http://colincooper.net/?p=238>. Acesso em: 13 dez. 2011.
DANTAS, Tiago. Comunidade e Sociedade. 2009. Disponível em:
<http://www.mundoeducacao.com.br/sociologia/comunidade-sociedade.htm>. Acesso em: 1 jul.
2013.
DEBIASI, Adam Esteves. Social Media S/A. 2010. Disponível em:
http://socialmediasa.com.br/2010/04/08/saiba-qual-foi-a-primeira-rede-social-da-internet/. Acesso
em: 8 de 12 de 2011.
59
REDE SOCIAL. In: DICIONÁRIO universal da língua portuguesa. Priberam Informática, 1999-
2011. Disponível em: <http://www.priberam.pt/dlpo/default.aspx?pal=rede%20social>. Acesso em:
1 jul. 2011.
EBIZMBA. Top 15 Most Popular Social Networking Websites | May 2013. 2013. Disponível
em: <http://www.ebizmba.com/articles/social-networking-websites>. Acesso em: 12 maio. 2013.
FACEBOOK. Key Facts. 2013. Disponível em: <http://newsroom.fb.com/Key-Facts>. Acesso em:
12 maio. 2013.
FACEBOOK DEVELOPERS. Graph API. 2013. Disponível em:
<https://developers.facebook.com/docs/reference/api/>. Acesso em: 1 jul. 2013.
FACEBOOK PERMISSIONS. Permissions. 2013. Disponível em:
<https://developers.facebook.com/docs/authentication/permissions/>. Acesso em: 30 jun. 2013.
FLORIN. New Android phones from HTC, Samsung, LG, Motorola and Sony Ericsson will
get software upgrades for 18 months after launch. 2011. Disponível em:
<http://www.unwiredview.com/2011/05/10/new-android-phones-from-htc-samsung-lg-motorola-
and-sony-ericsson-will-get-software-upgrades-for-18-months-after-launch/>. Acesso em: 28 jun.
2013.
FOURSQUARE. 2013. Disponível em: <http://foursquare.com>. Acesso em: 2 jul. 2013.
GHEAT. 2011. Disponível em: <http://code.google.com/p/gheat/>. Acesso em: 3 jul. 2013.
GMAP. 2011. Disponível em: <http://diffent.com/google_maps_color_contour_overlay>. Acesso
em: 3 jul. 2011.
GMHEATMAP. 2011. Disponível em: <http://maps.forum.nu/gm_heatmap.html>. Acesso em: 3
jul. 2011.
GOOGLE. orkut - Sobre. 2013. Disponível em: <http://www.orkut.com/About?hl=pt>. Acesso
em: 18 jun. 2013.
GOOGLE GEOCODING. Google Developers. 2013. Disponível em:
<https://developers.google.com/maps/documentation/geocoding/>. Acesso em: 1 jul. 2013.
GOOGLE MAPS. Google Developers. 2013. Disponível em:
<https://developers.google.com/maps/>. Acesso em: 28 junho. 2013.
GOOGLE MAPS API. Web Services 2013. Disponível em:
<https://developers.google.com/maps/documentation/geocoding/>. Acesso em: 1 maio. 2013.
GOOGLE TRENDS. 2011. Disponível em:
<http://www.google.com/trends?q=orkut&geo=bra&sa=N>. Acesso em: 02 jun. 2011.
60
GSON. 2011. Disponível em: <https://sites.google.com/site/gson/Home>. Acesso em: 1 maio.
2013.
GSON USER GUIDE. 2011. Disponível em: <https://sites.google.com/site/gson/gson-user-guide>.
Acesso em: 1 maio. 2013.
HEATMAPAPI. HeatMapAPI. 2012. Disponível em: <http://www.heatmapapi.com/>. Acesso em:
1 jul. 2013.
HTC. HTC - Press - 2008 - T-Mobile Unveils the T-Mobile G1 — the First Phone Powered by
Android. 2008. Disponível em HTC:
<http://www.htc.com/www/press.aspx?id=66338&lang=1033>. Acesso em: 1 jul. 2013.
INFORMÁTICA AGORA. A Importância das Redes Sociais. 2011. Disponível em:
<http://www.informaticaagora.com.br/internet/a-importancia-das-redes-sociais>. Acesso em: 2 jul.
2013.
INTRODUCTION. 2011. Disponível em:
<http://developer.android.com/guide/developing/index.html>. Acesso em: 1 jul. 2013.
LICENSES. 2013. Disponível em: <http://source.android.com/source/licenses.html>. Acesso em: 2
jun. 2013.
Linkedin. About Us. 2011. Disponível em: <http://press.linkedin.com/about>. Acesso em: 1 jun.
2013.
LOOPT. 2011. Disponível em: <https://www.loopt.com/>. Acesso em: 2 jul. 2011.
Memruk, Ivan. Android Tricks: Multitouch AND 1.5 Support, Same App. 2010. Disponível em:
<http://mindtherobot.com/blog/518/android-tricks-multitouch-and-1-5-support-same-app/>. Acesso
em: 13 dez. 2011.
MORIMOTO, Carlos. E. Hardware.com.br. 2009. Disponível em:
<http://www.hardware.com.br/livros/smartphones/entendendo-gps.html>. Acesso em: 1 jul. 2013.
MORRIL, Dan. Android Developers Blog: Announcing the Android 1.0 SDK, release 1. 2008.
Disponível em: <http://android-developers.blogspot.com/2008/09/announcing-android-10-sdk-
release-1.html>. Acesso em: 2 jul. 2013.
PANSARI, Ankur. Blog do desenvolvedor. 2011. Disponível em:
<https://developers.facebook.com/blog/post/500/>. Acesso em: 1 jul. 2013.
PROTALISNK, Emil. Facebook passes 1.06 billion monthly active users, 680 million mobile
users, and 618 million daily users. 2013. Disponível em:
<http://thenextweb.com/facebook/2013/01/30/facebook-passes-1-06-billion-monthly-active-users-
680-million-mobile-users-and-618-million-daily-users/>. Acesso em: 13 maio. 2013.
61
REUTERS. Vendas de celulares com GPS vão subir 34%. 2009. Disponível em:
<http://info.abril.com.br/noticias/mercado/vendas-de-celulares-com-gps-vao-subir-34-30072009-
4.shl>. Acesso em: 1 jul. 2013.
.
Ribeiro, Danilo Chagas. Como funciona o Sistema GPS? 2008. Disponível em:
<http://www.popa.com.br/_2008/cronicas/gps/funcionamento_do_gps.htm>. Acesso em: 13 maio.
2013.
ROUSE, Margaret. Whatis.com. 2005. Disponível em:
<http://whatis.techtarget.com/definition/framework>. Acesso em: 12 maio. 2013.
SANTANA, Ana Lucia. História do Facebook. 2011. Disponível em:
<http://www.infoescola.com/internet/historia-do-facebook/>. Acesso em: 3 jul. 2013.
SCHAPSIS, Claudio. Location Based Social Networks, Location Based Social apps and games -
Links. 2009. Disponível em: <http://bdnooz.com/lbsn-location-based-social-networking-links/>.
Acesso em: 28 jun. 2013.
SMITH, Tony. Rivals routed by Apple, Google smartphone onslaught. 2012. Disponível em:
<http://www.channelregister.co.uk/2012/08/08/apple_google_dominate_q2_2012_smartphone_ship
ments/>. Acesso em: 12 maio. 2013.
TECHTUDO. MySpace. 2011. Disponível em: <http://www.techtudo.com.br/tudo-
sobre/myspace.html>. Acesso em: 13 jun. 2013.
TELLES, Andre. Definição de Rede Social e Mídia Social. 2010. Disponível em:
<http://www.midiatismo.com.br/comunicacao-digital/definicao-de-rede-social-e-midia-social>.
Acesso em: 8 jun. 2013.
TWITTER. Twitter is the best way to discover what’s new in your world. 2011 Disponível em:
<http://twitter.com/about>. Acesso em: 13 jun. 2013.
VERDE, Amodiovalerio. Facebook Demographics Worldwide. 2011. Disponível em:
<http://amover.wordpress.com/2011/01/17/facebook-demographics-worldwide/>. Acesso em: 2
maio. 2013.
GLOSSÁRIO
Android Sistema Operacional código aberto, desenvolvido pela Google para sistemas
móveis como smartphones e tablets.
API Conjunto de ferramentas e/ou bibliotecas que permitem a integração com
outros sistemas.
Client Aplicativo que estabelece uma conexão a um servidor que esteja aguardando
conexões.
Eclipse Ferramenta open source para desenvolvimento de softwares com editor Java e com ótimo suporte a integração do Android SDK Tools.
Facebook Rede social muito difundida no mundo, inclusive no Brasil, que disponibiliza
de ferramentas que podem ser integrada em outros sites ou aplicativos.
LoreTrack Nome do sistema que está sendo desenvolvido.
MySQL Banco de dados open source utilizado desde pequenas até grandes aplicações.
Netbeans Ferramenta open source para desenvolvimento de softwares com editor Java.
Tablets Computadores portáteis com tamanho e capacidade de processamento menor
do que notebooks. Não possui teclado ou mouse, e com a interface de entrada
toda baseada em toque na tela.
Triangularização Tipo de localização que se utiliza das antenas de celulares ao invés de
sistemas GPS para determinar a posição atual de algum aparelho móvel.
Trilateração Princípio matemático usado nos sistemas de posicionamento global.
63
APÊNDICE A. QUESTIONÁRIO DE TESTES
Figura 21. Primeira página do questionário de testes.
64
Figura 22. Segunda página do questionário de testes.
65
Figura 23. Terceira página do questionário de testes.
66
Figura 24. Última página do questionário de testes.
67
APÊNDICE B. DICIONÁRIO DE DADOS
Tabela 4. Dicionário de dados da tabela usuarios
usuarios - permite guardar informações do usuário, recuperadas do Facebook, e guardar
informações da posição atual do usuário.
Campo Descrição Tipo Tam
PK idfacebook Id do Facebook do usuário VARCHAR 255
nomeUsuario Nome do usuário conforme cadastrado no
Facebook VARCHAR 255
avatar Endereço URL para a imagem de avatar do
usuário VARCHAR 5000
sexo O sexo do usuário, “M” ou “F” VARCHAR 1
nascimento O dia de nascimento do usuário DATETIME -
access_token Token de acesso do usuário contendo as
permissões de acesso VARCHAR 255
horaAtualização Hora da última requisição do usuário ao
WebService DATETIME -
FK locais_idlocal Id do local atual do usuário cadastrado na tabela
“locais” INT -
horaPosicao Hora que a última posição do usuário foi obtida DATETIME -
Tabela 5. Dicionário de dados da tabela historicos
historicos - permite ao sistema armazenar todos os locais que o usuário já esteve.
Campo Descrição Tipo Tam
PK idHistorico Identificação do histórico salvo na tabela INT -
FK facebook_idfacebook Id do usuário com a posição do histórico VARCHAR 255
FK locais_idLocal Id do local atual do usuário cadastrado na
tabela “locais” INT -
horaPosicao Hora que a última posição do usuário foi
obtida DATETIME -
68
Tabela 6. Dicionário de dados da tabela amizades
amizades - define quais relações os usuários possuem uns com os outros, permitindo o sistema
reconhecer quem terá acesso às informações de algum usuário.
Campo Descrição Tipo Tam
PK
FK idFacebookUser Id do Facebook do usuário do sistema VARCHAR 255
PK
FK idFacebookAmigo
Id do Facebook do amigo, com quem as opções
de privacidades são aplicada VARCHAR 255
verAtual Permite a visualização da posição do usuário
por seu amigo BOOLEAN -
verHistorico Permite a visualização do histórico do usuário
por seu amigo BOOLEAN -
pendente Convite de amizade pendente, aguardando
amigo aceitar BOOLEAN -
ignora
Usuário explicitamente bloqueou outro usuário,
não permitindo ao segundo visualizar suas
informações
BOOLEAN -
Tabela 7. Dicionário de dados da tabela interesses_fb_has_facebook
interesses_fb_has_facebook - permite relacionar os interesses do usuário com os interesses
cadastrados no Facebook.
Campo Descrição Tipo Tam
PK
FK interesses_fb_idinteresses_fb
Id do interesse que define a ligação
de algum interesse com um usuário VARCHAR 255
PK
FK facebook_idfacebook
Id do usuário com quem está o
interesse vinculado VARCHAR 255
69
Tabela 8. Dicionário de dados da tabela interesses_fb
interesses_fb - mantém as informações dos interesses cadastrados no Facebook, contendo sua
identificação única, seu nome e sua categoria.
Campo Descrição Tipo Tam
PK idinteresses_fb Id do interesse, conforme cadastrado no
Facebook VARCHAR 255
nome Nome do interesse como pode ser
encontrado no Facebook VARCHAR 255
categoria Categoria do interesse igual cadastro no
Facebook VARCHAR 255
Tabela 9. Dicionário de dados da tabela amizades_fb
amizades_fb - salva as informações de quem são os amigos do Facebook de cada usuário, buscando
estas informações através do WebService do Facebook.
Campo Descrição Tipo Tam
PK
FK Idfacebook Id do usuário utilizador do sistema VARCHAR 255
PK
FK idfacebookFriend
Id do amigo do usuário dentro da rede social
Facebook VARCHAR 255
nome Nome do amigo conforme cadastrado no
Facebook VARCHAR 255
photo URL de onde pode ser encontrada uma
cópia da foto de perfil do amigo do usuário VARCHAR 500
Tabela 10. Dicionário de dados da tabela locais
locais - possui todos os locais salvos pelos usuários, e sua respectiva posição.
Campo Descrição Tipo Tam
PK idLocal Id do local, gerado automaticamente pelo
banco de dados INT -
nome Nome do local em que o usuário esteve VARCHAR 255
posicao Coordenadas geográficas do respectivo local
cadastrado POINT -
70
Tabela 11. Dicionário de dados da tabela preferencias
preferencias - define as preferências pessoais de cada usuário, como os avisos que ele receberá –
uso futuro –, se ele está em modo invisível ou se está bloqueando o histórico de suas posições.
Campo Descrição Tipo Tam
PK
FK facebook_idfacebook
Id do Facebook do usuário cadastrado no
sistema VARCHAR 255
avisoPreferencias
Configuração do sistema que define se o
usuário receberá alguma notificação caso
alguém de sua preferência esteja próximo.
Para uso futuro
BOOLEAN -
avisoNovosAmigos
Configuração do sistema que define se o
usuário receberá alguma notificação caso
alguém o adicione à sua lista de amigos.
Para uso futuro
BOOLEAN -
modoInvisivel Define se o usuário está em modo invisível,
não permitindo mostrar sua posição atual BOOLEAN -
histórico Define a configuração se o histórico do
usuário deve ser salvo no banco de dados BOOLEAN -
Tabela 12. Views do sistema
As views, criadas com o prefixo v_, servem para facilitar a busca por informações entre várias
tabelas.
View Descrição
v_amizades Recupera informações de todas as amizades do sistema
v_localHistorico Ajuda na obtenção de dados do histórico do usuário
v_historicoAmigo Recupera informações sobre o histórico de determinado amigo do
usuário
v_pedidosAmizadePendentes Auxilia na recuperação de informações de todos os pedidos de
amizades feitos para o usuário
v_localAtualAmigos Colabora para a obtenção das informações do local atual dos
amigos do usuário
v_interessesUsuário Recupera uma lista contendo todos os usuários e seus respectivos
interesses
71
v_amizadesFacebook Obtém informações sobre todos os amigos do usuário na rede
social Facebook
v_localAtualAmigosFacebook
Retorna uma lista com todos os locais dos amigos atuais do
usuário, que possuem o sistema e são amigos do Facebook, porém
não do sistema
72
APÊNDICE C. RESULTADOS DO QUESTIONÁRIO
Figura 25. Perguntas um a quatro.
73
Figura 26. Perguntas cinco e seis.
Figura 27. Perguntas sete e oito
74
Figura 28. Perguntas nove e dez
75
Figura 29. Perguntas onze a treze.
76
Figura 30. Perguntas quatorze a dezesseis.
77
Figura 31. Perguntas dezessete a vinte.
78
ANEXO A. INFOGRÁFICO
Figura 32. Infográfico 1 de versões do Android
Fonte: (Haslam, 2013)
79
Figura 33. Infográfico 2 de versões do Android
Fonte: (Haslam, 2013)
80
Figura 34. Infográfico 3 de versões do Android
Fonte: (Haslam, 2013)