10

Click here to load reader

[CONNEPI] Desenvolvimento Para Android v1

Embed Size (px)

DESCRIPTION

Wireless Analyzer

Citation preview

Page 1: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

DESENVOLVIMENTO EM ANDROID: UMA VISÃO VOLTADA PARA

APLICAÇÕES DE CONTROLE E MONITORAMENTO DE REDE

RESUMO

Este trabalho apresenta os aspectos gerais para o desenvolvimento de uma aplicação especifica como

ferramenta de monitoramento e qualificação de rede baseada em analises de variáveis de QoS para

sistema operacional Android, considerando aspectos relacionados à ferramenta e ambientes. O Artigo

expõe ainda, algumas contribuições recentes, encontradas na literatura, que apresentam casos de sucesso

no desenvolvimento de aplicações para essa plataforma e dados expressivos que justificam sua utilização.

Por fim apresentamos a ferramenta concluída e resultados obtidos com seu desenvolvimento e melhorias

a serem realizadas.

Palavras-chave: desenvolvimento, android, rede, qos.

Page 2: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

1. INTRODUÇÃO

Grande parte dos smartphones atuais possuem métodos de escolha de redes com baixa

eficiência, isso pode comprometer uma boa experiência de uso por parte dos proprietários de aparelhos.

Podemos citar, por exemplo, o caso do Android que prioriza a rede Wi-Fi sem considerar o fator

qualidade do sinal em relação a redes 3G. Estudos vêm sendo realizados para o aperfeiçoamento de

técnicas de escolha de redes, mas devido à quantidade de variáveis, tais técnicas acabam se tornando

muito complexas e perdendo a eficácia.

Essa complexidade e o custo computacional que ela arremete são ainda mais problemáticos em

meios móveis, visto que seu poder de processamento é inferior a máquinas de maior porte. Atualmente o

mundo vem vivendo uma transformação em que usuários estão se tornando cada vez mais apegados a

tecnologias móveis como smartphones e tablets.

Pesquisas realizadas pela Millennial Media (2011) mostram um enorme avanço na utilização de

smartphones com sistema operacional Android nos Estados Unidos. A Figura 1 mostra o grau do avanço

do sistema operacional da Google, em setembro de 2010 o Android ocupava a segunda colocação com

apenas 29% de dispositivos conectados, enquanto o Iphone, até então atual líder, possuía 46% da fatia de

usuários. Observamos que em agosto de 2011 esse quadro praticamente se inverteu. Android antes

segundo lugar possui agora mais da metade dos usuários de smartphones, cerca de 54%, enquanto o

sistema operacional da empresa Apple foi rebaixada a segundo lugar com apenas 28%.

Figura 1- Android está presente em duas vezes mais smartphones que IOS nos EUA

Dados revelados pela própria Google, segundo Skarttertech (2011) no evento Google I/O 2011

Day One, salientam ainda mais o sucesso do Android entre os utilizadores de smartphones. Existe cerca

de 100 milhões de dispositivos com Android ativados, o que é bastante expressivo considerando que a

plataforma tem apenas dois anos. Há aproximadamente 400 mil novas ativações por dia e já foram

realizadas mais de 4.5 bilhões de instalações de aplicativos no Android Market.

O consumo de dados por dispositivos móveis aumentou 89% de 2010 para 2011, afirma Nielsen

(2011). Um dos responsáveis por esse aumento foi a crescente utilização do Android que lidera a lista dos

sistemas operacionais que mais utilizam banda de internet. Por isso a preocupação com a qualidade do

sinal e a otimização dos mecanismos de gerência de rede estão sendo alvos de constantes estudos.

Sendo assim prover um mecanismo de escolha de redes eficiente e com baixo custo

computacional para dispositivos móveis é uma necessidade iminente. O sistema operacional Android

tanto por ser uma tendência no mercado, quanto por possuir um ambiente de desenvolvimento mais

propício à criação de aplicações com baixo custo foi a plataforma escolhida para realização desse projeto.

Page 3: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

Este trabalho foi dividido em seis seções, a primeira seção introdutória demonstra dados

estatísticos e pesquisas recentes sobre Android e sua relevância para o trabalho. A segunda apresenta

vantagens que levaram a escolha do Android como plataforma de desenvolvimento, além de alguns outros

estudos referentes ao mesmo. Na terceira seção detalhamos o processo de implementação como ambiente

de desenvolvimento, linguagem, requisitos e a metodologia utilizada na construção da ferramenta de

monitoramento de rede denominada Wireless Analizer (WA). Na quina seção apresentamos resultados

obtidos e na sexta e última seção concluímos o artigo e apresentamos alguns projetos futuros para a

ferramenta.

2. DESENVOLVIMENTO EM ANDROID

O Android proporciona varias vantagens a quem deseja desenvolver para a plataforma, atraindo

cada vez mais desenvolvedores e usuários de dispositivos que possuam o sistema operacional da Google.

Podemos citar algumas vantagens que motivam o desenvolvimento para plataforma:

Desenvolvimento multi-plataforma: é possível desenvolver aplicações em diversos sistemas

operacionais;

serviços em background: com Android é possível que sua aplicação funcione em segundo

plano, não só serviços do próprio sistema operacional.

multi-linguagem: mesmo Java sendo a linguagem oficial mantida pela Google, é possível

escrever aplicações com diversas linguagens diferentes.

sistema operacional de código aberto: o que permite inúmeras possibilidades de modificação

do próprio SO;

dispositivos baratos: permitem assim maior popularização do aparelhos e consequentemente

do sistema operacional.

Na literatura recente podemos citar artigos que tem como objeto de seu estudo o Android, por

exemplo, Cheng, Kuo e Su (2010) propõe a modificação do Kernel do Android de modo a prover ao

sistema operacional funções para gestão de serviços de telemática. Pretende-se alcançar, com essa união,

um dispositivo amigável para ambientes de comunicação, fundindo tráfego seguro, navegação GPS,

atividades remotas, entretenimento com áudio e vídeo, etc.

A modificação do Android foi realizada de modo utilizar o máximo de benefícios já existentes

na plataforma adicionando-se recursos extras presentes no projeto, como gestor de redes heterogêneas,

com funções de roaming e de compartilhamento, permitindo handovers suaves com algoritmo de

detecção de degradação de sinal e otimização de fluxo de dados e compartilhamento de conexões com

outros dispositivos. Tal ferramenta pode ser utilizada em diversas propostas, como Gateway centrar para

entretenimento, On-Board Unit (sistema de localização) Veicular ou um dispositivo portátil de rede.

Ao se desenvolver para dispositivos móveis uma preocupação constante de programadores é

com o desempenho de suas aplicações, visto que dispositivos embarcados, mesmo com uma grande

evolução dos microprocessadores, ainda possuem poder de processamento bem abaixo de máquinas

desktop e notebooks modernos.

O SDK padrão para desenvolvimento de aplicações no Android utiliza como linguagem de

desenvolvimento Java, considerado lento e consumidor excessivo de memória, é comumente

questionando como linguagem para desenvolvimento mobile. Lee e Jeon (2010) Apresentam uma

alternativa para o desenvolvimento na plataforma do Android que demonstra a utilização de outras

linguagens como ferramenta de construção de aplicações para a plataforma.

A proposta visa a utilização do Android NDK, um ambiente de desenvolvimento, na qual utiliza

C/C++ como linguagem de desenvolvimento nativa. Justifica essa alternativa pelo melhor desempenhos

alcançados em casos de execução de operações complexas como: simulações físicas e processamento de

sinais, transpor as limitações impostas pelo Android SDK dando maior flexibilidade e liberdade ao

desenvolvedor além da possibilidade de reutilização de códigos legados escritos em C/C++ para a

Page 4: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

plataforma móvel. Inconvenientemente a utilização do Android NDK torna códigos mais complexos e

nem sempre apresentam um ganho de eficiência satisfatório.

3. PROPOSTA

Atualmente dispositivos móveis possuem mecanismos de escolha de redes ineficientes. Estudos

vêm sendo realizados para melhorar esse fator, mas a complexidade atribuída a cada um deles diminui o

interesse da indústria em implanta-las em seus dispositivos. A proposta central de nosso trabalho é

desenvolver uma solução eficaz e de pouca complexidade para o sistema móvel Android de modo que

seja facilmente implantado em qualquer dispositivo.

Segundo Monteiro e Godim (2010) Técnicas útilizadas para mensurar a qualidade de vídeo

(QoV) podem ser classificadas em subjetivas e objetivas. Técnicas subjetivas necessitam da intervenção

do usuário, enquanto técnicas objetivas são mais facilmente automatizadas, no entanto são mais

ineficientes. A proposta descrita nesse projeto utiliza-se de técnicas objetivas por ser de mais simples

automação.

Técnicas objetivas podem ser divididas em três tipos de acordo com sua necessidade de

informações sobre um vídeo a ser transmitido: Full Reference (FR) quando necessita de todo o vídeo

como parâmetro de avaliação, Reduced Reference (RR) quando necessita apenas de algumas informações

e No Reference (NR) quando não necessita de informações dos vídeos para realizar a métrica. Em nosso

estudo utilizou-se métricas do tipo NR tornando o processo menos complexo. Denominou-se então, para

esse trabalho, a técnica de mensuração da qualidade de vídeo (QoV) sem a necessidade de informações

sobre o vídeo sendo ou a ser transmitido pela rede (NR) de QoV-NR.

Para implementar o QoV-NR Monteiro e Godim (2010) desenvolveu uma técnica chamada

Network Quality Metric (NQM). Consiste em, a partir de cálculos baseados em atraso, jitter e pacotes

perdidos obtidos pelo comando ping, definir um valor no intervalo de 1 a 5 a o grau de qualidade do meio

por onde os dados trafegam.

4. IMPLEMENTAÇÃO

3.1 Ambiente

Para desenvolvimento deste projeto foi construído um ambiente de desenvolvimento que se

proporciona uma maior comodidade e agilidade do processo de criação. O Ambiente foi montado

utilizando a distribuição Linux Ubuntu 11.04 (natty) com Kernel 2.6.38-11-generic-pae em uma notebook

Acer Aspire 4738-6328 com processador Intel®

CoreTM

ai5-489M (2,66Gz, 3MB L3 Cache).

Como IDE a escolha pelo Eclipse foi baseada pela adoção do Android Development Toolkit

(ADT) como ferramenta oficial de desenvolvimento para Android e com manutenção gerida por membros

da equipa da própria Google. A versão do Eclipse utilizada no experimento foi a Galileu

3.5.2.r352_v20100108, utilizando o plugin ADT versão 10.0.1.v201103111512.

O Android SDK Vevision 10 foi utilizado para em todo o processo de desenvolvimento e para

operações via console de acesso e modificação do sistema operacional empregava-se o Android Debug

Bridge versão 1.0.26

Para concluir o Ambiente de desenvolvimento foi utilizado tanto Emulador do Android, quanto

um dispositivo real. O Emulador foi montado utilizando Android Froyo versão 2.2 (API level 8) monitor

de resolução 240x400 (WQVGA400) armazenamento externo simulado de 160MB e mémoria RAM de

256MB. Já como dispositivo real, utilizou-se um Samsung Galaxy 5 GT-I5500B equipado com Android

Eclair 2.1-update1 (API Level 7), Arquitetura ARM EABI, visor com resolução de 240x320 (QVGA),

armazenamento externo real de 1GB e memória RAM de 256MB. Possui ainda conexões do tipo GPRS,

EDGE, 3G HSDPA, Wi-Fi 802.11 b/g com DLNA, Bluetooth 2.1 com A2DP, utilizamos conexão 3G e

Wi-Fi para realizar testes funcionais no aparelho.

Page 5: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

3.2 Linguagem

O primeiro passo no desenvolvimento do aplicativo foi à definição do escopo. O sistema

operacional Android mesmo possuindo como linguagem padrão o Java, é possível utilizar diversas outras

linguagens em sua arquitetura, como C/C++, BeanShell, Tcl, JRuby, Lua, Perl, Python e Rhino como

afirma Ferrill (2011). Visto a quantidade de tecnologias que podem ser utilizadas para desenvolvimento

em ambientes Android é de fundamental importância à escolha de uma que traga a maior gama de

vantagens.

Para o desenvolvimento do WA, foi utilizado Java nativo. Primeiro que por ser a linguagem

padrão da plataforma, possui maior documentação, além de possuir total integração com a Android API.

Segundo que para obter melhores resultados em relação à segurança e estabilidade é necessário que a

aplicação crie um serviço ao invés de threads, serviços fazem parte do gerenciamento do Android, sendo

assim ele somente pausaria um serviço em casos extremos de sobrecarga podendo ao normalizar da

situação reiniciar o serviço novamente. No enquanto uma Thread pode ser eliminada pelo Android em

qualquer instante.

Como vimos na subseção anterior deste artigo, A IDE mais recomendada para desenvolvimento

em Android é o Eclipse juntamente com o plug-ins ADT mantido pela própria Google. O ADT prove uma

interface de acesso simplificado a uma grande quantidade de comandos da suíte de ferramentas do

Android, assim como ferramentas de design de interfaces para uma rápida prototipação, projeção e

criação de interfaces de usuários para aplicações (ANDROID DEVELOPER TOOLS, 2011).

Por fim ainda temos a problemática da distribuição, ao criar aplicativos utilizando Java, não há

dependências de plug-ins ou plataformas adicionais presentes no dispositivo, sendo assim a aplicação

pode ser distribuída a terceiros, por exemplo, pelo site oficial de aplicativos do Google, onde pode ser

instalado pelo método convencional sem nenhuma complicação adicional. Todas essas vantagens foram

de grande valia ao se decidir escolher a linguagem a ser utilizada no projeto.

3.3 Requisitos

A métrica proposta pelo QoV-NS necessita dos dados gerados pelo comando ping. Para

realizarmos um ping no Android precisamos executar chamadas em recursos do sistema através de

métodos presentes no Java, já que esse recurso não está presente na API do sistema da Google. O Java

possui métodos que realizam a mediação entre a linguagem e os recursos do SO, isso torna possível

realizar comandos como se o operador estivesse sobre o console do sistema operacional.

O problema desse procedimento é que o executável ping (/system/bin/ping) está limitado para

usuários normais de maneira que só pode ser realizado em endereço local como pode-se observar na

figura 2. Quando é realizado em um servidor de endereço externo, nenhum dos pacotes é entregue, fig 2.

Dessa maneira necessitamos de acesso de super-usuário (root) para que possamos realizar o ping sem tal

restrição. Por questão de segurança, o Android não permite que aplicativos executem ações como super-

usuário.

A maioria dos dispositivos Android vem com seu sistema de arquivos protegidos de fábrica para

evitar qualquer tipo de manipulação acidental ou maliciosa. Por ser essencialmente Unix, o sistema

operacional Android possui grande parte das mesmas funcionalidades que se encontra em qualquer Unix.

Existem maneiras de desbloquear as áreas restritas do sistema e fornecer acesso root e irrestrito ao

sistema de arquivos de um dispositivo com Android. Este processo é chamado de rooting, uma vez que

esse processo está completo pode-se se dizer que o dispositivo está rooteado (rooted) (FERRILL, 2011).

Page 6: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

Figura 2- ping para endereço local e externo

Existem várias técnicas de rooting de um dispositivo Android, em nosso projeto foi utilizado um

método desenvolvido por Shanks (2011), que se consiste em introduzir um “su” (binário responsável por

executar comandos como super-usuário) modificado no núcleo do sistema. Feito isso se pode-se invocar o

su para realizar tarefas como root. Isso Torna possível a execução do ping sem restrições.

3.4 Metodologia

O WA foi criado com a proposta de desenvolver um sistema que constantemente verifique a

qualidade do sinal wireless de um dispositivo móvel. Para isso foi utilizado a técnica QoVSN

(MONTEIRO E GODIM, 2010). O projeto, visando manter uma boa organização, foi então dividido em

quatro componentes principais: SuDroid, PingParser, WA Service e a Main View, essa estrutura pode ser

observada na Figura 3.

Figura 3- Componentes do Wireless Analizer

O Componente SuDroid é responsável pela chamadas de recursos do sistema e tratamento das

mesmas. Provê uma interface simplificada e eficiente para executar comandos como super-usuário, sem

necessidade de tratamento de exceções críticas. Essa classe retorna um objeto com informações sobre

estado da requisição, em casos sucesso informa o retorno desejado, em casos de fracasso retorna a

mensagem uma mensagem de erro.

Page 7: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

Já o componente PingParser pode ser considerado o núcleo do aplicativo, pois nele que se

encontram as métricas do QoV-NS e todos os métodos de requisição e tratamento do ping. Utiliza-se dos

recursos provenientes do componente SuDroid para se comunicar com o Sistema Operacional

diretamente. Para isso informa como parâmetros de entrada o comando ping acrescido da quantidade de

requisições a serem feitas (parâmetro “–c” fornecido pelo ping) e o host de destino.

Ao se realizar o ping através do SuDroid com sucesso, armazena-se o conteúdo do ping em uma

variável que é então submetida a uma sondagem utilizando expressões regulares que extraem informações

como Atraso em cada requisição, pacotes perdidos e menor e maior atraso. De posse dessas informações

o componente então calcula outras variáveis necessárias como Atraso médio, jitter, jitter médio, menor

jitter, maior jitter. Tendo posse destas variáveis então calcula-se o NQM (Noise Quality Measure)

(MONTEIRO e GODIM,2010).

WA Service é responsável por controlar o funcionamento do WA, após iniciado ele realiza

chamadas ao PingParser de modo que ele efetue o calculo do NQM e retorne o resultado obtido. Com

esse resultado em mão então ele Inicia uma comunicação assíncrona com a Main View exibindo assim o

resultado em cada interação para o usuário. Neste componente estão descritas propriedades como a

quantidade de vezes que deve ser realizada a varredura em um ciclo e o tempo de intervalo entre cada

requisição realizada ao PingParser.

O último dos componentes apresentados é o Main View, ele é um componente opcional, mas

bastante útil. O Main View é a interface do usuário com o WA Service. Seu funcionamento se baseia em

um Broadcast Receiver que recebe os valores oriundos das iterações realizadas no WA Service e os

apresentam na tela do dispositivo inserindo o texto incremental em um TextView. É responsável também

por manter o estado da aplicação, pois quando a aplicação é interrompida por qualquer que seja o motivo

ela não armazena a informação exibida, por esse motivo utiliza-se os callbacks OnPause e OnResume,

respectivamente, para salvar e recuperar as informações exibidas. Esse procedimento pode gerar um

numero muito grande de informações e consequentemente um arquivo pesado, por isso o Main View

também disponibiliza em seu menu a opção de limpar o arquivo de armazenamento.

5. RESULTADOS

Testes demonstraram que os mesmo procedimentos realizados em aparelhos reais não

funcionam perfeitamente no emulador, como pode ser visto na Figura 4, o procedimento do ping continua

restrito, diferenciando-se apenas que agora o procedimento é possível para endereços externos, mas o

resultado é de pouca utilidade. Pelo Utilitário Android Debug Bridge do emulador podemos verificar que

o ping é realizado diferentemente de um dispositivo não rooteado, onde é possível até resolver o nome do

host de “www.l.google.com” para seu IP (74.125.234.49), mas todos os pacotes são perdidos.

Figura 4 - Emulador do Froyo

Page 8: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

Contudo utilizando dispositivo real, utilizando tanto 3G quando Wi-Fi, o aplicativo funcionou

perfeitamente. Podemos observar seu funcionamento na Figura 5.

Figura 5- Wireless Analize rodando em dispositivo real

Com passar do tempo o log referente as analises realizadas pelo WA se tornam muito grandes,

em uma hora de execução o serviço registrou 3857 analises de tráfego o que levou cerca de quatro

segundos para ser carregado pela interface do WA. Para evitar que esse log fique extremamente grande

foi introduzido no menu da aplicação a opção de limpar o log, podendo ser realizado a qualquer momento

da execução. O menu ativado com essa opção está em destaque na figura 6 abaixo.

Figura 6 - Wireless Analize com Menu ativdado

Um fator que citamos anteriormente foi a questão do Android priorizar o Wi-Fi dentre suas

conexões ativas, observamos no experimento descrito pelo gráfico da figura 7, onde o WA foi utilizado

primeiramente em um ambiente Wi-Fi não controlado e com trafego bem ativo e logo em seguida ele foi

desativado, entrando em operação logo em seguida a conexão 3G.

Page 9: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

Figura 7- Comparaçã: 3G com Wi-Fi no WA

Observamos no gráfico acima que mesmo o Android dando prioridade para redes Wi-Fi neste

caso não foi a melhor solução devido a rede estar congestionada, uma solução que utiliza-se o WA como

referência de qualidade de sinal ao detectar a oscilação apresentada pela rede Wi-Fi passaria a utilizar a

conexão 3G por apresentar melhores resultados nos testes realizados.

6. CONCLUSÃO E TRABALHOS FUTUROS

Buscou-se nesse trabalho implementação de uma métrica que com baixo custo computacional

pudesse aferir a qualidade de um meio, podendo assim auxiliar na escolha inteligente de diferentes

possibilidades de rede. A proposta da técnica QoV-NS utilizando a métrica NQM com apenas variáveis

de rede somado a facilidade de implementação e distribuição e implantação em dispositivos equipados

com Android resultou em um aplicativo simples e eficiente.

Projetou-se para trabalhos futuros uma reescrita do programa em outras linguagens de modo a

comparar sua eficiência em tecnologias diferentes. Criação do módulo complementar de escolha de redes,

visto que o módulo WA já desenvolvido visa apenas o monitoramento e qualificação da rede. Por fim

disponibilizar o aplicativo para uso público irrestrito pelo Android Market.

Page 10: [CONNEPI] Desenvolvimento Para Android v1

VI Congresso de Pesquisa e Inovação da Rede Norte e Nordeste de Educação Tecnológica

Aracaju-SE -2011

REFERÊNCIAS

ANDROID DEVELOPER TOOLS. Android Developer, set. 2011. Disponível em: <

http://developer.android.com/guide/developing/tools/adt.html >. Acesso em: 27 set. 2011.

CHENG Y.H.; KUO W.K.; SU S.L. An Android System Design and Implementation for Telematics

Services, Intelligent Computing and Intelligent Systems (ICIS), IEEE International Conference on, vol.

10, pp. 206-210,Junho 2010.

LEE, S.; JEON J.W. Evaluating Performance of Android Platform Using Native C for Embedded

Systems, International Conference on Control, Automation and Systems, vol. 8, pp. 1160 - 1163,

Dezembro 2010.

FERRILL, P. Pro Android Scripting with SL4A: Writing Android Native Apps Using Python, Lua,

and Beanshell. New York: Apress, 2011. 300 p. ISBN 9781430235699.

ANDROID DEVELOPER TOOLS. Android Developer, set. 2011. Disponível em: <

http://developer.android.com/guide/developing/tools/adt.html >. Acesso em: 27 set. 2011.

SHANKS, A. su-binary, set 2011. Disponível em <http://github.com/ChainsDD/su-binary>. Acesso em:

28 set 2011.

SKATTERTECH, Google I/O 2011 Day One: Android Statistics, mai. 2011. Disponível em:

<http://skattertech.com/2011/05/google-io-2011-day-one-android-statistics/>. Acesso em: 29 de set. 2011.

MILLENNIALMEDIA, Mobile MixTM – Millenial Media, set. 2011. Disponível em:

<http://www.millennialmedia.com/research/mobilemix/>. Acesso em: 29 de set. 2011.

NIELSEN, Average U.S. Smartphone Data Usage Up 89% as Cost per MB Goes Down 46%, Jun. 2011.

Disponível em: <http://blog.nielsen.com/nielsenwire/?p=28035>. Acesso em: 29 de set. 2011.

MONTEIRO, C. C.; GONDIM, P. R. L. An Alternative QoS Architecture for Integrating WLAN/3G

Networks. Fed. Inst. of Educ. of Tocantins, Palmas, Brazil. in: Wireless and Mobile Communications

(ICWMC), 2010 6th International Conference on, pp 68-77. Setembro 2010.