Captulo
10
Projeto de interface de usurio em aplicaes
mveis: uma introduo plataforma Android
Joo Soares de Oliveira Neto, Ernando Passos
Resumo
Os profissionais que trabalham com desenvolvimento de software devem estar
preparados para atender a uma das maiores expectativas no mercado tecnolgico
atual: a demanda por aplicaes que sero executadas em dispositivos mveis. Este
captulo discute assuntos que devem ser vistos como fundamentais a fim de se
diferenciar no mercado j competitivo. O primeiro assunto a Interao Mvel, ou
seja, como o usurio dialoga com as aplicaes no contexto onde a mobilidade
primordial. Em seguida, so apresentados os fundamentos da plataforma Androide, sua
arquitetura, os componentes de uma aplicao, os elementos da interface de usurio e
alguns tpicos avanados, como a conexo com banco de dados e o uso da Google
Maps API.
10.1. Introduo
A mobilidade uma das caractersticas marcantes deste incio de sculo. Os benefcios
trazidos pela popularizao da Computao nas ltimas dcadas do sculo passado j se
mostravam restritivos, nessa rea que se reinventa em passos curtos. O surgimento da
Computao Mvel (Mobile Computing) transforma a maneira como o indivduo e as
instituies contemporneas se relacionam com os outros, como realiza transaes
financeiras, como acessa servios e informaes e torna possvel o cenrio projetado por
Marc Weiser, em que o indivduo permanece conectado Internet o tempo todo e de
(todo e) qualquer lugar (Weiser 1991).
Os fornecedores de software comearam a desenvolver aplicaes mveis (ou,
simplesmente, apps) para as mais variadas finalidades jogos, localizao de lugares e
de pessoas, redes sociais, transaes financeiras, entre outras. A conexo sem fio, o
tamanho reduzido e o peso leve dos equipamentos, e a libertao dos fios/cabos
produziram um territrio completamente novo para a Computao se expandir. Assim,
os dispositivos mveis tornaram-se acessrios fundamentais.
No permitido fazer cpia integral ou parcial deste trabalho visando o lucro ou vantagem comercial.
Este trabalho foi publicado nos Anais da XII Escola Regional de Computao dos Estados da Bahia,
Alagoas e Sergipe, em abril de 2012 UNIVASF -www.erbase2012.univasf.edu.br- ISSN 2177-4692.
293
A preocupao com a infraestrutura de comunicao e com a inveno de novos
recursos para adicionar aos equipamentos mveis, deixaram para segundo plano
questes ligadas interao do usurio com estes dispositivos. Ou seja, interao do
usurio com a interface especfica para dispositivos mveis. De certa forma, isto se
justifica pelo fato de que, no incio, as apps eram nada mais do que miniaturizao ou
adaptaes de servios/aplicaes projetadas inicialmente para o desktop (Yamabe et
al., 2008).
A disciplina de IHC (interao humano-computador), que investiga a relao
entre usurios, sistemas computacionais e aplicaes, abriu espao para a Interao
Mvel. Mtodos, tcnicas e ferramentas comearam a ser criados para a sistematizao
do estudo da maneira como o usurio interage com dispositivos mveis: as limitaes,
necessidades, e como tornar este dilogo mais fcil para o usurio. O contexto de uso
torna-se muito importante, pois, com a mobilidade, o usurio sai do ambiente quase que
controlado e at determinstico do escritrio, da sala de estar, do balco de um bar, entre
outros. Se a mxima de que o usurio pea fundamental para a garantia da qualidade
de uma aplicao, na Interao Mvel, o contexto em que o usurio se encontra no
pode ser menosprezado, pois ele interfere diretamente na forma como o indivduo
utiliza os sistemas computacionais e as aplicaes.
O objetivo deste captulo apresentar aos profissionais envolvidos no
desenvolvimento de aplicaes para dispositivos mveis sobretudo as reas de IHC e
Engenharia de Software os princpios de diretrizes gerais para o projeto de interfaces
de usurios para dispositivos mveis. Alm disso, so discutidas as especificidades da
Interao Mveis, ou seja, as caractersticas que torna esse paradigma diferente dos
paradigmas tradicionais de IHC. Alm disso, mostrada a coleo de componentes
grficos disponveis na plataforma Android, que tem ganhado cada vez mais ateno de
pesquisadores e profissionais por ser gratuita, originalmente idealizada para dispositivos
mveis, robusta, integrvel a uma srie de servios e APIs amplamente conhecidas, e
conta com uma ampla (e crescente) variedade de equipamentos capazes de executar suas
aplicaes.
Este captulo est estruturado da seguinte forma: na Seo 2 so apresentados e
discutidos os princpios da Interao Mvel e so discutidos os princpios de projeto
para que o usurio tenha uma experincia positiva ao usar aplicaes desenvolvidas para
aplicaes mveis; a Seo 3 concentra-se na plataforma Android, apresentando sua
arquitetura, os componentes de uma aplicao Android, os principais componentes de
interface de usurio para entrada e sada de dados, e aborda alguns tpicos avanados,
tais como a conexo a bancos de dados e o uso de classes e interfaces da Google Maps
API; e, finalmente, a Concluso, na Seo 4.
294
instituies contemporneas se relacionam com os outros, como realiza transaes
financeiras, como acessa servios e informaes e torna possvel o cenrio projetado por
Marc Weiser, em que o indivduo permanece conectado Internet o tempo todo e de
(todo e) qualquer lugar (Weiser 1991).
Para BFar (2005), o projeto de interface de qualquer aplicao para dispositivos
mveis deve preocupar-se com: a aparncia e o comportamento da aplicao e como
torn-la agradvel aos usurios; a facilidade da aprendizagem da interface e a sua
eficincia; e questes de sade no uso da interface.
A maioria dos dispositivos mveis ainda possuem telas pequenas, o que interfere
na quantidade de informaes que pode ser apresentada ao usurio num dado momento.
No fcil projetar uma interface de usurio, como um guia de turismo, que fornece
informaes sobre cinemas, restaurantes, museus, entre outros, e possibilite que o
usurio encontre a informao que ele precisa, sem que este seja um processo com
vrios nveis e camadas de dados. Os usurios com dificuldades de localizao espacial
sentiro muita dificuldade em utilizar um sistema com uma interface que exija a
navegao por vrios nveis abaixo e que o usurio volte todo o caminho percorrido se
quiser acessar outra seo do site.
Alm da confuso espacial, deve-se lembrar de que as pessoas usam os
aparelhos celulares e suas apps em ambientes sociais e dinmicos, onde vrios
elementos podem contribuir a distra-las enquanto tentam acessar as informaes e
servios. Entre estes elementos, podem ser citados: barulho do trnsito, outras pessoas
andando distradas na rua e esbarrando em outras pessoas, muita/pouca luz ambiente
etc. Alm disso, outro fator do contexto muito importante a qualidade da conexo
rede de dados. Uma conexo fraca pode fazer com que o usurio passe muito tempo
tentando encontrar um restaurante onde fazer uma refeio.
De acordo com a norma ISO 13407, detalha o Processo Centrado no Usurio na
criao de sistemas interativos, so quatro os pontos fundamentais a serem observados
na criao de uma aplicao interativa:
Produzir prottipos;
295
ser lido na sua totalidade pelo usurio em momentos de correria. O desenvolvedor deve
prover uma aplicao que funcione em qualquer contexto.
296
teclado virtual para corrigir eventuais erros no processo de captura de comandos
falados.
297
de interface isso deve ser traduzido em transaes rpidas e que no desperdicem
recursos computacionais como uso do processador e da memria.
298
10.3.1. Surgimento
10.3.2. Arquitetura
299
A arquitetura tem na sua base o Kernel Linux que oferece uma camada de abstrao de
hardware, configuraes de seguranas, e funes bsicas, como gerenciamento de
memria, energia e dos drivers do dispositivo. Desta maneira, o Kernel Linux
proporciona toda segurana, estabilidade, e portabilidade do Sistema Operacional
Linux, que apesar de na viso do usurio no haver um contato direto com o Linux, para
desenvolvedores durante a criao de algumas aplicaes preciso fazer o uso do shell
(Burnette, 2010).
Logo acima do Kernel Linux esto as bibliotecas nativas do Android, que so
criadas em C/C++, compiladas para o hardware especfico do aparelho, e geralmente
pr-instalada pela empresa fornecedora. As bibliotecas so responsveis por gerenciar
banco de dados, reproduo de udio, aceleradores grficos, entre outros. Os principais
componentes da camada Libraries so (GOOGLE, 2011):
300
importante salientar que com o recurso do SDK do Android e a utilizao do
ambiente de desenvolvimento Eclipse, todas essas etapas so feitas automaticamente
(Lecheta, 2010).
A camada Applications Framework tem a funo de administrar as funes
bsicas dos aplicativos no Android, tais como gerenciamento de contatos, alarmes, barra
de status, Activity Manager - responsvel pelo gerenciamento do ciclo de vida de uma
aplicao -, Location Manager - til para desenvolvimento em mapas, localizao e
GPS, alm do acesso aos provedores de contedos do Android. A seguir so mostrados
os principais componentes da camada Applications Framework (GOOGLE, 2011):
301
As prximas sees detalham estes componentes e apresentam maiores detalhes
do seu funcionamento.
1.3.1 10.3.4. Activity
Uma Activity geralmente est relacionada a uma tela da aplicao. A partir delas
possvel fazer uma representao de uma interface visual e tratamento de eventos, tais
como a seleo em menus ou toque na tela. Uma aplicao pode ser composta de uma
composio de Activities, podendo haver uma alternncia entre as mesmas. Cada
Activity tem um papel especfico na soluo de um problema durante o processo do
aplicativo. Geralmente a alternncia entre Activities est associada mudana de telas,
isto feito quando se envia ao Sistema Operacional uma mensagem (Intent), com
argumentos necessrios para a inicializao da tela (Lecheta, 2010).
Por exemplo, um jogo eletrnico simples poderia ter as seguintes Activities: uma
tela de incio ou boas-vindas (Startup ou Splash); um tela com o menu principal, que
atua como o Activity principal e o ponto central para a navegao; tela da partida, onde
o jogo acontece; tela de maiores pontuaes, que mostra a pontuao de todos os
jogadores; e tela de ajuda/sobre, que apresenta informaes que os usurios precisam
para jogar.
Toda Activity possui um ciclo de vida que gerenciado pelo Sistema
Operacional. No momento da criao de um aplicativo necessrio levar em
considerao fatores como o seu encerramento brusco por uma ligao telefnica
recebida, por uma mensagem privada ou ainda, pelo recebimento de mensagens
enviadas pelo Sistema Operacional. Entender o funcionamento e os possveis estados de
uma Activity se torna imprescindvel para o desenvolvedor. O conceito de ciclo de vida
est relacionado pilha de Activities, ou seja, uma aplicao real pode ser interrompida
por um browser ou uma ligao telefnica, logo a nova Activity ser inserida no topo da
pilha e a aplicao anteriormente em execuo fica abaixo na pilha, passando a ser
considerada em segundo plano para o Sistema Operacional, que poder destru-la e
remov-la da pilha a qualquer momento, encerrando o seu processo com e liberando
recursos.
O Android permite monitorar os possveis estados de uma Activity atravs
mtodos herdados da classe android.app.Activity. So eles: onCreate(),
onStart(), onRestart(), onResume(), onPause(), onDestroy(),
e onStop(). A responsabilidade de cada mtodo (Condey; Darcey, 2001):
302
303
1.3.2 10.3.5. Service
Representado pela classe android.app.Service, o componente Service tem a funo de
executar processos em segundo plano, em sua maioria por tempo indeterminado sem
que o usurio perceba. Em um Service pode acontecer interao ou no com o usurio,
em sua grande maioria no h necessidade de interface grfica a ser implementada
(Burnette, 2010).
Os Services geralmente consomem alto recurso de memria e CPU. O seu ciclo
de vida controlado pelo Sistema Operacional, mantendo assim a integridade da
execuo, somente sendo encerrado quando o Android precisa liberar recursos para o
seu funcionamento. Em tese, uma Thread faria papel similar ao Service, porm a
Thread poderia ser encerrada a qualquer momento pelo Sistema Operacional o que no
acontece com o servio, que tem como caracterstica ser controlado pelo Android
(Lecheta, 2010).
1.3.3 10.3.6. Content Providers
O Android oferece para os programadores algumas formas de armazenamento de
informaes tais como banco de dados, arquivos, e o sistema de preferncias. Porm
quando necessrio fazer uso de dados contidos em aplicaes distintas, nenhuma das
formas acima citadas se torna capaz de resolver o problema, pois no modelo de
segurana do Android cada aplicao tem o seu prprio diretrio. Logo para que haja
uma comunicao entre aplicativos foi criado o Content Provider (Provedor de
Contedos) (Burnette, 2010).
O Content Provider um conjunto de dados encontrados na API do Android
representada pela classe (android.content.ContentProvider). Tem como finalidade
tornar pblicas informaes para que todas as outras aplicaes instaladas no Android
possam fazer uso dos seus dados. Como exemplos de Content Providers nativos do
Android destaca-se o acesso aos contatos do celular, a visualizao de arquivos,
podendo eles serem acessados a partir de qualquer aplicativo (GOOGLE, 2011).
1.3.4 10.3.7. Intent
Comumente na utilizao de aplicativos necessrio fazer uso de algumas funes
fornecidas por aplicaes instaladas no aparelho ou pelo prprio Sistema Operacional.
Dentre elas, podem-se citar: consulta a agenda, ligao para um contato da agenda,
execuo de algum processo em segundo plano fazendo uso do Service, execuo do
browser. Para que seja possvel realizar todas estas funes, no SDK1 do Android
encontra-se a Intent, representada pela classe android.content.Intent.
A Intent representa a mensagem de uma aplicao enviada ao Sistema
Operacional e leva consigo informaes necessrias para que seja interceptada pelo
aplicativo de destino. Em um aplicativo, sempre que feito o uso necessria a
1
304
configurao do Intent Filter (Filtro de Intenes). possvel que alm de invoc-las, a
aplicao seja uma interceptadora de Intent's (Lecheta, 2010). Desta forma toda vez que
uma nova Intent iniciada, dependendo dos seus argumentos, poder ser interceptada
pelo aplicativo atravs de um Intent Filter.
1.4
Um projeto Android tem sua estrutura basicamente formada por quatro diretrios. A
estrutura bsica dos diretrios descritos abaixo segue o padro do plug-in do Android
disponvel para o Eclipse (Lecheta, 2010):
src/: nesta pasta esto contidos os cdigos fontes em Java, neles so feitos
modificaes que envolvem a parte de lgica e utilizao da API;
res/: nela encontram-se trs subpastas, layout, drawable, values, juntos so
responsveis por recursos como as imagens utilizadas no aplicativo, os arquivos
de layout e arquivos de internacionalizao.;
drawable/: na pasta drawable encontramos arquivos de imagens que so
compilados. H possibilidade de trs tipos de resoluo: alta (drawable-hdpi),
media (drawable-mdpi), baixa (drawable-ldpi);
gen/: Este diretrio tem a responsabilidade de fornecer uma comunicao entre
as pastas src/ e res/;
values/: a internacionalizao do aplicativo atravs da organizao dos textos da
aplicao em um nico arquivo (strings.xml), definio de cores (color.xml),
recursos que representam estilos (styles.xml).
Sabendo os principais diretrios de um projeto, destacam-se brevemente alguns
dos mais importantes arquivos de um projeto Android (Felker; Dobbs, 2011):
AndroidManifest.xml : mantm o controle de todas as necessidades da
aplicao. Nele esto contidas informaes como a API Level mnima suportada,
o nome do aplicativo Java, nome da(s) Activiti(es) e seus respectivos IntentFilter, alm de todas as permisses necessrias para o pleno funcionamento da
aplicao. Como exemplo de permisses pode-se citar: permission.INTERNET,
permission.BLUETOOTH, permission.VIBRATE;
Main.xml : nele so inseridas informaes necessrias para a definio dos
layout de interface grfico com o usurio;
R.java : tem o papel de fazer a comunicao entre as pastas /src e /res.
default.properties : contm informaes do projeto como por exemplo o
destino de compilao, utilizado em conjunto com o ADT (Android
Development Tools) e o Eclipse.
strings.xml : localizado no diretrio /res/values, contm valores strings que
sero utilizadas no projeto. til para a internacionalizao do aplicativo.
305
um projeto Android se torna importante para um resultado mais satisfatrio na
eficincia do aplicativo.
1.5
10.4.2. TextView
Elemento que mostra na tela informaes no formato texto, bem como possibilita a
conexo do texto com navegadores, aplicaes de e-mail, mapas etc., como ilustrado na
Figura 10.7.
306
1.7
10.4.3. EditText
Controle que lida com a entrada de texto. Como apresentado na Figura 10.8, o controle
EditText pode assumir vrias formas.
307
1.8
10.4.4. Spinner
O controle Spinner possibilita que a entrada do usurio seja limitada por um nmero
pr-definido de opes, como mostra a Figura 10.9.
308
309
1.9
310
1.10
311
1.11
10.4.8. Menus
312
313
1.13
A Google Maps API para a plataforma Android, atualmente na verso 4.0 API Level 15,
oferece diversos meios para o desenvolvimento de aplicativos Android integrados com
o Google Maps. Controle de zoom, modo de visualizao (rua ou satlite), manuseio
com coordenadas geogrficas (latitude e longitude) so algumas funcionalidades que
podem ser utilizadas com a API.
No contexto de aplicao utilizando a API Google Maps, destacam-se como
principais componentes:
314
O MapView um componente essencial, pois torna possvel a visualizao do
mapa de qualquer rea do mundo atravs do Google Maps. Mais precisamente, o
MapView a classe da API do Google Maps responsvel por mostrar o mapa na tela,
responder ao usurio eventos como toque ou controle de zoom e oferecer recursos como
sobreposio de imagens (ROGERS et al., 2009).
Os modos de exibio de mapas so definidos pelos mtodos
setStreetView(), setSatellite() e setTraffic(). possvel
alternar o mapa entre os modos exibio das ruas, exibio das ruas e condies de
trfego, e exibio do tipo satlite, como ilustrado na Figura 10.14.
Cada localidade em um mapa pode ser representada por um par latitude/longitude. Para
represent-las em um cdigo preciso utilizar a classe GeoPoint, que armazena o par de
informaes para indicar o endereo no MapView.
Os recursos oferecidos pela classe MapController so importantes para a
manipulao de algumas caractersticas do MapView, como, por exemplo, a
centralizao em um GeoPoint ou o controle de zoom.
Geralmente, em aplicaes utilizando mapas o usurio sentir a necessidade de
criar marcadores para identificar localidades, ou seja, estas imagens ou marcadores iro
sobrepor o mapa. Uma das melhores caractersticas da Google Maps API a
possibilidade de sobreposio de imagens sobre o MapView. A classe responsvel pela
funcionalidade em questo a Overlay (Merrifield,2011).
Atravs dos recursos da classe Overlay, possvel construir aplicaes que
oferecem a funo de criar marcadores, alm da possibilidade de tratar eventos como o
controle de toque delimitando os limites da imagem no MapView.
Utilizando a classe Overlay, a implementao necessria para identificar quando
o usurio toca ou clica em um Overlay requer um trabalho rduo e com baixa preciso
(Lecheta, 2010). Uma soluo eficaz pode ser encontrada no uso da classe
315
ItemizedOverlay. Dentre outros benefcios, esta classe, de maneira automtica, faz todo
o controle de clique nas imagens do aplicativo.
Em algumas situaes, pode ser necessrio ter conhecimento do local/endereo
de onde o dispositivo se encontra. Esta necessidade sanada pela Google Maps API
atravs das classes LocationProvider, Location, e LocationManager. A classe
LocationManager fornece servios de localizao capazes de obter atualizaes da
localizao geogrfica do aparelho atravs de intervalos regulares (GOOGLE, 2011).
Alm das classes de localizao, pode-se citar tambm a classe GeoCoder, que
capaz de realizar o processo de transformar uma coordenada, isto latitude/longitude,
em um endereo - Bairro, Rua, Avenida, CEP -, ou vice-versa. Vale ressaltar que a
quantidade de detalhes do resultado obtido atravs do GeoCoder varia de cada
endereo, obtendo assim, resultados com riqueza de detalhes distintas (GOOGLE,
2011).
10.6. Concluso
Caso queira criar um diferencial no mercado promissor de desenvolvimento de
aplicaes para dispositivos mveis, os profissionais de Engenharia de Software
necessitam compreender o contexto em que os usurios utilizam tais aplicaes, suas
necessidades e limitaes.
Este captulo apresenta os princpios que devem nortear o projeto de interface de
usurios para aplicaes que sero executadas em equipamentos mveis. Alm disso,
abordou-se a plataforma Android, uma das solues com maior grau de aceitao no
mercado e na academia para a criao destas aplicaes. Foram discutidos os
componentes de uma aplicao criada no Android, a arquitetura da plataforma, e os
componentes de interface de usurio destinados entrada e sada de dados.
316
NIELSEN, J. Usability engineering. University Cambridge. San Francisco. 1993.
NIELSEN, J. Defer Secondary Content When Writing for Mobile Users. 2011.
Disponvel em http://www.useit.com/alertbox/mobile-content.html.
OPEN HANDSET ALLIANCE. Open Handset Alliance. Open Handset Alliance, 2007.
Disponivel em: <http://www.openhandsetalliance.com>. Acesso em: 19 novembro
2011.
ROGERS, R. et al. Android Application Development. Sebastopol: RepKover, 2009.
WEISER, M. (1991). "The computer for the 21st century." Scientific American 265: 6675.
YAMABE, Tetsuo; TAKAHASHI, Kiyotaka; NAKAJIMA, Tatsuo. 2008. Design
issues and an empirical study in mobility oriented service development.
In Proceedings of the 1st workshop on Mobile middleware: embracing the personal
communication device (MobMid '08). ACM, New York, NY, USA