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.
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.
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
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.
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).
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.
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
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.
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.
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.