Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo
Com a finalidade solucionar problemas para dispositivos que contenham diferentes
tamanhos de telas e necessitem de reescrita de código, este artigo propõe um método para
a criação de interfaces adaptativas com foco na reutilização de código. Tal método tem
como objetivo criar uma única interface que seja aplicável em diversos dispositivos, por
meio de imagens e renderização em 2D, com base na plataforma Android. Um estudo de
caso também é apresentado para validação da proposta.
Introdução
Android como uma tecnologia promissora e com tantos os recursos disponíveis, atrai
desenvolvedores por suas diversas características. Estas serão apresentadas neste artigo, para
demonstrar vantagens e justificar a escolha consciente da tecnologia para dispositivos móveis
adotadas para este trabalho.
Segundo a revista Forturne3, a Google registra a venda de mais de 200 mil aparelhos
Android por dia e que a expectativa é de vender 25 milhões no ano de 2011 (WEINTRAUB,
2010). Neste cenário, a venda de smartphones que contêm esta plataforma se repete no Brasil.
Como padrão adotado por empresas do ramo, a versão Android 2.1 e 2.2, que historicamente
demonstra-se estável perante outras, é distribuída na maioria dos dispositivos vendidos.
Com este número exorbitante de vendas e a concorrência incessante das empresas do
ramo pela fatia de mercado, o consumidor desfruta da diversidade de produtos à venda que
contenha esta plataforma.
Cada empresa, com a esperança de aumentar suas vendas opta pelo design
diferenciado, hardware com maior poder de processamento, funcionalidades extravagantes.
No âmbito deste trabalho o principal ponto são as diversidades de telas que um
dispositivo pode conter, como exemplo, 3” (polegadas), 4”, 7” e até 10” para tabletes.
Com estes tamanhos de tela o desenvolvedor ao disponibilizar um software necessita
se preocupar em como o software será apresentado ao usuário, para não cair em um erro
comum de usabilidade. Por exemplo, uma tela 7” de um Galaxy Tab pode apresentar o
software ao usuário em uma resolução distorcida de imagem, pois o software foi preparado
1
Professor do CEUNSP; Especialista em Desenvolvimento para Web pela UFSCAR, São Carlos/SP.
2
Mestre em Ciência da Computação pela UFSCAR, São Carlos/SP.
3
Fortune, revista de pesquisa sobre negócios americana. http://money.cnn.com/magazines/fortune/
2
Android
Hoje, há 1,5 bilhão de televisores em uso ao redor do mundo. Um bilhão de pessoas
estão na Internet. Mas quase três bilhões de pessoas têm um telefone celular, tornando-o um
dos produtos de consumo do mundo de maior sucesso. Dessa forma, construir um aparelho
celular superior enriqueceria e melhoraria as vidas de inúmeras pessoas (OHA, 2011). Em um
contexto mundial, esta é a missão do Open Handset Alliance™, grupo formado pelas
empresas lideres de mercado em tecnologia móvel.
Como objetivo, o grupo tende a definir uma plataforma única e aberta para celulares
para deixar os consumidores mais satisfeitos com o produto final. Também criar uma
plataforma aberta e flexível para o desenvolvimento de aplicações coorporativas (LECHETA,
2010).
Segundo Dimarzio, esta aliança nasceu em novembro de 2007 para quebrar diversas
3
Contexto Histórico
Desde 1997 os celulares ainda não tinham se tornado multiuso, não tinham
ferramentas multifuncionais pessoais. Ninguém ainda via a necessidade de navegação na
Internet, tocar MP34, ou qualquer uma das muitas funções que estamos acostumados a usar
em um celular (DIMARZIO, 2008). No entanto, mesmo se a necessidade estava presente na
época, a falta de memória do dispositivo e capacidade de armazenamento era um obstáculo
ainda maior para superar, ou seja, os celulares até meados 2002 serviram apenas para executar
e receber chamadas, acompanhar seus contatos, e, eventualmente, enviar e receber mensagens
de texto curtas mensagens, pois até câmeras em celulares não eram comumente encontrados
nas mãos dos consumidores (DIMARZIO, 2008).
Ao decorrer dos anos, com evolução da tecnologia, principalmente na questão de
hardware superior aos existentes e tamanhos reduzidos, proporcionou a evolução tecnológica
de celulares.
Neste âmbito, os dispositivos móveis começaram a ganhar outras funções além da
chamada por voz e o envio de SMS e, por isso, foi necessário um avanço nos programas para
gerenciar as novas funções e até repensar completamente nos sistemas operacionais exististes
para estes.
Quanto mais recursos tecnológicos o dispositivo continha, maiores possibilidades
surgiam, em questões tecnológicas (CINDRAL, 2010) e financeiras. Como exemplo, a venda
de jogos para celulares.
De acordo com CINDRAL (2010), “um dos grandes avanços ocorreu com o
surgimento do Symbian, um SO mobile aberto. Adotado pela Nokia, o sistema permitiu que
milhares de desenvolvedores no mundo pudessem criar aplicativos baseado nos novos
recursos”.
Outros nomes como iOS, BlackBerryOS, além do Symbian, ganharam espaço no
mercado, e lideravam praticamente absolutos até a Google lançar seu próprio Sistema
4
MP3 - MPEG 1 Layer-3, padrão de arquivos digitais de áudio.
4
5
Android Market: loja virtual de aplicativos Android, onde se concentra o maior número de aplicativos
disponibilizados e é onde será realizado download gratuito ou compra de aplicativos.
6
Nielsen Company: empresa líder global em pesquisa de mercado, informações e ferramentas de análise.
6
Plataforma Android
A plataforma Android é um sistema operacional baseado em Java que é executado no
kernel 2.6 do Linux. O sistema é muito leve e com muitos recursos. Os aplicativos do Android
são desenvolvidos utilizando Java e podem ser portados com bastante facilidade. Android
também incluir aceleração 3D motor gráfico (baseado no suporte de hardware), suporte de
banco de dados alimentado por SQLite7, e um navegador web integrado (DIMARZIO, 2008).
O paradigma é Orientação a Objeto, baseados em XML, o layout da interface do usuário.
Em sua arquitetura, os aplicativos de terceiros, são executado com a mesma prioridade
com os que estão junto com o núcleo do sistema (CINDRAL,2011) dando flexibilidade ao
âmbito corporativo a executar e colocar suas aplicações. Além disso, cada aplicação é
executada dentro de seu próprio segmento.
Outro ponto pertinente é o recurso de acesso a qualquer parte que o sistema
operacional tenha acesso. Em outras palavras, se o desenvolvedor desejar criar um aplicativo
que faça a discagem, será possível; se desejar criar uma aplicação que utilize o GPS interno,
também terá acesso. O potencial para os desenvolvedores criarem aplicações dinâmicas e
integradas é enorme.
No topo de todos os recursos que estão disponíveis é a integração com aplicativos do
7
http://www.sqlite.org/
7
Framework de Aplicações
A arquitetura deste framework foi desenvolvida para simplificar a reutilização dos
componentes. Desta forma qualquer desenvolvedor pode construir um aplicativo e
disponibilizar suas “capacidades”, permitindo que elas sejam utilizadas por outros programas.
Segundo o GOOGLE (2007), “vale lembrar que o desenvolvedor tem acesso total à mesma
estrutura de APIs usada nos aplicativos centrais, podendo, desta forma, aproveitá-las
conforme achar”.
Bibliotecas
O sistema inclui um conjunto de bibliotecas usadas por diversos componentes do
Android (GOOGLE, 2007). Exemplos destas são:
• Bibliotecas de mídia: permitem trabalhar com arquivos como MPEG4, H.264,
MP3, AAC, AMR, JPG e PNG.
• Bibliotecas Gráficas: exibição de conteúdo tanto em 2D como em 3D.
• Biblioteca para acesso e suporte a Banco de Dados SQLite, banco de dados
relacional.
8
http://www.google.com/mobile/android/
8
Android Runtime
De acordo com o manual de referência, GOOGLE (2007), cada aplicação do Android
roda em seu próprio processo e cada processo é uma instância da máquina virtual Dalvik,
criada para que o dispositivo possa rodar múltiplas máquinas virtuais eficientemente. Os
arquivos são executados no formato Dalvik Executable (.dex) e são otimizados para consumo
de memória mínimo. Os arquivos são criados por um compilador Java, que converte o
resultado no formato .dex.
Kernel do Linux
Usando a versão do kernel Linux 2.6 para serviços essenciais do sistema, como
segurança, gerenciamento de memória, gerenciamento de processos, rede e drivers. O kernel
também funciona como uma camada de abstração entre o hardware do dispositivo e o resto do
conjunto de softwares que são desenvolvidos em paralelo (GOOGLE, 2007).
Ciclo de Vida
Um dos pontos chaves para o desenvolvimento de aplicativos Android é o ciclo de
Vida. Com este conceito é possível entender seu funcionamento e realizar alterações no que
for necessário.
O desenvolvedor não tem controle sobre as mudanças de estado de uma aplicação, isso
é responsabilidade do sistema operacional, no entanto, ele pode ser notificado quando um
estado está prestes a mudar através da chamada de um método on[Evento](). Sobrescrevendo
esses métodos na sua classe Activity, o Android vai executá-los no momento apropriado
(BURNETT, 2009). Uma visão geral sobre estes métodos é mostrada na Figura 5.
9
OpenGL - API multi-plataforma para escrever aplicações que produzem computação gráfica 2D e
3D desenvolvido pela Silicon Graphics Inc. (SGI) em 1992.
9
Interfaces Adaptativas
Diante do número vendas de dispositivos móveis já apresentados, diversidades
tecnológicas e designers diferenciados (WEINTRAUB, 2010), faz-se necessário a buscas de
tecnologias e pesquisas que versam sobre adaptação de interfaces para dispositivos móveis, ou
melhor, interfaces adaptativas (BARTH; SATAHSI, 2004).
Segundo ITO et. al. (2006), “As interfaces adaptativas se apresentam promissoras na
tentativa de superar os problemas atuais de complexidade na interação homem- computador.
Para melhorar esta interação, são necessárias interfaces que sejam capazes de se ajustar às
necessidades do usuário”.
Na área de interfaces adaptativas, há diversas pesquisas que exploram de diferentes
maneiras mecanismos que permitam a elas se adaptarem. Porém, cada qual leva em
consideração um tipo de ambiente. Abaixo segue alguns exemplos e que serviram de base
para este estudo.
Dynamically Generating Interfaces for Móbile and Embedded Systems (DIGYMES) é
uma arquitetura apresentada por CONINX, et. al. (2003). Através de um framework
desenvolvido, tem como objetivo de criação de design para tipos de dispositivos móveis.
Utilizando a separação entre as camadas lógica e de apresentação, técnicas de modelo de
desenvolvimento de interface do usuário, linguagens como eXtensible Markup Language
(XML), gerenciamento automático de layout e transparência de localização, contém falhas.
Uma destas é que não é possível garantir uma apresentação do visual agradável da interface
perante a migração da mesma entre dispositivos móveis e desktops.
10
MUSA - Multi User Interfaces Single Application, proposto por MENKHAUS (2002).
Da mesma forma que DIGYMES, tinha como objetivo a separação entre camadas e trabalhou
com diferentes técnicas, porém apresenta os mesmo problemas com relação a interfaces
adaptativas.
Neste contexto, houve diversas pesquisas nesta área, mas devido estabilidade das
tecnologias e facilidades dos frameworks, as pesquisas foram tendenciadas a relacionar outras
áreas. Exemplo disto são as pesquisas sobre as interfaces adaptativas relacionadas a não só
divergentes dispositivos, mas sim a adaptação conforme o perfil do usuário, modo de
operação do usuário entre outros pontos, onde foco é a usabilidade.
Já em 2007, como a ascensão da plataforma Android, o mercado e as pesquisas
voltaram a resgatar as formas de realizar interfaces adaptativas.
Como já mencionado, há diversas formas e ambientes a se referenciar em interfaces
adaptativas. Como exemplo, são interfaces adaptativas entre um desktop e dispositivos
móveis, interfaces que consideram a perfil do usuário e até pesquisas que referenciam
adaptações para pessoas como problemas visuais.
Este trabalho está limitado no âmbito da plataforma Android. O principal ponto é
desenvolver mecanismos de interface adaptativa especificas, onde se consiga atingir qualquer
aparelho que a use, seja ele celular ou tablete, independentemente de sua tela, processamento.
Renderização Gráfica
Android coloca duas das bibliotecas gráfica disponíveis em um dispositivo móvel: um
para gráficos bidimensionais (2D) e um para três dimensões (3D). (BURNETTE, 2009)
Renderização Gráfica 2D
Android fornece uma completa nativa biblioteca bidimensional de gráficos em seu
pacote android.graphics. Com uma compreensão básica de classes tais como cor e Canvas
(BURNETTE,2009).
As cores em são representadas com quatro números, um para cada alfa, vermelho,
verde e azul – ARGB (BURNETTE, 2009), onde alpha é uma medida de transparência. Cada
componente pode ter 256 possíveis valores, ou oito bits, por isso uma cor é normalmente em
um inteiro de 32 bits.
Exemplo em Java:
color = Color.argb(127, 255, 0, 255);
Exemplo através do XML:
11
Problemas de Renderização.
Todo aplicativo desenvolvido necessita de usabilidade na interface, ou seja, quando o
usuário olha para o sistema, necessita se sentir confortável em operá-lo, seja ele um sistema
corporativo, um site ou até um game.
Existe um vasto campo de pesquisa sobre questões de usabilidade, mas um ponto
importante dentro desta área é quando o desenvolvedor deseja criar jogos. O requinte de
resolução de vídeo, tamanho de tela, tamanho de imagem, operabilidade, som entre outros
pontos são importantes, principalmente para que o jogador se entretenha com aplicação por
um bom tempo.
Neste tipo de aplicação encontram problemas para com o trabalho em tamanhos de
imagens, resoluções e telas de dispositivos. Exemplo deste é criar interfaces gráficas
utilizando objetos, tamanhos e posicionamento estáticos. Ao criar uma aplicação para um
dispositivo especifico com tela de 3” é necessário o programador realizar ajustes e
redimensionamento de cada objeto caso queira disponibilizar uma aplicação para dispositivos
com telas de 5”.
Ficando praticamente inviável, por parte do programador, o controle de diversas
versões de software para modelos específicos de celulares. Limitando, assim, a publicação
12
Redimensionamento.
Para auxiliar nesta tarefa de redimensionamento e como proposta deste artigo, foi
criado e testado com vários projetos a classe Resize. Essa classe tem como objetivo o
redimensionamento ou o posicionamento dos objetos, com a finalidade de se adaptar para
diversas telas. Na Figura 6 é mostrada modelagem UML10 dessa classe.
10
UML - Unified Modeling Language é uma linguagem de modelagem padrão de uso geral no domínio
de orientação a objetos em engenharia de software.
13
circle.addCircle(redimensionar.positioning(150, Resize.Height),
redimensionar.positioning(150, Resize.Width),
redimensionar.positioning(100), Direction.CW);
/* redimensiona a imagem */
BufferedImage imagem = ImageIO.read(arquivo);
BufferedImage new_img = new BufferedImage(new_w, new_h, Buff-
eredImage.TYPE_INT_RGB);
Graphics2D g = new_img.createGraphics();
g.drawImage(imagem, 0, 0, new_w, new_h, null);
ImageIO.write(new_img, image.getExtensaoImagem(), arquivo);
Problemas do Redimensionamento.
Esta solução torna-se viável para aplicativos que não necessitem de constante
redimensiomento de imagem e que disponham de um maior espaço de armazenamento em
disco. Estas limitações se aplicam devido ao custo computacional de redimensionar uma de
imagens e de gravar em disco ou memória a imagem processada para ser utilizada pelo
aplicativo. Com exemplos destes podemos ressaltar o desenvolvimento jogos com cenários
ricos em 3D, necessitando diversas imagens e troca das mesmas constantemente.
Neste contexto aplica-se outro problema que é o tamanho padrão da imagem, ou seja,
ao criar a imagem será necessário gravá-la com maior resolução para atender os diversos
dispositivos, porém, o software ao final terá maior espaço em disco.
14
Galaxy SI I9003 CPU: 1Ghz Cortex A8 CPU, PowerVR SGX530, TI OMAP 3630 chipset.
11
Transferência de dados de um computador remoto para um computador ou dispositivo local.
12
GSM - conjunto de padrões desenvolvido, para descrever as tecnologias de redes de celulares digitais.
13
Tablet é um dispositivo eletrônico em formato de prancheta, que contém diversos aplicativos, versões e
sistemas operacionais.
14
Frames por segundo (fps) é a unidade de medida da cadência de um dispositivo audiovisual.
15
Referências Bibliográficas
BARTH, F. J.; SATAHSI, G. E., Uma arquitetura para criação de interfaces adaptativas para
televisão interativa. In: SIMPÓSIO BRASILEIRO SOBRE FATEORES HUMANOS EM
SISTEMAS COMPUTACIONAIS, 6., 2004, Curitiba. Anais do VI Simpósio sobre Fatores
Humanos em Sistemas Computacionais. Curitiba, UFPR, 2004. p. 15-20.
BURNETT, ED. Hello, Android: Introducing Google´s Mobile Development Plataform. Dal-
las, Texas. The Pragmatic Bookself, 2009.
CINDRAL, BELINE. Sistemas operacionais para celulares. 2011. Disponível em:
<http://www.techtudo.com.br/artigos/noticia/2011/01/afinal-o-que-e-android.html>. Acesso
em: 25 de maio de 2011.
CONINX, K.; LUYTEN, K.; VANDERVELPEN, C.; VAN DEN BERGH, J.; and
CREEMERS, B.; Dygimes: Dynamically Generating Interfaces for Mobile Computing De-
vices and Embedded Systems. In Chittaro, L., volume 2795 of Lecture Notes in Computer
Science, Springer, 2003. p. 256-270.
DIMARZIO, JEROME F.; Android: A programmer's Guide, New York. McGrawHill E-Book,
16
2008.
GOOGLE INC. Dev Guide. Documento eletrônico, Abril de 2007. Disponível em:
<http://developer.android.com/guide/topics/fundamentals.html>. Acesso em 04 de agosto de
2011.
GOOGLE INC. Dev Guide. Documento eletrônico, Julho. Disponível em:
<http://developer.android.com/sdk/android-3.2.html>. Acessado em: 31 de Julho de 2011.
GRUMAN, GALEN. Windows Phone 7: Don't bother with this disaster. 2010. Disponível em:
<http://www.infoworld.com/d/mobilize/windows-phone-7-dont-bother-disaster-211?page=0,0
> Acesso em: 30 de julho de 2011.
ITO, G. C.; FERREIRA, M. G.; SANT’ANNA, NILSON. Uma ferramenta para geração de
interfaces adaptativas. Instituto Nacional de Pesquisas Espaciais. ISBN: 972-8924 20-8, 2006.
LECHETA, RICARDO R. Google Android: Aprenda a criar aplicações para dispositivos
móveis com Android SDK. 2° Edição. São Paulo. Novatec Editora, 2010.
MCQUEEN, ROD; BALSILLIE, JIM; LAZARIDIS, MIKE.BLACKBERRY. Inside Story of
Research in Motion. New York. H.B. Fenn & Company, 2010.
MENKHAUS, GUIDO .Adaptive User Interface Generation in a Mobile Computing Envi-
ronment. Tese de PhD, University of Salzburg, Austria, 2002.
NILSEN COMPANY. Apple Leads Smartphone Race, while Android Attracts Most Recent
Customers. Disponível em: <http://blog.nielsen.com/nielsenwire/online_mobile/ apple-leads-
smartphone-race-while-android-attracts-most-recent-customers/>. Acesso em: 30 de julho de
2011.
OHA et al. Building a Better phone for consumers. 2011. Disponível em:
<http://www.openhandsetalliance.com/oha_overview.html>. Acesso em: 15 maio. 2011.
PEREIRA, LÚCIO CAMILO OLIVA; SILVA, MICHEL LOURENÇO. Android para desen-
volvedores. Rio de Janeiro. Brasport. 2009.
WAUTERS, ROBIN. There are now more free apps for Android than for the iphone: Distimo.
Disponível em: <http://techcrunch.com/2011/04/27/there-are-now-more-free-apps-for-
android-than-for-the-ios-platform-distimo/>. Acesso em: 30 de julho de 2011.
WEINTRAUB, SETH. Has Android's growth slowed down?. Documento eletrônico, Dezem-
bro de 2010. Disponível em <http://tech.fortune.cnn.com/2010/12/06/has-android-stopped-
growing/> Acessado em 02 de abril de 2011.
YAROW, JAY; ANGELOVA, KAMELIA. CHART OF THE DAY: Android Used By More
Developers Than Apple. Disponível em: <http://www.businessinsider.com/chart-of-the-day-
platforms-most-used-by-mobile-developers-in-early-2010-2010-
7?utm_source=Triggermail&utm_medium=email&utm_campaign=SAI_COTD_070610>.
Acesso em: 30 de julho de 2011.