Monografia v16 - corrigida
-
Author
carlosabqf3182 -
Category
Documents
-
view
185 -
download
71
Embed Size (px)
Transcript of Monografia v16 - corrigida

UNIVERSIDADE FEDERAL DO CEARÁ
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIAS DA INFORMAÇÃO
CARLOS ALBERTO BATISTA DE QUEIROZ FILHO
UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM
SISTEMA UBÍQUO
FORTALEZA
2010

CARLOS ALBERTO BATISTA DE QUEIROZ FILHO
UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM
SISTEMA UBÍQUO
Monografia submetida à Coordenação
do Curso de Pós-Graduação em
Tecnologias da Informação, da
Universidade Federal do Ceará, como
requisito parcial para obtenção do
grau de Especialista em Tecnologias
da Informação.
Área de Concentração:
Desenvolvimento de Sistemas Web
Orientador: Prof. Dr. Windson Viana
de Carvalho

CARLOS ALBERTO BATISTA DE QUEIROZ FILHO
UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM
SISTEMA UBÍQUO
Monografia submetida à Coordenação do Curso de Pós-Graduação em
Tecnologias da Informação, da Universidade Federal do Ceará, como requisito parcial para
obtenção do grau de Especialista em Tecnologias da Informação Área de concentração
Desenvolvimento de Sistemas Web.
Aprovada em ____/ ____/______
BANCA EXAMINADORA
_________________________________________________________
Prof. Windson Viana de Carvalho, Dr. (Orientador)
Universidade Federal do Ceará – UFC
_________________________________________________________
Prof. José Maria da Silva Monteiro Filho, Dr.
Universidade Federal do Ceará – UFC
_________________________________________________________
Profª. Rossana Maria de Castro Andrade, Dra.
Universidade Federal do Ceará – UFC

Aos meus pais Carlos e Maria Olidenora,
Às minhas irmãs Ana Paula, Debora e Larissa,
e à minha amada companheira Juliana.

AGRADECIMENTOS
Agradeço à minha mãe, mulher de amor e força, que tanto me educou e demonstrou
como vencer dificuldades. Ao meu pai, por suas histórias e preocupações, pois sem elas não
seria o homem que me tornei. Às minhas lindas irmãs Ana Paula, Debora e Larissa pelo
carinho e paciência.
Agradeço a minha amada Juliana por ser sempre companheira e incentivadora. Por
acreditar que o mundo pode ser melhor e mostrar-me que todo trabalho deve ser feito em prol
disso. Agradeço também à família Nogueira/Avelar por todo o carinho e torcida.
A todos os meus amigos do ―Rait‖ pelas alegrias vividas nestes últimos seis anos.
Aos meus amigos/irmãos do colégio Nossa Senhora das Graças, por seu amor e alegria
que ajudaram nessa caminhada.
Aos novos e bons amigos do Grupo de Redes de Computadores, Engenharia de
Software e Sistemas – GREat – que tanto deram força para realização desta pesquisa. Ao
Lincoln Rocha que indicou diversas leituras importantes da área e aos amigos do projeto LG,
Alberto e Bruno Sabóia, pela motivação.
Aos professores do curso de Especialização em Tecnologias da Informação, que
ajudaram na formação de profissionais capazes de vencer no mercado de trabalho. Foram
muito mais do que educadores. Em especial ao professor José Maria por toda sua dedicação e
atenção ao curso e seus alunos, o jeito amigo de se conduzir ao aprendizado.
Ao GREat, em especial a professora Rossana Andrade, pelo incentivo à formação
acadêmica, pelas várias oportunidades de crescimento profissional e pelo auxílio financeiro
nos custos desse curso. Por proporcionar um ambiente agradável, produtivo e com todo
aparato necessário para o desenvolvimento desta pesquisa e de muitas outras que virão.
Ao meu orientador professor Windson Viana, que muito ajudou desde a concepção da
ideia desta pesquisa. Acompanhou de forma exemplar todo o desenvolvimento deste trabalho.
Além disso, demonstrou inumeráveis qualidades que um bom professor/pesquisador precisa
ter. Foi não só orientador, mas sim um bom amigo.

A Universidade Federal do Ceará, pelo espaço de aprendizagem e suporte ao curso de
especialização.
A todos que não nomeei, não por esquecimento ou desatenção, mas porque sabem que
a minha gratidão será eterna.

RESUMO
A utilização de código de barras já é fortemente explorada no mundo todo, para os mais
diversos fins. Esses códigos estão presentes no cotidiano das pessoas de tal forma que já
quase não se percebe a sua existência. O termo ―ubíquo‖ expressa essa ideia de algo que está
em toda parte e em todos os momentos. Esse termo define hoje também um novo domínio de
pesquisa, a Computação Ubíqua, no qual, dispositivos estão imersos no ambiente tornando o
acesso a informação ubíquo. Neste trabalho, são apresentados os principais conceitos
relacionados à Computação Ubíqua e é feita uma análise da aderência do uso dos códigos de
barras nestes tipos de aplicações. Além disso, são apresentados os principais tipos de código
de barras existentes e uma comparação é realizada para determinar qual o tipo que mais se
adéqua para o uso em aplicações ubíquas. Ao final, é proposto um estudo de caso: a aplicação
móvel DFind. Esta é uma aplicação móvel e sensível ao contexto para Android que faz uso
de símbolos QR Code para fornecer informações relacionadas à localização.
PALAVRAS-CHAVE: Código de barras, QR code, Ubiquidade, Dispositivos móveis.

ABSTRACT
The use of barcode is already heavily exploited worldwide for several purposes. These codes
are present in our daily life in a way that we almost do not realize its existence. The term
"ubiquitous" expresses this idea of something that is everywhere and every time. This term
also defines a new research domain, Ubiquitous Computing, in which devices are immersed in
the environment providing ubiquitous access to information. In this work, we present the main
concepts related to this research domain and we propose an analysis of the use of barcodes on
these types of applications. Also, it is presented the main barcode technologies and a
comparison is performed in order to determine which type fits most for the use in the
development of ubiquitous applications. At the end, it is proposed a case study: the DFind
mobile application. This Android software is a mobile and context-aware application which
makes use of QR Code in order to provide location-based information.
KEYWORDS: Bar code, QR code, Ubiquity, Mobile devices.

LISTA DE FIGURAS
Figura 1 – Representação dos códigos criada por Silver e Woodland. ...................................... 5
Figura 2 – Princípio de funcionamento da visão. ....................................................................... 6
Figura 3 – Funcionamento dos leitores de códigos de barras a laser. ........................................ 7
Figura 4 - Exemplo de código UPC-A ....................................................................................... 8
Figura 5 - Exemplo de código UPC-E. ....................................................................................... 9
Figura 6 - Exemplo de código EAN-13 .................................................................................... 10
Figura 7 - Exemplo de Código EAN Bookland e ISBN ........................................................... 10
Figura 8 - Exemplo de código de barras 2 de 5 intercalados. ................................................... 11
Figura 9 - Tabela de caracteres no código 39 ........................................................................... 12
Figura 10 - Exemplo de código 39 ........................................................................................... 13
Figura 11 - Exemplo de Código 128 em um DANFE. ............................................................. 14
Figura 12 - Exemplo de código de barras magnético CMC7. .................................................. 14
Figura 13 - Exemplo de utilização do código PDF-417 em documentos oficiais americanos. 15
Figura 14 - Exemplo de Data Matrix com destaque aos elementos estruturais. ....................... 17
Figura 15 - Elementos estruturais de um símbolo QR code. .................................................... 18
Figura 16 – Fluxograma de um algoritmo de leitura de um QR code. ..................................... 20
Figura 17 - Exemplo de uso do VCode .................................................................................... 24
Figura 18 - Cenário sensível ao contexto para a HELLO......................................................... 26
Figura 19 – Modelo de Tickets Eletrônicos baseados em QR codes. ....................................... 27
Figura 20 - Exemplo de uso do código Datamatrix em placas de circuitos eletrônicos ........... 28
Figura 21 - Visão geral de funcionamento do sistema proposto. ............................................. 29
Figura 22 - Exemplo de aplicação que faz a comparação de preços de um produto. ............... 30
Figura 23 - Proposta de QR code contextuais .......................................................................... 31

Figura 24 - Exemplo de uma aplicação que faz uso da biblioteca Open Source QR Code
Library .............................................................................................................................. 34
Figura 25 - Exemplos de uso da biblioteca em .NET Windows e Windows Mobile. .............. 35
Figura 26 - Exemplo de QR Code com a palavra ―teste‖ gerado através de requisição HTTP.
.......................................................................................................................................... 36
Figura 27 - Arquitetura do sistema operacional Android (GOOGLE INC., 2010). ................. 40
Figura 28 - Diagrama de casos de uso da aplicação proposta. ................................................. 42
Figura 29 - Fluxo básico da aplicação DFind. .......................................................................... 44
Figura 30 - Diagrama de Classes com as principais classes do componente de leitura. .......... 45
Figura 31 - Diagrama de Classes com as principais classes da aplicação DFind. .................... 45
Figura 32 - Diagrama de Sequências para um dos fluxos principais da aplicação. .................. 46
Figura 33 – Sequencia de telas do DFind capturadas durante o processo de localização indoor
.......................................................................................................................................... 47
Figura 34 - Sequencia de telas do DFind capturadas durante o processo de localização outdoor
.......................................................................................................................................... 48

LISTA DE TABELAS
Tabela 1 - Comparativo entre os códigos de barras apresentados no capítulo 1. ..................... 21

SUMÁRIO
CAPÍTULO 1 - INTRODUÇÃO .............................................................................................................1
CAPÍTULO 2 - TECNOLOGIAS DE CÓDIGOS DE BARRAS ............................................................4
2.1 CÓDIGOS DE BARRAS ..................................................................................................... 4
2.2 CÓDIGOS DE BARRAS UNIDIMENSIONAIS ....................................................................... 7 2.2.1. Universal Product Code – UPC-A ............................................................................... 7
2.2.2. Universal Product Code – UPC-E ............................................................................... 9
2.2.3. International Article Number – EAN-13 ...................................................................... 9
2.2.4. Código de barras 2 de 5 intercalados ...................................................................... 11
2.2.5. Código de barras 39 .............................................................................................. 11
2.2.6. Código de barras 128 ............................................................................................. 13
2.2.7. Código CMC7 ......................................................................................................... 14
2.3 CÓDIGOS DE BARRAS BIDIMENSIONAIS ........................................................................ 14 2.3.1. Código PDF-417 ..................................................................................................... 15
2.3.2. Código Data Matrix ................................................................................................ 16
2.3.3. Código “QR Code” ................................................................................................. 17
2.4 UTILIZAÇÃO DE CÓDIGOS 2D EM DISPOSITIVOS MÓVEIS .............................................. 18 2.4.1. Introdução ............................................................................................................ 18
2.4.2. Algoritmo de Leitura .............................................................................................. 19
2.5 CONCLUSÃO ................................................................................................................. 21
CAPÍTULO 3 - UBIQUIDADE DOS CÓDIGOS E SUAS APLICAÇÕES .......................................... 22
3.1 UBIQUIDADE E CÓDIGOS DE BARRAS 2D ...................................................................... 22
3.2 NOVAS APLICAÇÕES PARA OS CÓDIGOS DE BARRAS ..................................................... 24 3.2.1. Aplicações Cross-media .......................................................................................... 24
3.2.2. Aplicações de Mobile Learning ................................................................................ 25
3.2.3. Aplicações de Segurança ........................................................................................ 26
3.2.4. Aplicações Industriais............................................................................................. 27
3.2.5. Aplicações de Acessibilidade ................................................................................... 28
3.2.6. Aplicações Comerciais e de Marketing ..................................................................... 29
3.2.7. QR Codes Sensíveis ao Contexto ............................................................................. 30
3.3 CONCLUSÃO ................................................................................................................. 31
CAPÍTULO 4 - FERRAMENTAS PARA O DESENVOLVIMENTO DE APLICAÇÕES MÓVEIS QUE USAM QR CODES ................................................................................................................................ 33
4.1 INTRODUÇÃO ............................................................................................................... 33
4.2 OPEN SOURCE QR CODE LIBRARY ................................................................................. 34
4.3 GOOGLE CHART API ..................................................................................................... 35
4.4 BIBLIOTECA LIBQRENCONDE ........................................................................................ 36
4.5 PEAR IMAGE_QRCODE .................................................................................................. 36

4.6 BIBLIOTECA ZXING ....................................................................................................... 37
4.7 CONCLUSÃO ................................................................................................................. 38
CAPÍTULO 5 - DFIND: UM SISTEMA UBÍQUO PARA LOCALIZAÇÃO INDOOR E OUTDOOR BASEADO EM QR CODES .................................................................................................................. 39
5.1 A PLATAFORMA ANDROID ............................................................................................. 39
5.2 ESTUDO DE CASO ......................................................................................................... 41 5.2.1. Avant-Propos ......................................................................................................... 41
5.2.2. Aplicação móvel desenvolvida (DFind) ..................................................................... 42
5.3 CONCLUSÃO ................................................................................................................. 49
CONCLUSÃO ....................................................................................................................................... 50
REFERÊNCIAS BIBLIOGRÁFICAS..................................................................................................... 52

CAPÍTULO 1 - INTRODUÇÃO
No começo da década de 1950, as tecnologias de códigos de barras começaram a evoluir e
apontaram avanços em vários ramos de mercado. Naquela época, os processos de controle de
mercadorias envolviam muitas operações estritamente manuais. Nos supermercados em geral
a venda de produtos exigia que os caixas digitassem nos seus terminais de venda os valores
cobrados a cada produto adicionado no carrinho do cliente. Esse processo envolvia ainda
outras atividades essenciais como, por exemplo, a marcação dos preços nos produtos através
de etiquetas adesivas.
Detectou-se diversos pontos de falha nesse tipo de processo. Isso motivou o
desenvolvimento de tecnologias para auxiliar na automatização de algumas atividades. A
tecnologia de códigos de barras foi uma destas soluções propostas para resolver os problemas
relacionados à venda em varejo. Essa tecnologia permitiu a automatização de processos, uma
maior precisão na identificação de produtos, a redução de custos e uma maior agilidade nos
processos.
Atualmente, por conta das vantagens na utilização dos códigos de barra, pode se
encontrar esses códigos nos mais variados produtos. A tecnologia que fora desenvolvida para
resolver os problemas das vendas em varejo conseguiu, de fato, trazer soluções aos vários
pontos de falhas que existiam antes da utilização desses códigos. Além disso, essa tecnologia
é usada hoje não só em supermercados, mas também nas indústrias facilitando o controle de
sua produção, na emissão de boletos de pagamentos bancários, no controle de cargas nas
empresas de transportes, em sistemas de controle de acesso, etc.
Entretanto, a utilização dos códigos de barras ainda induz inconvenientes. A leitura
desses códigos requer a utilização de equipamentos desenvolvidos especificamente para esse
fim, o que traz um certo ônus para o uso da tecnologia. Além disso, alguns desses códigos têm
forte limitação quanto ao volume de informação a ser codificada. Problemas de leitura podem
ocorrer, pois, tradicionalmente, esses códigos não oferecem mecanismos de correção de erro.

2
Além dos problemas já mencionados, o uso de códigos de barras para identificação de
produtos a serem comercializados pode exigir regulamentação junto a alguma empresa que
gerencie o uso desses códigos, garantindo o seu funcionamento em uma região.
Códigos de Barras em duas dimensões (2D) foram criados para tentar enfrentar algumas
das dificuldades dos códigos de barras tradicionais, códigos ditos de uma dimensão (1D). O
princípio de funcionamento desses códigos é semelhante aos dos códigos de barras
tradicionais, sendo que os códigos 2D codificam as informações em barras sobrepostas
verticalmente. As melhorias adicionadas aos códigos de barras 2D permitiram o aumento da
capacidade de armazenamento, já que não se teriam mais apenas barras horizontais, mas sim
informações codificadas na horizontal e vertical. Mecanismos de correção de erro foram
adicionados aos códigos. Além disso, para alguns desses novos códigos 2D, não se faz mais
necessário a utilização de dispositivos específicos para leitura dos códigos e não há mais a
necessidade de intervenção de uma organização reguladora.
O paradigma da computação ubíqua idealizado por Mark Weiser pode ser entendido
como uma computação distribuída realizada por dispositivos que atuam de forma discreta nos
ambientes em que estão inseridos, fornecendo informações a qualquer momento e em todo
lugar. Apesar do conceito de computação ubíqua ter sido apresentado de forma simples a
construção e implantação de aplicações ubíquas é geralmente envolvida por vários desafios.
Um dos requisitos desafiadores para esse tipo de aplicação é o sensoriamento e obtenção dos
dados a serem processados. Esse requisito é bastante comum em aplicações desse domínio e
envolve custos que podem inviabilizar o seu desenvolvimento e utilização. Em geral nas
aplicações ubíquas as funções de sensoriamento são realizadas através do uso de sensores sem
fio, tags de rádio frequência (RFID) ou mesmo através de outros sistemas de coletas de dados,
que são tecnologias ainda muito caras.
Os códigos 2D vêm sendo utilizados cada vez mais e têm permitido a criação de novas
formas de utilização que antes não eram possíveis. Dentre os códigos de barras, o QR Code é
o que mais se destaca. Esse código possui várias vantagens em relação aos demais códigos
existentes, sendo o que comporta maior quantidade de dados, permite correção de erros em
vários níveis, pode ser impresso a um baixo custo, possui flexibilidade quanto ao tamanho de
impressão e um baixíssimo tempo de decodificação.

3
Analisadas as características vantajosas dos QR codes, pode-se propor o seu uso no
desenvolvimento de aplicações ubíquas. Esses códigos podem ser implantados a um baixo
custo em relação às soluções comumente usadas, por exemplo, nas funções de sensoriamento
e descoberta de informações.
O objetivo geral deste trabalho é documentar um estudo sobre as tecnologias de
códigos barras e suas aplicações, buscando delinear novas formas de utilização desses
códigos. Além disso, permitir aos leitores uma compreensão sólida do assunto.
Como objetivos específicos esperam-se: explorar e documentar as principais
tecnologias de códigos de barras existentes, fazer um levantamento sobre o estado da arte,
analisar a característica de ubiquidade identificada nas tecnologias de códigos de barras 2D e
realizar o desenvolvimento de uma aplicação móvel que faça uso de uma das principais
tecnologias de codificação em 2D.
No Capítulo 1, são explorados os diversos tipos de códigos de barras existentes e
detalhadas as características específicas de cada um deles. É também estudada a utilização de
códigos 2D por dispositivos móveis.
No Capítulo 2, é discutido o caráter pervasivo dos códigos de barras em relação aos
conceitos de ubiquidade. Novas propostas de utilização dos códigos 2D em cenários ubíquos
são expostas.
No Capítulo 3, são apresentadas as principais tecnologias envolvidas no
desenvolvimento de aplicações que utilizam códigos de barras 2D para plataformas desktop,
Web e dispositivos móveis.
No Capítulo 4, é apresentado um experimento de desenvolvimento de uma aplicação
móvel que utiliza códigos 2D para localização, em especial a localização indoor suprindo as
debilidades dos GPS nesses cenários.
Por fim, serão apresentadas as conclusões e delineados os trabalhos a serem
desenvolvidos no futuro.

4
CAPÍTULO 2 - TECNOLOGIAS DE CÓDIGOS DE BARRAS
Diversos tipos de códigos de barras foram desenvolvidos desde a criação desta
tecnologia. Neste capítulo, apresenta-se o contexto histórico da criação desta tecnologia e os
principais tipos de códigos existentes delineando-se as características específicas de cada um
deles. Ao final, um estudo da utilização dos códigos 2D em dispositivos móveis é descrito.
2.1 Códigos de Barras
Em 1948, Bernard Silver e Norman Joseph Woodland, motivados pela solicitação do
presidente de uma organização norte-americana da rede alimentícia em desenvolver um
sistema que permitisse ler as informações de um produto no momento da compra, criaram a
primeira solução utilizando tintas ultravioletas. No entanto, essa solução não se demonstrou
eficaz, pois a tinta usada desvanecia e tinha custo elevado1. Esses dois estudantes, na época,
inspirados pelo código Morse, imaginaram que poderiam representar as informações dos
produtos na forma de barras estreitas e barras largas. Isso levou a criação de uma patente
(WOODLAND e SILVER, 1952), que documentava a forma de codificação das informações
dos produtos em barras horizontais ou na forma circular, tal qual ilustrado na Figura 1. Essa
patente levaria, mais tarde, ao desenvolvimento e popularização dos códigos de barras.
1 Barcode. Wikipedia. Disponivel em: <http://en.wikipedia.org/wiki/Barcode>. Acesso em: 07 out. 2010.

5
Figura 1 – Representação dos códigos criada por Silver e Woodland. Adaptado de (WOODLAND e
SILVER, 1952).
Historicamente, outras iniciativas semelhantes foram observadas, com exemplo se
pode mencionar o trabalho de David Collins em tentar criar uma solução para identificação
automática dos vagões na via férrea da Pensilvânia2.
Nos Estados Unidos em 1969, empresas de distribuição de alimentos formaram uma
associação, mais tarde conhecido como Uniform Code Council (UCC) ou GS1 USTM
, e
decidiram procurar estabelecer um padrão de códigos interindustriais (Interindustry Product
Code). Após quatro anos de pesquisa e discussões entre os associados, criou-se o código UPC
– Universal Product Code. Em 1974, entraria para a história a primeira compra utilizando o
UPC (UNIFORM CODE COUNCIL - GS1 US).
Segundo estimativas da GS1 USTM
, em todo planeta são lidos diariamente pelo menos
5 bilhões de códigos de barras (UNIFORM CODE COUNCIL - GS1 US).
Para tornar possível a utilização dos códigos de barras, precisava-se de um dispositivo
que pudesse capturar as informações dos códigos, decodificá-las e transmiti-las para outro
dispositivo (e.g. um computador). O princípio de funcionamento dos leitores de códigos de
barras, dispositivos que realizam as tarefas necessárias já mencionadas, se assemelha a forma
como conseguimos enxergar os objetos. O processo de leitura das barras utiliza-se também
das propriedades de reflexão e refração da luz. A Figura 2 ilustra o princípio de
funcionamento da visão humana, onde os raios de luz refletidos nos objetos chegam até os
olhos e permitem a formação da imagem no cérebro.
2 Barcode. Wikipedia. Disponível em: <http://en.wikipedia.org/wiki/Barcode>. Acesso em: 07 out. 2010.

6
Figura 2 – Princípio de funcionamento da visão (Fonte: http://12dimensao.wordpress.com/tag/ciencia-
e-tecnologia/, acessado em 14/10/2010).
Nos leitores de códigos de barras tradicionais, um laser3 é usado para emissão de um feixe luz
que será direcionado a um código de barras impresso. As propriedades de reflexão e refração
da luz garantem que os raios incidentes nas barras pretas e brancas do código impresso
tenham comportamento diferente e possam ser capturados por um diodo sensível a luz. As
oscilações capturadas pelo fotodiodo são utilizadas para gerar uma representação digital do
código lido. Curiosamente, o feixe emitido pelo laser tem ,a olho nu, a forma de uma linha.
No entanto, isso não é verdade. Os raios são emitidos sequencialmente com um pequeno
deslocamento horizontal a uma velocidade muito alta, formando uma ilusão óptica de uma
linha (BARBOSA NETO e CAMPOS, 2008). A Figura 3 ilustra o processo descrito.
3 Laser é acrônimo para Light Amplification by Stimulated Emission of Radiation, uma tecnologia que permite a
emissão de feixes de luz concentrados a partir de diodos.

7
Figura 3 – Funcionamento dos leitores de códigos de barras a laser (BARBOSA NETO e CAMPOS,
2008).
Além da leitura utilizando-se laser, criaram-se outras técnicas para captura e
decodificação de códigos em imagens e vídeos (LIU, DOERMANN e LI, 2008) (LIU, YANG
e LIU, 2008). Essas novas técnicas permitiram o surgimento de diversos tipos de aplicações, a
serem descritas nos capítulos seguintes deste trabalho.
2.2 Códigos de barras unidimensionais
Nesta subseção, são apresentados alguns dos códigos de barras 1D mais utilizados no
mundo. São detalhadas suas principais características, vantagens e desvantagens.
2.2.1. Universal Product Code – UPC-A
Este código é usado em aplicações de varejo nos Estados Unidos e Canadá. A utilização
desse código é regulada pela empresa GS1 US4. O registro de uma empresa que precise de até
100 códigos de barras, faixa de números únicos, custa pelo menos 760 dólares/ano5. A GS1
possuí filiais representantes em diversos países, inclusive no Brasil, e os custos de registro
podem variar. Outra opção para obter um código UPC-A único é através de empresas já
registradas na GS1 US que revendem o serviço, alternativa mais barata para um número
pequeno de códigos.
4 Informações sobre a organização podem ser encontradas no website: http://www.gs1us.org/ .
5 Informações obtidas através do endereço eletrônico:
http://www.gs1us.org/barcodes_and_ecom/solutions/barcode_%28u.p.c.%29 .

8
Percebe-se que o controle sobre o uso do UPC-A trás vantagens e desvantagens. As
desvantagens são claras: existe a limitação de códigos e o seu custo financeiro. Entretanto,
essa regulação do uso foi o que permitiu a esse código a larga utilização no varejo, já que o
conflito de se ter dois produtos diferentes com o mesmo código é garantidamente evitado.
O UPC-A permite a codificação de até 12 dígitos decimais, sendo cada um deles
representados por sete bits. Além disso, em cada código existem marcações de início, meio e
fim, onde as duas primeiras seguem o padrão de bit 101 e a última 01010. Portanto, cada
código possuí 95 bits.
A ordem dos números codificados também segue uma regra semântica, onde o primeiro
dígito identifica a categoria do produto, os cinco dígitos seguintes identificam o fabricante do
produto seguidos de mais cinco dígitos para identificação do produto. O último dígito é
reservado para guardar informação de verificação do código6. A Figura 4 mostra um exemplo
de código de barra UPC-A, ilustrando a codificação em sete bits de cada dígito e destacando
as barras de guarda de início, meio e fim do código.
Figura 4 - Exemplo de código UPC-A. (Fonte: http://en.wikipedia.org/wiki/Universal_Product_Code ,
acessado em 14/10/2010)
Outra característica importante deste código é a sua limitação de tamanho, pois ele,
nominalmente, tem uma polegada de largura, podendo ser reduzida em até 80% ou aumentada
em 200% sem prejuízo para leitura6.
6 Universal Product Code. Wikipedia. Disponivel em: <http://en.wikipedia.org/wiki/Universal_Product_Code>.
Acesso em: 14 out. 2010.

9
Além das características já mencionadas sobre esse código, é importante adicionar que
ele está especificado na norma ISO/IEC 15420. Essa norma especifica os códigos UPC e
EAN, este segundo é detalhado no subtópico seguinte.
2.2.2. Universal Product Code – UPC-E
O UPC-E é uma das variantes do UPC. Essa variante tem como principais
características o número reduzido de dígitos, contendo apenas oito dígitos, e tamanho de
impressão menor do que a forma tradicional do UPC-A(MEASUREMENT EQUIPMENT
CORPORATION).
Essa variante do UPC-A utiliza-se de técnicas de supressão de zeros para diminuir o
número de dígitos necessários para identificar algum artefato. Esses códigos são utilizados
para identificação de itens pequenos, já que é possível ter-se códigos menores (ver Figura 5).
Figura 5 - Exemplo de código UPC-E (MEASUREMENT EQUIPMENT CORPORATION).
2.2.3. International Article Number – EAN-13
O código EAN-13, versão europeia do UPC, recebeu essa sigla por ser acrônimo de
European Article Number. Apesar do nome do código ter sido alterado para International
Article Number, manteve-se a sigla7.
Esse código também é usado mundialmente, principalmente, na identificação de
produtos de vendas no varejo. A principal diferença entre o EAN-13 e o UPC-A é o número
de dígitos em cada código impresso. O EAN possui 13 dígitos enquanto o UPC, como já
mencionado anteriormente, possui apenas 12.
Os dígitos codificados em um código EAN-13 seguem uma estrutura padrão, dividida
em quatro grupos. Os três primeiros dígitos identificam o país de origem do produto, os
quatro dígitos seguintes identifica a organização filiada a GS1, os cinco dígitos seguintes
7 European Article Number. Wikipedia. Disponivel em:
<http://en.wikipedia.org/wiki/European_Article_Number>. Acesso em: 15 out. 2010.

10
identificam o produto e o último dígito é reservado para ter função de dígito de verificação8.
A Figura 6 ilustra um exemplo de código EAN-13, destacando a função de cada grupo de
dígitos codificados (o código 789 identifica o Brasil).
Figura 6 - Exemplo de código EAN-13. (Fonte:
http://www.devmedia.com.br/articles/viewcomp.asp?comp=13396 , acessado em 15/10/2010)
Assim como o UPC, o código EAN possui algumas variantes. Uma delas é o EAN-8
que tem propósito semelhante ao UPC-E, ser utilizado em objetos que tem espaço muito
limitado para identificação.
Outra variante desse código é o EAN Bookland que tem uma característica de uso
especial, codificam o ISBN9 de publicações (ver exemplo na Figura 7).
Figura 7 - Exemplo de Código EAN Bookland e ISBN.
(Fonte:http://github.com/papercavalier/bookland , acessado em 15/10/2010 )
8 EAN-13. Wikipedia. Disponivel em: <http://pt.wikipedia.org/wiki/EAN-13>. Acesso em: 15 out. 2010.
9 Número Padrão Internacional de Livro (Fonte:
http://pt.wikipedia.org/wiki/International_Standard_Book_Number , acessado em 15/10/2010).

11
2.2.4. Código de barras 2 de 5 intercalados
O código de barras 2 de 5 intercalados é também conhecido como código 25. Esse
código consiste em duas barras espessas em cinco barras utilizadas para cada dígito
codificado e os espaços que intercalam as barras também possuem significado (FEBRABAN,
2010). A norma ISO/IEC 16390:2007 especifica os requisitos dessa codificação, como
dimensões, algoritmos, codificação de dados, e outros parâmetros.
Essa codificação é bastante utilizada em aplicações financeiras, como em boletos
bancários, ficha de compensação, contas de água, luz e telefone. A Figura 8 ilustra um
exemplo.
Esse código possui algumas características que devem ser destacadas, listadas a seguir:
Tamanho variável de código, não possui um limite especificado para tamanho
máximo de dígitos a ser codificado;
Não utiliza dígito verificador;
Requer um número par de dígitos a serem codificados, caso contrário deve ser
adicionado um zero a esquerda para garantir esse requisito.
Figura 8 - Exemplo de código de barras 2 de 5 intercalados (FEBRABAN, 2010).
2.2.5. Código de barras 39
O grande diferencial deste código em relação aos outros tipos de códigos de barras é a
possibilidade de codificação de caracteres alfanuméricos (letras, números e caracteres
especiais).
Esse código é também conhecido como código 3 de 9, pois utiliza uma sequência de
nove elementos, barras ou espaços, dos quais três serão largos e seis estreitos(QUADROS,
2008). A Figura 9 mostra a codificação correspondente a cada um dos caracteres codificáveis
nesse código, onde ―E‖ representa um elemento estreito e o ―L‖ um elemento largo.

12
Figura 9 - Tabela de caracteres no código 39.(QUADROS, 2008)
Além das características mencionadas, o código 39 permite codificar todos os caracteres
ASCII com uma estratégia de utilização de dois caracteres. O caracter ―*‖ é utilizado para
sinalizar o inicio e fim do código de barras, conforme ilustrado na Figura 10. Ele indica o
sentido da leitura do código (FANG, XIANYONG, et al., 2006). O principal problema desse
código é a sua baixa densidade, pois os códigos de barras gerados com esse código são
relativamente maiores do que os gerados com outras codificações semelhantes, como o código
128 que será apresentado a seguir.

13
Figura 10 - Exemplo de código 39 (Fonte: http://edgarddavidson.com/?p=427 , acessado em
18/10/2010).
A especificação desse código está documentada na norma ISO/IEC 16388:2007
(INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO). Atualmente é
muito utilizada na impressão de crachás de identificação e em etiquetas de controle interno,
sistemas de controle de estoques.
2.2.6. Código de barras 128
Este tipo de código de barras é largamente utilizado em diversos tipos de aplicações,
pois é um código, também, alfanumérico e que possuí maior densidade do que os demais
códigos já apresentados.
Este tipo de código ganhou muita importância no Brasil por estar sendo utilizado nos
Documentos Auxiliares das Notas Fiscais Eletrônicas10
(DANFE). A Figura 11 exemplifica a
utilização do código 128 nesse tipo de documento.
A norma ISO/IEC 15417:2007 documenta as especificações de codificação de dados,
dimensões, algoritmos e outros requisitos importantes desse tipo de código
(INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO).
10 http://www.nfe.fazenda.gov.br/portal/assuntoagrupado4.aspx

14
Figura 11 - Exemplo de Código 128 em um DANFE (Fonte:
http://provapraticavb.blogspot.com/2009/05/manual-30-codigo-de-barras-para.html ,Acessado em
18/10/2010).
2.2.7. Código CMC7
O código CMC7 é um padrão de código de barras que possuí a necessidade particular
de ser impresso com uma tinta magnética. É utilizado principalmente para permitir a
automatização na leitura de cheques, a Figura 12 ilustra esse caso de uso (ASSOCIAÇÃO
COMERCIAL DE PEDREIRA - ACEP).
Figura 12 - Exemplo de código de barras magnético CMC7 (Fonte:
http://www.gbnet.com.br/v2/images/fontemicr_cheque_big.png , acessado em 18/10/2010).
2.3 Códigos de barras bidimensionais
Os códigos de barras em uma dimensão possuem, de forma geral, baixa densidade de
dados codificados, já que não utilizam o espaço vertical para codificação das informações.
Comumente, os dados alfanuméricos codificados em um código 1D servem como chave em

15
um banco de dados, dessa forma uma maior quantidade de informações pode ser obtida sobre
um produto através de um sistema acoplado. Os códigos de barras em duas dimensões – 2D –
surgiram como uma alternativa para tentar superar a deficiência dos códigos 1D em relação a
densidade de dados.
A capacidade crescente de informações que podem ser codificadas em um código 2D
permitiu que um novo paradigma de utilização desses códigos surgisse. As informações
relevantes de um produto, por exemplo, podem acompanhá-lo através de um símbolo 2D, sem
a necessidade de uma consulta a um banco de dados adjacente.
A construção de códigos 2D é feita em geral através de duas abordagens,
empilhamento (stacked) ou matriz (matrix-type). Na primeira abordagem o código gerado é
formado por linhas de códigos empilhadas, na qual em cada linha existe um código 1D. Já na
segunda abordagem os códigos gerados tem a forma de uma matriz, na qual cada célula tem
uma representação binária (HEE IL e JOUNG KOO, 2002).
A seguir, apresenta-se três tipos importantes de códigos de barras 2D.
2.3.1. Código PDF-417
O código PDF-417 é um tipo de código 2D de empilhamento. Cada símbolo PDF-417
possui no mínimo 3 linhas de códigos 1D sobrepostas e no máximo 90. Possui alta densidade
de dados, podendo codificar mais de 1100 bytes, 1800 caracteres ASCII ou 2700 dígitos
numéricos dependendo do tipo de dados selecionado para compactação (HEE IL e JOUNG
KOO, 2002).
Figura 13 - Exemplo de utilização do código PDF-417 em documentos oficiais americanos (Fonte:
http://www.pdf417.com/ , Acessado em 19/10/2010).

16
Além das características já mencionadas, a codificação PDF-417 permite a correção de
erros nos símbolos. Todos os detalhes desse padrão de codificação podem ser encontrados na
norma ISO/IEC 15438:2006 (INTERNATIONAL ORGANIZATION FOR
STANDARDIZATION - ISO).
2.3.2. Código Data Matrix
O código de barras 2D Data Matrix é um tipo de código que utiliza uma abordagem
em matriz para construção dos símbolos. É um dos mais conhecidos códigos de barras 2D e
largamente utilizado nas industrias automotiva, aeroespacial e de computadores (IEEE, 2005).
É um código que possuí alta densidade de dados e pode ser impresso em áreas muito
pequenas.
Esse código foi criado no final da década de 1980 nos Estados Unidos pela RVSI
Acuity CiMatrix Inc.11
(Empresa atualmente pertencente a Siemens AG). Essa forma de
representação foi reconhecida pela ISO e documentada na norma ISO/IEC 16022:2006. Esse
código já foi aberto ao domínio público e a sua utilização é livre de royalties ou taxas de
licenciamento.
As principais características desse código são [104]:
Alta capacidade de dados, podendo armazenar em um único símbolo até 3116
dígitos numéricos, 2334 caracteres alfanuméricos e 1556 caracteres ASCII de 1
byte;
Flexibilidade de codificação, pois permite codificar dados puramente
numéricos, caracteres alfanuméricos ou ainda caracteres ASCII;
Adaptável, no sentido de poder ser impresso em diversas formas (adaptadas ao
tipo de produto que está identificando), já que requer apenas 20% de contraste
para uma leitura precisa;
Independente de orientação, o leitor pode ser rotacionado sem problemas para
leitura;
Identificação automática de multi-símbolos, permite reconhecimento e
decodificação de vários símbolos em uma mesma imagem capturada.
Cada símbolo Data Matrix é composto por alguns elementos estruturais essenciais para
a leitura correta dos símbolos, conforme ilustrado na Figura 14.
11 http://www.nema.org/media/ind/20051006c.cfm

17
Figura 14 - Exemplo de Data Matrix com destaque aos elementos estruturais (Adaptado de:
https://www.upccode.net/2d_data_matrix.html ,Acessado em 20/10/2010).
2.3.3. Código “QR Code”
O código QR Code é um método de codificação em matriz desenvolvido no Japão pela
Denso Corporation em 1994. O nome QR é acrônimo para Quick Response, que revela uma
das principais características desse código que é a rapidez para leitura e decodificação.
Esse código foi reconhecido como padrão e documentado na norma ISO/IEC
18004:2006 (INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO).
Portanto, o padrão de codificação é aberto ao domínio público, sendo restrito, no entanto, o
uso da marca registrada ―QR Code‖ como propriedade da Denso Wave Incorporated no
Japão, Estados Unidos, Austrália e Europa12
. O símbolo QR Code não é afetado por nenhuma
licença ou registro, somente a expressão ―QR Code‖ é registrada (DENSO WAVE INC.).
Esse tipo de código vem sendo largamente utilizado em diversos tipos de aplicações,
como controle industrial, aplicações de logística, sistemas de vendas e várias outras
aplicações inovadoras que serão exploradas no Capítulo 2.
Um símbolo codificado com esse padrão comporta até 7089 dígitos numéricos, 4296
caracteres alfanuméricos, 2953 bytes ou 1817 caracteres Kanji13
(LIU, YANG e LIU,
2008)(DENSO WAVE INC.). Portanto, esse código é o que suporta maior quantidade de
informação dentre os já apresentados neste trabalho. Essa característica permite que novos
tipos de aplicação explorem essa capacidade de armazenamento de dados.
12 QR Code é uma marca registrada da DENSO WAVE INCORPORATED.
13 Caracteres de origem chinesa, maiores informações em http://pt.wikipedia.org/wiki/Kanji ,acessado em
20/10/2010.

18
Esse padrão possui também mecanismos de detecção e correção de erros em quatro
níveis (L, M, Q e H em ordem crescente de capacidade de recuperação). O nível mais alto
permite recuperação de até 30% da informação codificada em um símbolo (LIU, YANG e
LIU, 2008) (DENSO WAVE INC.).
Uma grande vantagem do QR Code é que a leitura dos símbolos capturados é
realizável sem perdas em qualquer direção, pois os padrões de reconhecimento estabelecidos
para esse código permitem aos decodificadores rotacionar a imagem de forma adequada. A
Figura 15 ilustra os padrões funcionais presentes em cada símbolo QR code.
Figura 15 - Elementos estruturais de um símbolo QR code (Adaptado de: http://www.qrme.co.uk/qr-
code-resources/understanding-a-qr-code.html , Acessado em 20/10/2010).
2.4 Util ização de códigos 2D em dispositivos móveis
2.4.1. Introdução
O baixo custo, alta capacidade de armazenamento de dados e criação de novos
algoritmos para captura e decodificação dos códigos de barras 2D fomentaram a
diversificação da utilização desses códigos.

19
Com o desenvolvimento dos códigos novas formas de leitura foram criadas. É possível
agora a leitura de símbolos sem a necessidade de um equipamento a laser desenvolvido
especificamente para esse fim. A leitura de códigos 2D através de imagens capturadas por
câmeras tornou-se um exemplo real de outra forma de leitura dos códigos de barras. Por
consequência, os dispositivos móveis, além da redução de custos na utilização de códigos 2D,
aportam a flexibilidade de utilização e uma variedade de aplicações em crescente
desenvolvimento.
A evolução observada nos dispositivos móveis, como celulares e computadores
portáteis, permitiu que esses dispositivos fossem dotados de várias outras tecnologias
embarcadas, em especial: câmeras digitais.
Hoje no Brasil, tem-se mais de 187 milhões de telefones celulares ativos, segundo
Anatel14
, e grande parte deles estão aptos a abrigar soluções para a leitura de algum tipo de
código de barras, devido a presença de câmeras nos dispositivos. Portanto o estudo de
soluções e novas formas de uso do QR Code com o auxilio de dispositivos móveis torna-se
fundamental por apresentar um diferencial de inovação para as aplicações móveis.
2.4.2. Algoritmo de Leitura
Conhecidas as vantagens oferecidas pelo padrão de codificação QR Code, sendo esta a
solução que demonstra estar mais adequada às novas aplicações móveis, buscou-se entender
os algoritmos e técnicas que permitem a leitura dos símbolos codificados em dispositivos
móveis.
Entretanto, para melhor compreender o processo de leitura dos símbolos, faz-se
importante o conhecimento do processo de codificação dos dados. Segundo Yue Liu e
Mingiun Liu, o primeiro passo nesse processo é a codificação da entrada de dados de acordo
com o modo mais eficiente e o fluxo de bits que se deseja formar. Em seguida, esses fluxos
gerados são divididos em palavras (codewords, em inglês). Cada palavra será dividida
novamente em blocos, que conterão palavras de correção de erro. Todas as palavras geradas
são adicionadas a uma matriz seguindo um padrão estabelecido. Por fim, são adicionados os
padrões funcionais e finalizada a construção do símbolo QR code (LIU e LIU, 2006).
14 http://economia.estadao.com.br/noticias/economia,numero-de-celulares-no-pais-atinge-187-milhoes-em-julho-
diz-anatel,32433,0.htm ,Acessado em 20/10/2010.

20
Yue Liu, Ju Yang e Mingjun Liu propõe um algoritmo para leitura dos códigos QR
(LIU, YANG e LIU, 2008). Na proposta dos autores, o algoritmo possui os passos mostrados
na Figura 16: conversão da imagem capturada em escala de cinza, ―binarização‖
(binarization, em inglês), filtragem, orientação (podendo haver ou não uma etapa de rotação
da imagem), localização de padrões de alinhamento, geração da grade de células da matriz do
código, correção de erros e, finalmente, a decodificação.
Figura 16 – Fluxograma de um algoritmo de leitura de um QR code. Adaptado de (LIU, YANG e LIU,
2008).
Na primeira etapa, tem-se a conversão da imagem colorida capturada no dispositivo
móvel para a escala de cinza. Faz-se isso pois as informações de cor não são relevantes para
leitura dos símbolos. No passo de ―binarização‖, são aplicadas técnicas de thresholdings15
para tratar os diferentes níveis de iluminação. A filtragem é responsável pela remoção dos
ruídos da imagem. A etapa de detecção de bordas é suprimida para a leitura dos códigos QR,
já que estes contêm marcações para facilitar nessa tarefa. Os passos de orientação e rotação
estão muito relacionados, sendo no primeiro realizada a verificação da orientação do código
na imagem capturada através dos três ou quatro cantos do símbolo e no segundo a rotação da
imagem, caso necessário. Na etapa seguinte, de localização de padrões de alinhamento, são
identificados os padrões do código e localizado o centro do símbolo. Após todos os padrões
identificados é gerada uma grade de leitura sobre o símbolo que permite a leitura adequada.
Por fim, são realizadas as etapas de correção de erro e decodificação (esta última é uma
operação inversa a codificação já descrita) (LIU, YANG e LIU, 2008).
15 Palavra do inglês que carrega o significado relacionado a um limite ou limiares.

21
2.5 Conclusão
Este capítulo apresentou os conceitos e principais técnicas utilizadas nas
tecnologias de código de barras. Na Tabela 1 é apresentado uma análise comparativa
destas técnicas.
O código 2D do tipo QR Code é o que se adéqua para o uso em aplicações móveis
e ubíquas devido a simples exigência de uma câmera digital para a leitura e pela densidade
de informação que pode ser armazenada em um símbolo desse código.
Tabela 1 - Comparativo entre os códigos de barras apresentados no capítulo 1.
Código Tipo Numérico16 Alfanumérico9 Binário9 Kanji9 Características Principais
UPC-A Linear (1D) 12 dígitos N/A N/A N/A Padrão de identificação de
produtos de varejo.
UPC-E Linear (1D) 8 dígitos N/A N/A N/A Versão em escala reduzida do
UPC-A.
EAN-13 Linear (1D) 13 dígitos N/A N/A N/A Padrão de identificação de
produtos de varejo.
2 de 5
intercalados
Linear (1D) Não limitado17 N/A N/A N/A Não requer dígito verificador,
tamanho variável, baixa densidade
de dados.
Código 39 Linear (1D) Não limitado10 Não limitado10 N/A N/A Permite codificar dados
alfanuméricos, tamanho variável,
baixa densidade de dados. Codifica
dados ASCII com 2 caracteres.
Código 128 Linear (1D) Não limitado10 Não limitado10 N/A N/A Permite codificar dados em ASCII
diretamente, melhor densidade de
dados em 1D e versatilidade.
CMC7 Linear (1D) Não limitado10 N/A N/A N/A Requer uso de tinta magnética.
PDF-417 Empilhado
(2D)
2710 1850 1018 554 Alta densidade de dados.
Data Matrix Matriz (2D) 3116 2355 1556 778 Alta densidade de dados,
Imprimível em escalas pequenas.
QR Code Matriz (2D) 7089 4296 2953 1817 Alta densidade de dados,
Imprimível em escalas pequenas e
rápida leitura.
16 Capacidade de Armazenamento de dados
17 No entanto a limitação física de impressão e leitura limita esse código a uma baixa densidade de dados.

22
CAPÍTULO 3 - UBIQUIDADE DOS CÓDIGOS E SUAS APLICAÇÕES
Neste capítulo, são analisadas as características gerais dos códigos de barras em
comparação aos conceitos de ubiquidade e pervasividade. Alguns casos de utilização desses
códigos e de suas aplicações são apresentados.
3.1 Ubiquidade e Códigos de Barras 2D
A qualidade de algo que está ou pode estar em muitos lugares ao mesmo tempo é uma das
definições dicionarizadas para a palavra ubiquidade. Essa palavra foi usada por Mark Weiser
para definir o conceito de Computação Ubíqua. Segundo Weiser as tecnologias mais
profundas e duradouras são aquelas que desaparecem, dissipam-se no cotidiano das pessoas
até tornarem-se indistinguíveis (WEISER, 1991).
Segundo (STREITZ e NIXON, 2005) apud (ROCHA, 2007), o computador nesse
paradigma da computação pode ―desaparecer‖ de duas naturezas: física e mental. O
―desaparecimento‖ de natureza física tem relação ao tamanho físico, do mundo real,
relacionada à miniaturização dos dispositivos enquanto na natureza mental está relacionado
com a forma com que os usuários interagem e percebem esses dispositivos no seu dia-a-dia.
A computação ubíqua poderia ser entendida, de forma simplificada, como sendo uma
computação distribuída que é realizada por dispositivos que atuam de forma discreta nos
ambientes onde estão localizados, fornecendo informação em qualquer lugar e a todo instante.
Percebe-se que os conceitos de ubiquidade apresentados podem ser, de certa forma,
aplicados ao uso dos códigos de barras. Esses códigos estão presentes nas atividades diárias
de muitas pessoas de forma que já são quase imperceptíveis. Portanto, seguem o conceito de
―desaparecimento‖ mental já apresentado. A ligação permitida pelo uso dessa forma de
identificação e o mundo virtual, dos computadores, já foi também fortemente absorvida pelas
pessoas.

23
Além dos conceitos apresentados sobre computação ubíqua, deve se acrescentar que na
criação de aplicações desse domínio a forma com que informações de contexto são capturadas
e tratadas pelos dispositivos é muito importante. Informações de contexto são aquelas que
trazem dados sobre o ambiente, usuário ou próprio sistema. A propriedade de sensibilidade ao
contexto é um requisito fortemente desejável para aplicações ubíquas, pois possibilita
adaptação do sistema para melhor atender aos requisitos esperados (ROCHA, 2007).
Contexto, segundo (DEY e ABOWD, 2000) apud (VIANA, MIRON, et al., 2010), é
―qualquer informação que possa ser usada para caracterizar a situação de uma entidade. Uma
entidade é uma pessoa, lugar ou objeto que é considerado relevante para uma interação entre
um usuário e uma aplicação, incluindo o usuário e a aplicação em si‖. Percebe-se que os
códigos de barras podem ser usados como fonte de obtenção de informações de contexto,
algumas aplicações que serão apresentadas no tópico 3.2 comprovarão essa afirmação.
O conceito de ―pervasividade‖18
também está muito relacionado aos conceitos de
ubiquidade já apresentados. Esse termo está relacionado à característica da computação
pervasiva de permear nos ambientes. O propósito primeiro desse paradigma da computação
pode ser sintetizado como sendo a oferta de serviços para os usuários ou outros sistemas de
forma tranquila em um momento oportuno. Alguns estudos publicados analisam as
características de ubiquidade e ―pervasividade‖ com os códigos de barras, como em (LIU,
DOERMANN e LI, 2008), (KATO e TAN, 2007) e (HUANG, CHANG e SANDNES, 2009).
Outra característica importante que deve ser destacada dos códigos de barras é a
posssibilidade de utilização para troca de informações entre diferentes tipos de mídia. Em
(LIU, DOERMANN e LI, 2008) por exemplo, os códigos 2D são utilizados para envio de
conteúdos multimídia através de transmissões de sequencias de códigos em vídeos a serem
capturadas pelos dispositivos móveis. Os códigos são salvos e decodificados gerando algum
conteúdo multimídia.
Apesar das características já mencionadas de ―pervasividade‖, ―desaparecimento‖
mental, possibilidade de miniaturização e larga utilização ainda é plausível de se
questionarem sobre a característica de ubiquidade dos códigos de barras, em especial os 2D
(pois em(KATO e TAN, 2007) esse tipo de código estaria mais adequado para aplicações
pervasivas). Isso se deve a concepção de que na computação ubíqua os computadores
18 Relacionado ao termo pervasive computing do inglês.

24
estariam espalhados de forma imperceptível aos usuários realizando tarefas que poderiam
ajudar aos seres humanos nas suas atividades corriqueiras.
3.2 Novas aplicações para os códigos de barras
A criação de diversas aplicações que exploram as características e vantagens dos
códigos de barras 2D comprovam certa aderência dessas tecnologias aos conceitos de
ubiquidade e ―pervasividade‖ apresentados no primeiro tópico deste capítulo.
Percebe-se que muitas das aplicações encontradas na literatura extrapolam o propósito
inicial dos códigos de barras (i.e., utilização somente para identificação de produtos). Essas
novas aplicações demonstram que ainda se pode explorar o uso dos códigos de barras de
diversas formas inovadoras. Portanto, é interessante ter conhecimento sobre essas aplicações,
para compreender algumas possibilidades já exploradas e pensar em novas formas de
utilização que tragam contribuições cada vez maiores para o domínio de Sistemas Ubíquos.
3.2.1. Aplicações Cross-media
Liu, Doermann e Li propuseram em (LIU, DOERMANN e LI, 2008) uma estratégia,
chamada VCode, para transferência de dados multimídia através do uso de códigos de barras.
Na estratégia proposta, os arquivos multimídia são codificados em vários símbolos de códigos
2D, em seguida, são serialmente apresentados aos usuários através de algum display plano
(TV ou computador). A sequência de símbolos capturados pelos usuários através da câmera
dos seus celulares pode ser decodificada, a fim de reconstruir o arquivo multimídia e
armazenar no dispositivo móvel. A Figura 17 ilustra o funcionamento da estratégia.
Figura 17 - Exemplo de uso do VCode. (a) Ringtone é codificado e exibido símbolo a símbolo para o
usuário, (b,c) o usuário procede no download do arquivo multimídia, (d) o arquivo é reconstruído e
executado(LIU, DOERMANN e LI, 2008).

25
Já em (HUANG, CHANG e SANDNES, 2009), são apresentadas formas para troca de
informações entre dispositivos de plataformas diferentes, smartphones e telefones com a
plataforma Java. Nessa publicação, são apresentados dois estudos de casos:
i. o primeiro é um sistema de assistência ao viajante (Traveler Assistant System),
que é um tipo de guia de visitas móvel que permite o compartilhamento, entre
os usuários, de dados sobre os lugares visitados através de QR codes;
ii. o segundo estudo de caso é um sistema de busca de informações de pássaros
(Bird Information Searching System), que é usado para prover informações
educativas para turistas e estudantes e permite a troca de informações entre os
usuários através do uso de QR Codes.
3.2.2. Aplicações de Mobile Learning
O rápido crescimento no uso de dispositivos móveis fomentou uma nova modalidade
de educação a distância chamada Mobile Learning (M-Learning). Esse termo é utilizado para
classificar algum processo de aprendizagem que faça uso de alguma tecnologia móvel. O
grande diferencial desse modelo de aprendizagem é que o aprendiz pode interagir no processo
sem estar em um lugar fixo.
O segundo estudo de caso apresentado em (HUANG, CHANG e SANDNES, 2009), já
relatado no subtópico 3.2.1, pode ser caracterizado, de certo modo, como uma aplicação
educacional móvel (M-Learning).
Em (CHU e LIU, 2007) são relatadas as experiências com a utilização de códigos de
barras 2D em uma aplicação móvel e sensível ao contexto para o ensino da língua inglesa, a
HELLO (Handheld English Language Learning Organizations). Nesta experiência, os
estudantes andam pelo campus portando PDAs19
, os quais usam para capturar os símbolos QR
espalhados em zonas de aprendizado. Os símbolos capturados são decodificados e as
informações obtidas são usadas para fazer a correspondência entre os materiais de ensino
armazenados no servidor da aplicação e o local atual do usuário. A Figura 18 ilustra o
processo proposto pelos autores. Segundo eles, após um experimento de quatro semanas de
utilização da aplicação por estudantes, resultou em constatações de que o sistema proposto era
muito útil para o aprendizado da língua estrangeira e, mais ainda, que os códigos de barras 2D
eram úteis e interessantes para prover experiências de aprendizado sensíveis ao contexto.
19 Sigla para o termo inglês Portable Digital Assistant.

26
Figura 18 - Cenário sensível ao contexto para a HELLO (CHU e LIU, 2007).
3.2.3. Aplicações de Segurança
Para exemplificar as aplicações dos códigos de barras na área de segurança da
informação pode-se citar a proposta de um sistema de validação (―anti-falsificação‖) de
certificados baseados em informações biométricas codificadas em QR Codes, descrita
em(LIU, 2010) ou uso para conferência de certificados digitais (VICENTINI, AVELAR, et
al., 2007).
Outra proposta interessante de uso do QR code na área de segurança foi publicada em
(CONDE-LAGOA, COSTA-MONTENEGRO, et al., 2010). Os autores propõem um modelo
de utilização de Tickets eletrônicos – eTicket – seguros em QR codes, com uso de
informações criptografadas. Na proposta, o usuário ao adquirir um eTicket recebe um token
que é criptografado em conjunto com uma senha fornecida pelo usuário para gerar as
informações a serem codificadas em um símbolo QR. No momento do uso do eTicket, o
usuário mostra através do seu dispositivo móvel o QR code gerado a um receptor, que solicita
então a senha usada para decifrar as informações do símbolo adequadamente, validando todo
o processo. O passo a passo do modelo proposto pelos autores é ilustrado na Figura 19.

27
Figura 19 – Modelo de Tickets Eletrônicos baseados em QR codes(CONDE-LAGOA, COSTA-
MONTENEGRO, et al., 2010).
3.2.4. Aplicações Industriais
O uso de códigos 2D também pode ser observado em processos industriais, conforme
demonstrado em (YU, WANG, et al., 2004). Nesta publicação, os autores propõem um
algoritmo para utilização desses códigos barras no processo de controle de qualidade na
produção de placas de circuitos impressos ou componentes eletrônicos. Na Figura 20, é
ilustrado um exemplo de uso de um símbolo DataMatrix para codificar informações de
controle de qualidade de produção em uma placa de circuito eletrônico.

28
Figura 20 - Exemplo de uso do código Datamatrix em placas de circuitos eletrônicos.(Adaptado de:
http://www.automation.com/resources-tools/articles-white-papers/bar-code-rfid-automatic-
indentification/data-matrix-expanding-the-second-dimension-of-data-capture , Acessado em
25/10/2010)
3.2.5. Aplicações de Acessibilidade
Uma aplicação de acessibilidade interessante é proposta por Al-khalifa em (AL-
KHALIFA, 2008), na qual são utilizados QR codes para ajudar a pessoas cegas a obterem
mais informações sobre objetos previamente identificados. Na proposta do autor, os códigos
2D são fixados nos objetos e identificados com um selo em Braile, dessa forma as pessoas
cegas podem identificar onde está localizado o código no objeto o qual deseja saber mais
informações. O sistema proposto requer dos usuários, além do dispositivo móvel, uma
conexão que permita acessar os conteúdos multimídias, que irão fornecer aos usuários as
descrições dos objetos. Na Figura 21 é ilustrada uma visão geral do funcionamento da
proposta do autor.

29
Figura 21 - Visão geral de funcionamento do sistema proposto (AL-KHALIFA, 2008).
3.2.6. Aplicações Comerciais e de Marketing
Diversos novos tipos de aplicações comerciais passaram a explorar as vantagens dos
códigos de barras 2D. Um exemplo bem prático foi a adoção desses códigos de barras no
processo de checkin em algumas companias aéreas brasileiras, a exemplo da TAM20
.
Algumas outras aplicações interessantes são apresentadas em (EBLING e CÁCERES,
2010). Uma delas é um sistema móvel que faz a busca e comparação de preços de um produto
baseado na leitura do seu código de barras. A Figura 22 exemplifica a aplicação apresentada
pelos autores.
Além das aplicações já citadas, torna-se cada dia mais comum encontrarem-se códigos
de barras 2D em objetos que fazem parte do dia-a-dia das pessoas, como jornais21
, revistas22
,
listas telefônicas, cartões de visita, produtos fastfood23
e até mesmo em comerciais de
televisão.
20 Maiores informações sobre essa notícia podem ser encontradas em
http://www.tam.com.br/b2c/vgn/v/index.jsp?vgnextoid=64a8830382b1b210VgnVCM1000009508020aRCRD ,
acessado em 25/10/2010.
21 http://www.mobilepedia.com.br/prod/2008/12/12/qr-codes-no-jornal-a-tarde
22 http://www.mobilepedia.com.br/cases/qr-code-na-revista-viagem-e-turismo
23 http://calorielab.com/news/2006/09/15/mcdonalds-tags-food-with-high-tech-nutrition-information/

30
Figura 22 - Exemplo de aplicação que faz a comparação de preços de um produto. (a) O usuário
captura um código de barras, (b) a aplicação decodifica o código e faz a busca dos preços do mesmo
produto em outras lojas(EBLING e CÁCERES, 2010).
3.2.7. QR Codes Sensíveis ao Contexto
De posse da noção sobre o conceito de contexto (seção 3.1), pode-se classificar várias
das aplicações apresentadas anteriormente como sensíveis ao contexto. Entretanto, em
algumas situações, os códigos de barras também podem ter o seu significado sensível ao
contexto, como apresentado em (ROUILLARD e LAROUSSI, 2008). Nesse trabalho, os
autores propõem um ambiente de aprendizado pervasivo e adaptativo baseado em QR codes
contextuais. A principal diferença na proposta dos autores em relação ao uso tradicional dos
QR codes é a adição de informações XML aos símbolos, permitindo assim pontos de privados
de variação de valores nos símbolos previamente impressos. A Figura 23 apresenta como são
organizados os conteúdos dentro de um QR code contextual.

31
Figura 23 - Proposta de QR code contextuais (ROUILLARD e LAROUSSI, 2008).
Portanto , exemplificando a proposta de Rouillard e Laroussi pode-se criar um símbolo
QR code que, ao ser lido, a aplicação substitua as partes privadas do símbolo por informações
do contexto. Logo, com um único símbolo QR pode, por exemplo, ser apresentado a
mensagem ―Carlos, bom dia!‖ ou ―Windson, boa tarde!‖, dependendo das informações de
contexto na leitura do código. Neste exemplo, as informações que estariam codificadas no
símbolo QR poderiam ser ―<nome>‖ e ―<hora>‖ e as mensagens mostradas aos usuários
teriam sido derivadas através da adição das informações de contexto computadas pela
aplicação.
3.3 Conclusão
Neste capítulo, foram apresentados e discutidos os principais conceitos de ubiquidade e
―pervasividade‖, ao passo que se relacionavam com as características dos códigos de barras,
em especial os 2D. Neste trabalho, não se chegou a uma conclusão definitiva sobre a
adequação do termo ubiquidade para os códigos de barras, entretanto pode ser percebido que a
utilização desses códigos em conjunto com outros sistemas pode permitir a construção de
aplicações que sejam definidas como ubíquas.

32
Além disso, foram apresentadas algumas aplicações que ultrapassaram o propósito de
identificação de produtos dos códigos de barras, e mostrou-se que é possível criar novas
aplicações que explorem mais ainda as vantagens dos QR Codes.
Não foi alvo do estudo realizado a análise de outras tecnologias ainda mais avançadas
de identificação como RFID24
, que podem estar ainda mais próximos dos conceitos de
ubiquidade apresentados. Apesar de não terem sido realizadas análises empíricas sobre o uso
de RFID na construção de sistemas ubíquos, acredita-se que o custo monetário envolvido no
uso dessa tecnologia é uma das principais desvantagens em relação ao uso dos códigos de
barras.
24 Tecnologia de identificação baseada em Tags que respondem a sinais de rádio frequência.

33
CAPÍTULO 4 - FERRAMENTAS PARA O DESENVOLVIMENTO DE
APLICAÇÕES MÓVEIS QUE USAM QR CODES
Neste capítulo, são apresentadas algumas ferramentas que auxiliam no desenvolvimento
de aplicações que fazem uso de tecnologias de códigos de barras em 2D. Em especial, são
detalhadas as soluções reusáveis no sistema operacional Android.
4.1 Introdução
Diversos tipos de arquiteturas podem ser usadas na construção de aplicações móveis. Sistemas
web adaptados sendo acessados através de dispositivos móveis, aplicações desktop sendo
utilizadas para processamento e execução de alguma tarefa solicitada por um DM ou a
utilização de aplicações stand-alone em celulares são alguns cenários possíveis que ilustram a
utilização de diferentes arquiteturas de aplicações móveis.
O desenvolvimento de uma aplicação móvel pode ser uma tarefa muito dispendiosa e
demorada, devido as características destes dispositivos (heterogeneidade, recursos de
processamento e memória restritos). Entretanto, o desenvolvimento pode se tornar mais eficaz
e eficiente com o reuso de boas soluções já desenvolvidas. A área de Reuso de Software é
uma das subáreas da Engenharia de Software que estuda as formas de se desenvolver
softwares minimizando os custos e maximizando os benefícios através do reuso de artefatos
previamente construídos, sejam eles códigos, documentos ou conhecimentos. Bibliotecas de
classes, componentes de software, frameworks, middlewares e linhas de produto de software
são exemplos de soluções já desenvolvidas na área de reuso de software que ajudam a tornar o
desenvolvimento de software em geral, e ubíquo, mais eficiente.
Uma vez que o reuso de soluções é uma das formas de se melhorar o desenvolvimento
de aplicações, sejam elas móveis ou não, algumas soluções reusáveis relacionadas ao uso de
QR Codes em diferentes plataformas são apresentadas nos tópicos seguintes deste capítulo.

34
4.2 Open Source QR Code Library
Este projeto é uma biblioteca para decodificação e codificação de códigos QR, que
segue as normas JIS-X-0510 e ISO/IEC1800. A biblioteca é distribuída sob a licença GPL
versão 2 25
e foi desenvolvida para o uso no desenvolvimento de aplicações com a linguagem
Java. Ela é suportada pelas plataformas: J2SE, J2ME MIDP2.0/CLDC1.0. A biblioteca
também oferece suporte a correção de erro e pré-processamento de imagens, garantindo
melhor desempenho no seu uso(YANBE, 2010). A Figura 24 apresenta um exemplo de
aplicação que usa a biblioteca para decodificação de QR Codes em imagens.
Figura 24 - Exemplo de uma aplicação que faz uso da biblioteca Open Source QR Code Library(YANBE,
2010).
Outra característica importante dessa biblioteca é que ela já foi portada para outros
ambientes de programação como Python26
e C#27
. Além disso, algumas aplicações exemplo
são disponibilizadas, facilitando o seu aprendizado. Na Figura 25, são apresentados exemplos
de uso da biblioteca portada para C#.
25 Os termos da licença estão disponíveis em http://www.gnu.org/licenses/gpl-2.0.html , acessado em
27/10/2010.
26 Mais informações podem ser encontradas em http://pyqrcode.sourceforge.net/, acessado em 27/10/2010.
27 Mais informações podem ser encontradas em http://www.codeproject.com/KB/cs/qrcode.aspx , acessado em
27/10/2010.

35
Figura 25 - Exemplos de uso da biblioteca em .NET Windows e Windows Mobile (Fonte:
http://www.codeproject.com/KB/cs/qrcode.aspx , acessado em 28/10/2010).
4.3 Google Chart API
Essa API (Application Programming Interface), criada e mantida pela empresa Google
Inc., é composta por um conjunto de operações para geração de gráficos e por um serviço web
para criação desses gráficos. Os gráficos são criados a partir das requisições HTTP feitas.
Portanto, o usuário deve criar uma requisição contendo os parâmetros para criação do gráfico
a ser gerado. No caso deste trabalho, foi testada a geração de símbolos QR Code através do
navegador. Foram adicionados a URL do serviço de geração de gráficos três parâmetros,
conforme explicado:
i. ―cht=qr‖, para indicar que o gráfico a ser gerado deve ser um QR Code;
ii. ―chs=200x200‖, para indicar o tamanho em pixels do símbolo a ser gerado;
iii. ―chl=teste‖, para fornecer o conteúdo a ser codificado.
O gerador de gráficos, por sua vez, se encarrega de processar todos os parâmetros
recebidos e retornar para o usuário o símbolo QR Code gerado. Portanto, esse serviço pode
ajudar para aplicações que requerem a criação dinâmica de códigos QR, já que esse tipo de
codificação está contemplado nessa API como elementos gráficos28
. A Figura 26 exemplifica
o uso dessa API.
Para o reuso deste serviço em aplicações móveis no sistema operacional Android,
pode-se utilizar as bibliotecas já disponíveis no próprio SDK (Software Development Kit),
28 Detalhes sobre o uso da API para criação de QR codes pode ser encontrada na página
http://code.google.com/intl/pt-BR/apis/chart/docs/gallery/qr_codes.html , acessada em 27/10/2010.

36
para se criar requisições HTTP e através delas receber os códigos QR gerados. Uma outra
alternativa, pode ser através do uso de intents, usando o navegador do próprio sistema
operacional Android para criar-se, seguindo a mesma lógica apresentada anteriormente, os
QR Codes. Um Intent é um recurso de abstração da plataforma Android que permite a
execução de códigos entre aplicações diferentes(GOOGLE INC., 2010).
Figura 26 - Exemplo de QR Code com a palavra “teste” gerado através de requisição HTTP.
4.4 Biblioteca Libqrenconde
Essa é uma biblioteca de código aberto que foi desenvolvida na linguagem de
programação C29
. A Libqrencode é voltada para o uso em sistemas operacionais baseados em
Unix, podendo ser compilada e executada independentemente. Ela permite somente a
codificação de informações em QR codes, pois a decodificação não foi implementada. Essa
biblioteca também foi portada para outras linguagens, como: Phyton, Haskell, Ruby e PHP.
4.5 PEAR Image_QRCode
Em 1999, Stig S. Bakken criou o projeto de um repositório para distribuição de
componentes PHP reusáveis chamado PEAR (PHP Extension and Aplication Repository)
(PEAR GROUP, 2010). O projeto tem como objetivos fornecer: uma biblioteca de código
aberto, um sistema de distribuição de código e gerência de pacotes (chamado Pyrus)30
, um
padrão para escrita de códigos em PHP, uma biblioteca para extensão do PHP (PECL – PHP
Extension Community Library) e o suporte online para a comunidade de programadores PHP.
Em janeiro de 2010, foi lançada a biblioteca Image_QRCode que permite aos programadores
29 Mais detalhes podem ser encontrados na página http://fukuchi.org/works/qrencode/index.en.html , acessada
em 27/10/2010.
30 http://pear2.php.net/PEAR2_Pyrus , acessado em 28/10/2010.

37
PHP criarem QR Code em suas aplicações, assim pode-se criar na Web códigos QR
dinâmicos. Essa biblioteca possui a limitação de somente codificar os dados em símbolos QR,
não sendo possível realizar com ela a decodificação. Como vantagens dessa biblioteca pode-
se citar a facilidade no uso e implantação31
.
4.6 Biblioteca ZXing
A ZXing é uma biblioteca de código aberto, distribuída sob a licença Apache versão 2,
implementada em Java. Ela permite a leitura de código de barras em dispositivos móveis, em
especial telefones celulares. Essa biblioteca tem como diferencial o suporte a diversos tipos de
códigos de barras, conforme listado:
UPC-A e UPC-E;
EAN-8 e EAN-13;
Code 39;
Code 93;
Code 128;
QR Code;
ITF;
Codabar;
RSS-14 (todas as variantes);
Data Matrix;
PDF 417 (na qualidade 'alpha').
Outro diferencial dessa biblioteca é que ela pode ser usada também para codificação, e
não somente decodificação, de dados em QR Codes. Além disso, já são disponibilizados na
internet uma página com um gerador32
e um leitor33
de símbolos QR implementados com esta
biblioteca. A ZXing oferece suporte a plataformas J2SE, J2ME e Android. O suporte a outras
plataformas não são mantidos de forma regular, mas pode-se encontrar no site do projeto34
31Um exemplo de como gerar um QR Code com essa biblioteca pode ser encontrado na página
http://www.porkaria.com.br/2010/04/24/gerando-qr-code-com-php/ , acessado em 28/10/2010.
32Gerador disponível no endereço eletrônico http://zxing.appspot.com/generator/ , acessado em 28/10/2010.
33 Leitor disponível no endereço eletrônico http://zxing.org/w/decode.jspx , acessado em 28/10/2010.
34Disponível no endereço eletrônico http://code.google.com/p/zxing/ , acessado em 28/10/2010.

38
algumas referências para módulos em outras linguagens. Na página de distribuição da
biblioteca são disponibilizados vários exemplos e componentes prontos para o uso, o que
ajuda muito na etapa de desenvolvimento de aplicações.
4.7 Conclusão
Neste capítulo foram apresentadas diversas ferramentas, em especial bibliotecas de
códigos, que ajudam no desenvolvimento de aplicações que usam QR code. Ainda não
existem bibliotecas nos SDKs para Android e J2ME que deem suporte ao desenvolvimento de
aplicações que tenham requisitos de leitura ou criação de QR Codes. Entretanto, foram
encontradas bibliotecas que podem auxiliar no desenvolvimento deste tipo de aplicação, que
foram apresentadas neste capítulo.
Para o sistema operacional Android é possível encontrar, além de bibliotecas,
componentes que fornecem o serviço de leitura e codificação de QR Code já prontos para o
reuso. Para a plataforma J2ME, são encontradas algumas aplicações de exemplo na pagina da
biblioteca Open Source QR Code Library que podem ser adaptadas e reusadas.
Destaca-se a biblioteca ZXing que se mostrou mais adequada para o desenvolvimento
de aplicações móveis que usem QR codes, já que fornece amplo suporte a leitura e criação de
símbolos QR seguindo as especificações desse código. Além disso, é possível encontrar-se
vários casos de utilização da biblioteca em aplicações já existentes na internet, como Google
Shoper35
e BeerCloud36
, o que aumenta o grau de confiabilidade nessa biblioteca. Além
disso, ela é facilmente reusável em aplicações para plataforma J2ME e Android, bastando que
os desenvolvedores sigam os exemplos de código apresentados no wiki37
.
35 Aplicação móvel que ajuda a obter informações sobre algum produto no momento da compra, mais
informações em http://www.google.com/mobile/shopper/ , acessado 28/10/2010.
36 Apresenta informações sobre cervejas baseado na leitura dos códigos de barras, mais informações em
http://greatbrewers.com/story/beercloud-mobile-app , acessado em 28/10/2010.
37 Endereço do wiki: http://code.google.com/p/zxing/w/list , acessado em 28/10/2010.

39
CAPÍTULO 5 - DFIND: UM SISTEMA UBÍQUO PARA LOCALIZAÇÃO
INDOOR E OUTDOOR BASEADO EM QR CODES
Este capítulo apresenta uma aplicação móvel desenvolvida para a plataforma Android
capaz de utilizar QR Code para fornecer informações de localização indoor e outdoor. Antes
de descrever o estudo de caso desenvolvido, um resumo das características da plataforma alvo
é apresentado.
5.1 A Plataforma Android
Em julho de 2005, a empresa Google Inc. adquiriu a Android Inc., que desenvolvia sistemas
para dispositivos móveis. A partir dessa aquisição feita pela multinacional Google,
desenvolveu-se um sistema operacional, baseado nos projetos da Android Inc., que se chamou
Android (BLOOMBERG L.P., 2005). Esse sistema operacional foi mantido e evoluído
exclusivamente pela Google até novembro de 2007. Neste mesmo mês, o consórcio Open
Handset Aliance (OHA) – formado por empresas como a Google, Motorola, HTC, Qualcomm
e mais trinta empresas – anunciou o desenvolvimento do Android como sendo a primeira
plataforma aberta para dispositivos móveis (OPEN HANDSET ALLIANCE, 2007).
Atualmente a plataforma Android é distribuída sob os termos da licença Apache 2.038
.
A plataforma Android é formada não só pelo sistema operacional homônimo, mas
também por um middleware e um conjunto de aplicações (GOOGLE INC., 2010). A Figura
27 detalha a arquitetura do sistema operacional Android. As aplicações para essa plataforma
são escritas na linguagem Java e compiladas em bytecodes Dalvik, que é a máquina virtual
responsável pela execução das aplicações.
38 Os termos dessa licença podem ser encontrados no endereço http://www.apache.org/licenses/LICENSE-2.0 ,
acessado em 28/10/2010.

40
Figura 27 - Arquitetura do sistema operacional Android (GOOGLE INC., 2010).
Essa plataforma é muito rica em vantagens de utilização. A primeira grande vantagem
está no fato de ser uma plataforma aberta, um dos fatores que têm motivado os fabricantes de
celulares a produzirem aparelhos com o sistema operacional Android. Além disso, segundo a
empresa de consultoria Gartner, ela é a plataforma que mais vêm crescendo em número de
usuários e é previsto que até o final do ano de 2010 seja a segunda plataforma para celular
mais usada no mundo39
. Pode-se citar ainda algumas outras características vantajosas do uso
dessa plataforma, como pode ser listado:
Utilização de uma linguagem de programação amplamente usada no mundo:
Java;
Bom isolamento entre as aplicações;
Facilidade e eficiência na utilização para o desenvolvimento de aplicações
móveis;
Framework e API extremamente ricos;
Variedade de componentes prontos para uso;
Possibilidade de reutilização de aplicações prontas;
Execução de aplicações em paralelo;
39 http://olhardigital.uol.com.br/produtos/mobilidade/android-apresenta-maior-crescimento-entre-plataformas-
moveis/13429

41
Integração das aplicações aos serviços da Google.
5.2 Estudo de Caso
5.2.1. Avant-Propos
É proposto neste tópico um estudo de caso de desenvolvimento de uma aplicação móvel
e ubíqua que faz uso de códigos QR, padrão de código 2D mais notório, para prover
informações de localização e rotas. Este estudo de caso se inspirou na ferramenta GREat
Tour, desenvolvida através de uma linha de produto de software para aplicações móveis e
sensíveis ao contexto (MARINHO, 2010). A plaforma Android foi escolhida para o estudo de
caso, já que é a plataforma que possivelmente se tornará dominante nos dispositivos móveis
nos próximos anos.
A realização deste estudo de caso tem como objetivo primeiro demonstrar como é
possível criar-se aplicações móveis sensíveis ao contexto através do uso de QR Codes. Além
disso, a realização do estudo de caso exige um contato direto com as tecnologias QR Code e
Android, permitindo perceber-se o grau de adequação das tecnologias para o desenvolvimento
de aplicações ubíquas e sensíveis ao contexto.
O estudo de caso aborda o desenvolvimento de uma aplicação de guia móvel, pois essa
aplicação possui requisitos que são comuns em aplicações móveis e sensíveis ao contexto, e.g.
o sensoriamento da localização. O uso de GPS é comum em aplicações desse domínio,
entretanto o uso dessa tecnologia é inadequado para o caso de guias móveis indoor. Nos
ambientes fechados os dispositivos móveis, que possuem restrições de potência na recepção
das ondas emitidas pelos satélites, geralmente não conseguem alinhamento necessário para
fornecer as informações de localização. Outra opção seria a utilização de sensores ou
tecnologias semelhantes para que pudessem detectar a presença do usuário do dispositivo
móvel em um ambiente, fornecendo para o sistema a sua localização. Porém, essa estratégia
envolve o custo da utilização de sensores, que ainda é um pouco alto para esse tipo de
aplicação. A utilização de códigos de barras seria uma outra solução, bem mais viável, para
este problema. O custo de utilização dos códigos de barras é, em geral, baixo e não sofre
nenhum problema se utilizado em ambientes indoor.
No entanto, não são todos os códigos de barras que podem ser usados de forma
adequada nessa solução. Caso fosse usado um tipo de código de barras que possuísse baixa
densidade de dados seria necessária a utilização de um banco de dados e de uma infraestrutura
de rede sem fio. Isso porque com os códigos de baixa densidade seriam armazenados somente

42
as chaves para se chegar à informação completa de localização. Portanto, a proposta de se
utilizar os Códigos QR para armazenar informações de localização permite a construção de
aplicações móveis independentes de infraestrutura de rede sem fio (opcionalmente), com um
baixo custo de implantação e com alto nível de utilidade para os usuários.
5.2.2. Aplicação móvel desenvolvida (DFind)
A proposta de experimento pode ser sintetizada como um sistema para plataforma
Android que através de símbolos QR Code (que armazenam informações de contexto) possa
fornecer informações de localização para os usuários. Na Figura 28 são apresentados os casos
de usos da aplicação desenvolvida como estudo de caso.
Figura 28 - Diagrama de casos de uso da aplicação proposta.
Concretizando a proposta de desenvolvimento foi criada a aplicação DFind – Decode
and Find System – que funciona como um guia móvel para o Campus do Pici da Universidade
Federal do Ceará (UFC40
) e para o prédio do Grupo de Redes de Computadores, Engenharia
40 Página web http://www.ufc.br/portal/ , Acessado em 28/10/2010.

43
de Software e Sistemas (GREat41
). O objetivo da aplicação é ajudar as pessoas que
frequentam o Campus do Pici e o GREat a se locomoverem nesses locais de forma melhor,
provendo informações sobre os locais e rotas para locais próximos de onde o usuários esteja,
fazendo uso de QR code. O DFind foi desenvolvido na plataforma Android e fez uso, via
Intent, da aplicação BarCodeScanner. Esta aplicação foi implementada com a biblioteca
ZXing, para decodificação dos símbolos QR. O reuso desse componente de leitura
proporcionou maior rapidez no desenvolvimento da aplicação.
Para o desenvolvimento foi utilizado como ambiente de programação um computador
desktop com o sistema operacional Ubuntu versão 9.04 e a IDE Eclipse Galileo com o plugin
ADT42
(Android Development Tools) instalado. O dispositivo móvel usado para os testes da
aplicação foi o LG-GW62043
com o sistema operacional Android versão 1.5. Para a
codificação dos símbolos QR Code de testes usou-se o gerador online da própria biblioteca
ZXing44
.
O processo básico da proposta é composto, resumidamente, por apenas quatro passos. O
primeiro passo é a Leitura de um código QR, nesse passo é onde o componente
BarCodeScanner é reusado para capturar através da câmera do dispositivo móvel um código
QR. Em seguida, o passo de decodificação das informações é executado, esse passo ainda é
executado no componente de leitura. O terceiro passo necessário é a extração dos dados
relevantes dos dados brutos que foram decodificados, nesse momento são lidas as
informações seguindo o formato JSON. Por fim, o último passo a ser executado é a exibição
da localização atual e das informações complementares (descrição, detalhes sobre o local,
locais próximos e rotas). A Figura 29 ilustra o processo descrito.
41 Página web http://www.great.ufc.br/ , Acessado em 28/10/2010.
42 Informações sobre o plugin do eclipse podem ser obtidas em http://developer.android.com/sdk/eclipse-adt.html
, acessado em 31/10/2010.
43 Mais informações em http://www.lge.com/br/celular/aparelhos/LG-GW620.jsp , acessado em 31/10/2010.
44 Disponível em http://zxing.appspot.com/generator/ , acessado em 31/10/2010.

44
Figura 29 - Fluxo básico da aplicação DFind.
As principais classes do componente de leitura reusado são apresentadas no diagrama
de classes da Figura 30. Já as classes criadas exclusivamente para a aplicação DFind são
ilustradas no diagrama de classes da Figura 31. Com o auxílio da ferramenta SLOCCount45
,
percebeu-se que para a construção da aplicação foi requerido a escrita de 893 linhas de código
(entre arquivos Java e XML, 68,65% e 31,35% respectivamente), distribuídas em oito Classes
Java e nove arquivos XML. O pequeno número de arquivos criados para a aplicação aponta
para uma ideia da facilidade em se construir a aplicação. Isso é explicável pelo fato de que
boa parte dos requisitos já estavam implementados nas bibliotecas reusadas, i.e. as
funcionalidades de captura e decodificação.
45 Uma ferramenta para contagem de linhas de código de um projeto, que além de apresentar o total de linhas
codificadas faz o cálculo de algumas estatísticas básicas. Disponível em http://www.dwheeler.com/sloccount/ ,
acessado em 31/11/2010.

45
Figura 30 - Diagrama de Classes com as principais classes do componente de leitura.
Figura 31 - Diagrama de Classes com as principais classes da aplicação DFind.

46
A Figura 32 exemplifica um fluxo básico de mensagens para realização do caso de uso
―Ver detalhes sobre o local‖, para proporcionar um melhor entendimento sobre o processo
básico do sistema e o fluxo de mensagens entre os componentes do sistema. No diagrama
apresentado, é possível perceber-se o isolamento das atividades de captura e decodificação,
representados pelas mensagens 1.1.1 e 1.1.2, executados somente no componente ZXing
Barcode Scanner.
Figura 32 - Diagrama de Sequências para um dos fluxos principais da aplicação.
Na Figura 33, é mostrada uma sequencia de telas que ilustra o processo de localização
indoor através do uso de símbolos QR code. Nesta sequência, pode-se observar o uso do
componente usado para leitura de códigos QR, bem como o cumprimento dos requisitos de
exibição de mapas e página web.

47
(a)
(b)
(c)
(d) (e)
Figura 33 – Sequência de telas do DFind capturadas durante o processo de localização indoor. (a)
Usuário captura código, (b,c) é mostrado o mapa e descrição breve do local, (d) o usuário acessa o
menu e seleciona detalhes, (e) é mostrado o conteúdo referente ao local atual.
Na Figura 34, é mostrada uma sequência de telas capturadas durante o processo de
localização outdoor. Nesta sequencia, pode-se observar o cumprimento de outros requisitos,
como a exibição de mapas usando serviços do Google, exibição de locais próximos, exibição
da rota e dos detalhes sobre o destino.

48
(a)
(b)
(c)
(d)
(e)
(f)
Figura 34 - Sequencia de telas do DFind capturadas durante o processo de localização outdoor. (a)
Usuário captura o código QR, (b) é carregado o mapa do local, (c) O usuário acessa o menu de
opções, (d) são mostrados os lugares próximos cadastrados, (e) é mostrado a rota para o destino
selecionado e (f) é possível visualizar detalhes, como foto e mapa, do destino selecioado.
Outra característica de implementação importante é que os dados codificados estão em
um formato JSON46
. Portanto, é possível utilizar sem problemas as ferramentas existentes de
criação de símbolos QR para localização, bastando seguir a estrutura JSON previamente
adotada.
46 Significa JavaScript Object Notation Mais informações estão disponíveis em http://www.json.org/ , acessado
em 28/10/2010.

49
5.3 Conclusão
Percebe-se que o Android é de fato uma plataforma robusta para o desenvolvimento de
aplicações móveis. Além disso, é muito rica em recursos que facilitam o desenvolvimento de
novos tipos de aplicações, garantindo melhor produtividade nesse processo. A realização do
estudo de caso proposto ajuda a delinear algumas possibilidades de uso dessa plataforma e
dos códigos QR. Os requisitos planejados para aplicação DFind, de mobilidade e
sensibilidade ao contexto, puderam ser atendidos através das tecnologias utilizadas.
A utilização de símbolos QR Code realmente trouxe diversas vantagens para a aplicação
de localização móvel, pois não houve a necessidade de utilização de sensores, GPS ou
sistemas de banco de dados para obterem-se as informações de localização. Usando QR Code
foi possível armazenar em um único símbolo impresso todas as informações necessárias para
localizar o usuário, descrição do ambiente, mostrar a lista de locais próximos e as respectivas
rotas. Em parte, confirma-se a suposição de que o padrão QR code é o mais adequado para
utilização em aplicações ubíquas e sensíveis ao contexto, já que se tivessem sido utilizados
outros tipos de códigos não seria possível atender a todos os requisitos de ubiquidade das
informações de localização exigidos na aplicação proposta.

50
CONCLUSÃO
A partir do levantamento bibliográfico deste trabalho, percebe-se que a utilização do
código QR Code está crescendo muito no domínio de aplicações móveis e que constantemente
surgem formas inovadoras desse código. Além disso, essa forma de codificação de
informações mostrou-se adequado para aplicações ubíquas, pois a característica de alta
densidade de dados dos símbolos QR Code permite a criação de aplicações móveis flexíveis e
independentes de uma infraestrutura custosa para sensoriamento de dados e obtenção de
informações relevantes para aplicação.
Neste trabalho, foram apresentados de forma detalhada os tipos de código de barras
existentes mais usados e as ferramentas disponíveis para criação de aplicações que usam QR
code. Foi explicado como é possível o uso dessa tecnologia em dispositivos móveis. Além
disso, foi realizada uma discussão entre o uso dos códigos de barra e os conceitos de
ubiquidade. Com essa discussão conclui-se que o uso dos códigos de barra, por si somente,
não pode em unanimidade ser definido como um sistema ubíquo, mas que a sua utilização
ajuda a construir sistemas e aplicações deste tipo. O principal benefício da utilização dessa
tecnologia em aplicações ubíquas seria a redução do custo de sensoriamento de informações
ou de obtenção de informações de contexto.
O estudo de caso realizado permitiu comprovar as características de alta densidade de
dados, rapidez na leitura e leitura independente de orientação (ou seja, em 360º), descritas
como vantagens do QR Code. Foi possível codificar em um único símbolo QR informações
de localização acrescidas de dados de locais próximos, rotas para essas localizações e uma
descrição do local atual. A quantidade de informações contidas em cada símbolo usados no
estudo de caso só foi possível por conta da alta densidade de dados do QR Code. Outra
observação importante sobre esse estudo foi a rapidez na leitura e decodificação dos símbolos
lidos pelos dispositivos móveis. Comprovou-se também a flexibilidade quanto à posição para
leitura do código, pois uma vez enquadrado no raio de captura da câmera do dispositivo
móvel a leitura e decodificação ocorriam sem problemas. No estudo de caso realizado,

51
utilizou-se o acesso a internet através de uma rede infraestruturada para acessar os mapas
outdoor, enriquecendo a aplicação com os mapas disponibilizados através do serviço Google
Maps. Entretanto, caso não fosse possível o acesso à internet os requisitos de localização
ainda seriam cumpridos, pois todas as informações necessárias para guiar o usuário estão
contidas nos símbolos QR Code.
No futuro, como extensão deste trabalho, pode ser realizado o desenvolvimento de
uma aplicação ubíqua, móvel e sensível ao contexto (através do uso de QR code) que permita
a criação de guias móveis personalizáveis. Além disso, se pensa em criar componentes
reusáveis, baseados no que já foi desenvolvido no estudo de caso, para serem integrados a
Linha de Produtos de Software MobiLine47
. Outra extensão deste trabalho pode ser a
utilização das tecnologias de QR Code e da plataforma Android nas aplicações de M-Learning
desenvolvidas pelo GREat.
47 O objetivo do MobiLine é investigar as características particulares existentes no desenvolvimento de software
móvel sensível ao contexto para a construção de uma linha de produtos para este domínio. Em especial, o projeto
considera como foco para o aumento da produtividade e qualidade no desenvolvimento desse tipo de software, a
aplicação de técnicas que possibilitem uma reutilização de forma sistemática. Este projeto, financiado pelo
CNPQ, foi uma parceria do grupo GREat, coordenado pela professora Rossana Andrade, com a equipe
coordenada pela professora Cláudia Werner da UFRJ.

52
REFERÊNCIAS BIBLIOGRÁFICAS
AL-KHALIFA, H. S. Utilizing QR Code and Mobile Phones for Blinds and Visually
Impaired People. Proceedings of the 11th international conference on Computers Helping
People with Special Needs, Linz, Austria, 2008. 1065-1069.
ASSOCIAÇÃO COMERCIAL DE PEDREIRA - ACEP. CMC7. Site da Associação
Comercial de Pedreira - ACEP. Disponivel em:
<http://www.acepedreira.com.br/cmc7.html>. Acesso em: 18 out. 2010.
BLOOMBERG L.P. Google Buys Android for Its Mobile Arsenal. Bloomberg
Businessweek, 2005. Disponivel em:
<http://www.businessweek.com/technology/content/aug2005/tc20050817_0949_tc024.htm>.
Acesso em: 28 out. 2010.
BARBOSA NETO, G. E; CAMPOS, A. A. S. Mobile Payment - Estudo comparativo entre
tecnologias de transações eletrônicas via dispositivos móveis. 2008. 93 f. Monografia
(Graduação) - Curso de Bacharelado em Informática, Departamento de Computação,
Universidade Católica do Salvador, Salvador, 2008. Disponível em:
<http://info.ucsal.br/banmon/Arquivos/Mono_040609.pdf>. Acesso em: 14 out. 2009.
CHU, Y.-L.; LIU, T.-Y. Handheld Computer Supported Context-aware learning with 2D
Barcodes. Seventh IEEE International Conference on Advanced Learning Technologies
(ICALT 2007), 2007. 485-486.
CONDE-LAGOA, D. et al. Secure eTickets based on QR-Codes with user-encrypted content.
International Conference on Consumer Electronics (ICCE), 2010. 257-258.
DENSO WAVE INC. QR Code Patent FAQ. Site da Denso Wave inc. Disponivel em:
<http://www.denso-wave.com/qrcode/faqpatent-e.html>. Acesso em: 20 out. 2010.
DENSO WAVE INC. QR Code Standardization. Site da Denso Wave inc. Disponivel em:
<http://www.denso-wave.com/qrcode/qrstandard-e.html>. Acesso em: 20 out. 2010.
DEY, A.; ABOWD, G. Towards a better understanding of context and context-awareness.
Proceedings of the 1st International Symposium on Handheld and Ubiquitous
Computing, Londres, Inglaterra, 2000. p.304-307.

53
EBLING, M.; CÁCERES, R. Bar Codes Everywhere You Look. IEEE Pervasive
Computing, v. 9, n. 2, p. 4-5, junho 2010.
FANG et al. Automatic Recognition of Noisy Code-39 Barcode. 16th International
Conference on Artificial Reality and Telexistence - Workshops (ICAT’06), novembro
2006. 79-82. doi:10.1109/ICAT.2006.45.
GOOGLE INC. Android Developers. Página Web Android Developers, 2010. Disponivel
em: <http://developer.android.com/>. Acesso em: 19 Abril 2010.
GOOGLE INC. What is Android? Android developers, 2010. Disponivel em:
<http://developer.android.com/guide/basics/what-is-android.html>. Acesso em: 28
out.FEBRABAN (FEDERAÇÃO BRASILEIRA DE BANCOS) (Brasil). “Layout” Padrão
de Arrecadação/Recebimento com Utilização do Código de Barras. Disponível
em:<http://www.febraban.org.br/p5a_52gt34++5cv8_4466+ff145afbb52ffrtg33fe36455li5411
pp+e/sitefebraban/Codbar4-v28052004.pdf>. Acesso em: 15 out. 2010.
HEE IL, H.; JOUNG KOO, J. Implementation of algorithm to decode two-dimensional
barcode PDF-417. 6th International Conference on Signal Processing, Vol.2, 2002. p.
1791-1794. DOI 10.1109/ICOSP.2002.1180150.
HUANG, Y.-P.; CHANG, Y.-T.; SANDNES, F. E. QR Code Data Type Encoding for
Ubiquitous Information Transfer Across Different Platforms. 2009 Symposia and
Workshops on Ubiquitous, Autonomic and Trusted Computing, 2009. 292-297. DOI:
10.1109/TMM.2008.917353.
IEEE. The 2D data matrix barcode. Computing & Control Engineering Journal, v. 16, n. 6,
p. 39, 2005. doi:10.1049/ccej:20050609.
INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC
15417:2007. Página Web da International Organization for Standardization. Disponivel
em:
<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43896>.
Acesso em: 18 out. 2010.
INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC
15438:2006. Página Web da International Organization for Standardization. Disponivel
em:
<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43816>.
Acesso em: 19 out. 2010.

54
INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC
16388:2007. Página Web da International Organization for Standardization. Disponivel
em:
<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43897>.
Acesso em: 18 out. 2010.
INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC
18004:2006. Página Web da International Organization for Standardization. Disponivel
em:
<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43655>.
Acesso em: 20 out. 2010.
KATO, H.; TAN, K. T. Pervasive 2D Barcodes for Camera Phone Applications. IEEE
Pervasive Computing, v. 6, n. 4, p. 76-85, dezembro 2007. DOI:
10.1109/TMM.2008.917353.
LIU, S. Anti-counterfeit System Based on Mobile Phone QR Code and Fingerprint. Second
International Conference on Intelligent Human-Machine Systems and Cybernetics,
Wuhan, China, 2010. p.236-240.
LIU, Y.; YANG, J.; LIU, M. Recognition of QR Code with Mobile Phones. Control and
Decision Conference, p. 2008-2011, 2008.
LIU, X.; DOERMANN, D.; LI, H. VCode—Pervasive Data Transfer Using Video Barcode.
IEEE Transactions on Multimedia, v. 10, n. 3, p. 361-371, abril 2008. DOI:
10.1109/TMM.2008.917353.
LIU, Y.; LIU, M. Automatic Recognition Algorithm of Quick Response Code Based on
Encoding of QR Code. International Conference on Inteligent Systems Design and
Applications (ISDA), 2006. p.783-788.
MARINHO, F. G. et al. An Architecture Proposal for Nested Software Product Lines in the
Domain of Mobile and Context-Aware Applications. Software Components, Architectures
And Reuse (SBCARS), Salvador, p. 51-60. 2010.
MEASUREMENT EQUIPMENT CORPORATION. Different Types of Barcodes.
makebarcode.com. Disponivel em: <http://www.makebarcode.com/specs/speclist.html>.
Acesso em: 14 out. 2010.

55
OPEN HANDSET ALLIANCE. Industry Leaders Announce Open Platform for Mobile
Devices. Página da Open Handset Alliance, 2007. Disponivel em:
<http://www.openhandsetalliance.com/press_110507.html>. Acesso em: 28 out. 2010.
PEAR GROUP. What is PEAR? Pagina do PEAR, 2010. Disponivel em:
<http://pear.php.net/manual/en/about.pear.php>. Acesso em: 28 out. 2010.
QUADROS, D. Código de Barras - Código 39. Página pessoal, 27 fev. 2008. Disponivel em:
<http://dqsoft.blogspot.com/2008/02/cdigo-de-barras-cdigo-39.html>. Acesso em: 18 out.
2010.
ROCHA, Lincoln Souza. AdaptiveRME e AspectCompose: Um Middleware Adaptativo e um
Processo de Composição Orientado a Aspectos para o Desenvolvimento de Software móvel e
Ubíquo. 2007. Dissertação (Mestrado em Mestrado em Ciência da Computação) -
Universidade Federal do Ceará. Fortaleza. Disponível em:
<http://great.ufc.br/~lincoln/file/LincolnMScThesis.pdf>. Acesso em: 25 out. 2010.
ROUILLARD, J.; LAROUSSI, M. PerZoovasive: contextual pervasive QR codes as tool to
provide an adaptive learning support. Proceedings of the 5th international conference on
Soft computing as transdisciplinary science and technology, Cergy-Pontoise, França,
2008. p.542-548.
STREITZ, N.; NIXON, P. The Disappearing Computer. Communication of the ACM, v. 48,
n. 3, p. 32-35, 2005.
UNIFORM CODE COUNCIL - GS1 US. Numbers in the History of the Universal Product
Code (U.P.C.). Site Institucional da GS1 US. Disponivel em:
<http://www.gs1us.org/about_us/numbers_in_the_upc>. Acesso em: 14 out. 2010.
UNIFORM CODE COUNCIL - GS1 US. The Universal Product Code. Site Institucional da
GS1 US. Disponivel em:
<http://www.gs1us.org/about_us/history/the_universal_product_code>. Acesso em: 14 out.
2010.
VIANA, W. et al. Towards the semantic and context-aware management of mobile
multimedia. Multimedia Tools and Applications, 2010. p.1-39. DOI: 10.1007/s11042-010-
0502-6.
VIANA, W.; ANDRADE, R. Uma proposta para a geração semi-automática de aplicações
adaptativas para dispositivos móveis. Simpósio Brasileiro de Engenharia de Software,
Florianópolis, SC, Brasil, 2006.

56
VICENTINI, C. F. et al. Emprego de Código de Barras Bidimensionais para Conferência da
Autenticidade de Certificados Digitais. VI Simpósio de Informática da Região Centro/RS,
Santa Maria - RS, Brasil, 2007.
WEISER, M. The Computer for the 21st Century. Scientific American, v. 265, n. 3, p. 94-
104, fev. 1991.
WOODLAND, N. J.; SILVER, B. Classifying apparatus and method. US2612994, 07
Outubro 1952.
YANBE, Y. Open Source QR Code Library. Página do projeto Open Source QR Code
Library, 2010. Disponivel em: <http://qrcode.sourceforge.jp/>. Acesso em: 27 out. 2010.
YU, G. et al. An application and implementation of two-dimensional symbols for circuit
board quality control system. 2nd IEEE International Conference on Industrial
Informatics, Berlin, junho 2004. 397-402. DOI: 10.1109/INDIN.2004.1417368.